欢迎投稿

今日深度:

Hive 环境搭建,

Hive 环境搭建,


Hive搭建模式

远程服务器模式

版本说明:hadoop2.6.5
解释远程?谁1远程谁2?谁1是metastore,谁2是Mysql Server。
用于非Java客户端访问元数据库Mysql:在hive服务器端启动
MetaStoreServer,hive client客户端利用Thrift协议通过MetaStoreServer访问元数据库,模型示意图如下:

我这里以node01作为元数据,node02作为hive服务端,node03作为hive客户端。

step1 node01:MysqlServer

以node01作为Mysql Server节点。先安装好 mysql ,参考 https://blog.csdn.net/foreverlove_ty/article/details/86419254

step2 node02:MetaStore Server ,连接 Mysql

源码包: apache-hive-1.2.1-bin.tar.gz
驱动包 : mysql-connector-java-5.1.32-bin.jar
解压 源码包,得到 bin ,lib ,conf三个重要文件
配置hive
将驱动包拷贝到 apache-hive-1.2.1-bin/lib/目录下
添加环境变量

export HIVE_HOME=/opt/software/hive/apache-hive-1.2.1-bin

修改hive的配置文件

#cp hive-default.xml.template hive-site.xml

然后修改 hive-site.xml文件
配置文件中添加 driver ,url,host ,password 属性,其他属性删除
meteStore配置官网
https://cwiki.apache.org/confluence/display/Hive/AdminManual+Metastore+Administration
可以找到 Remote Metastore Database的配置(这个网址藏得好深)

<configuration>
<property>
  <name>hive.metastore.warehouse.dir</name>
  <value>/user/hive/warehouse</value>
</property>
<property>
  <name>javax.jdo.option.ConnectionURL</name>
  <value>jdbc:mysql://node01:3306/hive?createDatabaseIfNotExist=true</value>
</property>
<property>
  <name>javax.jdo.option.ConnectionDriverName</name>
  <value>com.mysql.jdbc.Driver</value>
</property>
<property>
  <name>javax.jdo.option.ConnectionUserName</name>
  <value>root</value>
</property>
<property>
  <name>javax.jdo.option.ConnectionPassword</name>
  <value>123</value>
</property>
</configuration>

其中 warehouse 是数据仓库;jdbc会创建一个hive的数据库

step3:node03:Hive Client

源码包: apache-hive-1.2.1-bin.tar.gz
此时驱动包不用拷贝到hive的lib目录下,因为不用直接连接mysql,
同step2 配置Hive环境变量,再得到一个hive-site.xml文件,再修改此配置文件如下

<configuration>
<property>
  <name>hive.metastore.warehouse.dir</name>
  <value>/user/hive/warehouse</value>
</property>
<property>
  <name>hive.metastore.uris</name>
  <value>thrift://node02:9083</value>
</property>
</configuration>

其中,配置客户端连接metastore即可,node02就是metastoreServer。

step4:启动hive

【注意】:hive依赖hadoop的底层服务,所以先启动zk,hdfs,yarn等服务。为了避免不必要的报错,这些都提前启动起来。至于hive如何与hdfs,yarn连接的,可以看到官网中有说明,hive通过defaultValue中的环境变量$HADOOP_HOME 自动找到了hadoop集群。

具体可以参考
https://cwiki.apache.org/confluence/display/Hive/AdminManual+Configuration

启动hive的服务端 node02
[root@node02 conf]hive --service metastore
启动hive的客户端 node03
[root@node03 bin]# ./hive

如果启动过程中有如下报错

java.lang.IncompatibleClassChangeError: Found class jline.Terminal, but interface was expecte

没有找到jline的包,查看到hive中有此包,但是版本较低,从hadoop目录中找到jline的包,且版本较高,所以用hadoop的包替换hive中的。参考 https://blog.csdn.net/shuxue051/article/details/44900271
一切OK了之后,即可使用hive了,就能出现下面

[root@node03 bin]# ./hive
Logging initialized using configuration in jar:file:/opt/software/hive/apache-hive-1.2.1-bin/lib/hive-common-1.2.1.jar!/hive-log4j.properties
hive> 

创建表后,插入数据,可以使用hdfs看到warehouse如下

hiveserver2

启动hiveserver2命令,即可启动hive服务端,此方式用于生产环境,代替hive --service metastore
注:node02 作为hvie服务端,node03作为hive客户端
[root@node02 bin]# ./apache-hive-1.2.1-bin/bin/hiveserver2

[root@node03 bin]# ls
beeline  derby.log  ext  hive  hive-config.sh  hiveserver2  metastore_db  metatool  schematool  zookeeper.out
[root@node03 bin]# ./beeline 
Beeline version 1.2.1 by Apache Hive
beeline> !connect jdbc:hive2://node02:10000/default; root 123
Connecting to jdbc:hive2://node02:10000/default;
Connected to: Apache Hive (version 1.2.1)
Driver: Hive JDBC (version 1.2.1)
Transaction isolation: TRANSACTION_REPEATABLE_READ
0: jdbc:hive2://node02:10000/default> show tables;

其中 !connect jdbc:hive2://node02:10000/default; root 123
的连接方式有多种,

www.htsjk.Com true http://www.htsjk.com/hive/41336.html NewsArticle Hive 环境搭建, Hive搭建模式 远程服务器模式 版本说明:hadoop2.6.5 解释远程?谁1远程谁2?谁1是metastore,谁2是Mysql Server。 用于非Java客户端访问元数据库Mysql:在hive服务器端启动 MetaSto...
相关文章
    暂无相关文章
评论暂时关闭