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如下
在这里插入图片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章