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如下
在這裏插入圖片描述

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