一、Hive安裝地址
- 官網地址:http://hive.apache.org/
- 文檔查看地址:https://cwiki.apache.org/confluence/display/Hive/GettingStarted
- github地址:https://github.com/apache/hive
- 下載地址:http://archive.apache.org/dist/hive/
二、部署安裝
- 把下載的apache-hive-3.1.2-bin.tar.gz 上傳到linux的/opt/software目錄下
- 解壓apache-hive-3.1.2-bin.tar.gz到/opt/module/目錄下面
$ tar -zxvf /opt/software/apache-hive-3.1.2-bin.tar.gz -C /opt/module/
#修改hive名字
$ mv apache-hive-3.1.2-bin hive - 修改 /etc/profile環境變量
$ sudo vim /etc/profile #添加內容 #HIVE_HOME export HIVE_HOME=/opt/module/hive export PATH=$PATH:$HIVE_HOME/bin
#更新環境變量
$ sudo source /etc/profile - 解決Jar包沖突
#hadoop中已經有了log4j $ mv /opt/module/hive/lib/log4j-slf4j-impl-2.10.0.jar /opt/module/hive/lib/log4j-slf4j-impl-2.10.0.jar.bak
以及guava-19.0.jar包的沖突,通過 find命令可以查看與hadoop的包沖突
需要移除hive中的guava-19.0.jar包並將hadoop中的guava-27-jre.0.jar包復制到hive中
$ mv /opt/module/hive/lib/guava-19.0.jar /opt/module/hive/lib/guava-19.0.jar.bak $ cp /opt/module/hadoop-3.2.2/share/hadoop/common/lib/guava-27.0-jre.jar /opt/module/hive/lib/
- 初始化元數據庫
$ $HIVE_HOME/bin/schematool -dbType derby -initSchema
測試hive,輸入以下內容會報異常
hive> show databases;
原因:
Hive默認使用的元數據庫為derby,開啟Hive之后就會占用元數據庫,且不與其他客戶端共享數據,所以我們需要將Hive的元數據地址改為MySQL。
解決辦法:
下載安裝mysql:在Linux中安裝mysql5.7 - 干了這瓶老干媽 - 博客園 (cnblogs.com)
三、Hive元數據配置到MySQL
3.1 下載並拷貝mysql驅動
下載mysql-connector-java-5.1.37.jar並上傳到 /opt/software目錄下,將MySQL的JDBC驅動拷貝到Hive的lib目錄下
$ cp /opt/software/mysql-connector-java-5.1.37.jar $HIVE_HOME/lib
3.2 在$HIVE_HOME/conf目錄下新建hive-site.xml文件
$ vim $HIVE_HOME/conf/hive-site.xml
添加以下內容:
<?xml version="1.0"?> <?xml-stylesheet type="text/xsl" href="configuration.xsl"?> <configuration> <!-- jdbc連接的URL --> <property> <name>javax.jdo.option.ConnectionURL</name> <value>jdbc:mysql://hadoop102:3306/metastore?useSSL=false</value> </property> <!-- jdbc連接的Driver--> <property> <name>javax.jdo.option.ConnectionDriverName</name> <value>com.mysql.jdbc.Driver</value> </property> <!-- jdbc連接的username--> <property> <name>javax.jdo.option.ConnectionUserName</name> <value>root</value> </property> <!-- jdbc連接的password --> <property> <name>javax.jdo.option.ConnectionPassword</name> <value>123456</value> </property> <!-- Hive元數據存儲版本的驗證 --> <property> <name>hive.metastore.schema.verification</name> <value>false</value> </property> <!--元數據存儲授權--> <property> <name>hive.metastore.event.db.notification.api.auth</name> <value>false</value> </property> <!-- Hive默認在HDFS的工作目錄 --> <property> <name>hive.metastore.warehouse.dir</name> <value>/user/hive/warehouse</value> </property> </configuration>
3.3 登錄Mysql並新建Hive的元數據庫
$ mysql -uroot -p123456 mysql> create database metastore; mysql> quit;
3.4 初始化Hive數據庫
$ schematool -initSchema -dbType mysql -verbose
3.5 再次啟動Hive並測試
$ $HIVE_HOME/bin/hive
hive> show databases; hive> show tables; hive> create table test (id int); hive> insert into test values(1); hive> select id form test;
四、配置Hive的訪問方式
以上內容我們配置好了hive,但是只能在我們的主機能訪問,其他人的都不行,所以我們這里需要配置Hive的訪問方式,並且知道有幾種訪問hive的方式。
4.1 使用 元數據服務的方式 訪問Hive
- 在hive-site.xml文件中添加如下配置信息
<!-- 指定存儲元數據要連接的地址 --> <property> <name>hive.metastore.uris</name> <value>thrift://node01:9083</value> </property>
- 啟動metastore
$ hive --service metastore 2022-01-23 17:09:32: Starting Hive Metastore Server #注意: 啟動后窗口不能再操作,需打開一個新的shell窗口做別的操作
- 啟動Hive(另外打開一個窗口)
$ bin/hive
4.2 使用 JDBC的方式 訪問Hive(推薦方式)
注意,通過JDBC訪問hive,是需要提前配置好第一種訪問方式,即:元數據服務訪問Hive 。JDBC的方式是通過server2訪問元數據服務。
- 在hive-site.xml文件中添加如下配置信息
#將以下部分加入到hive-site.xml文件中
# thrift:Hive擁有HiveServer (Thrift)或者Hiveserver2組件,提供了JDBC驅動服務,
#使得我們可以用Java代碼或者Python來連接Hive並進行一些關系型數據庫的sql語句查詢等操作。
<!-- 指定hiveserver2連接的host --> <property> <name>hive.server2.thrift.bind.host</name> <value>node01</value> </property> <!-- 指定 hiveserver2 連接的端口號 --> <property> <name>hive.server2.thrift.port</name> <value>10000</value> </property> - 啟動hiveserver2
#建議使用命令 $ /bin/hive --service hiveserver2 #也可以用 $ hiveserver2 //該命令需要校驗兩次,啟動較慢
注意:啟動hiveserver2前,要先啟動 metastore(見第一種方式)
- 啟動beeline客戶端(需要多等待一會)
$ beeline -u jdbc:hive2://node01:10000 -n user
- (啟動成功)看到如下界面
Connecting to jdbc:hive2://node01:10000 Connected to: Apache Hive (version 3.1.2) Driver: Hive JDBC (version 3.1.2) Transaction isolation: TRANSACTION_REPEATABLE_READ Beeline version 3.1.2 by Apache Hive 0: jdbc:hive2://node01:10000>