Hive部署及兩種啟動方式
- 2019 年 10 月 6 日
- 筆記
Hive部署及兩種啟動方式
0.導論
Hive是什麼?
Facebook解決海量日誌數據的分析而開發了Hive,後來開源給了Apache軟體基金會。
The Apache Hive ™ data warehouse software facilitates reading, writing, and managing large datasets residing in distributed storage using SQL.
Hive是一種用類SQL語句來協助讀寫、管理那些存儲在分散式存儲系統上大數據集的數據倉庫軟體。
Hive特點?
最大特點:可避免寫MapReduce程式分析數據,直接可以通過類SQL來分析。
Hive是將數據映射成資料庫和一張張的表,庫和表的元數據資訊一般存在關係型資料庫上(比如MySQL)。
數據存儲方面:存儲很大的數據集,數據完整性、格式要求並不嚴格。
數據處理方面:Hive語句會生成MapReduce任務去計算,故不適用於實時計算的場景,它適用於離線分析。
Hive安裝?
這裡我使用MySQL作為Hive的元資料庫,所以大家需要有個MySQL資料庫。
關於MySQL安裝就不贅述了,Hive安裝如下:
https://mirrors.cnnic.cn/apache/hive/hive-3.1.1/
下載上述的Hive,解壓縮後,修改配置文件:hive-site.xml
。
按照下面配置即可(只需要修改下面相關的配置)。
<configuration> <property> <name>javax.jdo.option.ConnectionURL</name> <value>jdbc:mysql://city:3306/hive?createDatabaseIfNotExist=true&useSSL=false</value> <description> JDBC connect string for a JDBC metastore. To use SSL to encrypt/authenticate the connection, provide database-specific SSL flag in the connection URL. For example, jdbc:postgresql://myhost/db?ssl=true for postgres database. </description> </property> <property> <name>javax.jdo.option.ConnectionDriverName</name> <value>com.mysql.jdbc.Driver</value> <description>Driver class name for a JDBC metastore</description> </property> <property> <name>javax.jdo.option.ConnectionUserName</name> <value>root</value> <description>username to use against metastore database</description> </property> <property> <name>javax.jdo.option.ConnectionPassword</name> <value>root</value> <description>password to use against metastore database</description> </property> <property> <name>hive.metastore.warehouse.dir</name> <value>/hive/warehouse</value> <description>hive default warehouse, if nessecory, change it</description> </property> </configuration>
配置環境變數
vi ~/.bashrc #Hive export HIVE_HOME=/usr/local/hive export PATH=$PATH:$HIVE_HOME/bin
生效
source ~/.bashrc
初始化元資料庫
schematool -dbType mysql -initSchema
1.CLI連接
直接輸入:
./hive/bin/hive
或者輸入:
2.HiveServer2/beeline
這種方式需要配置一些文件,有點複雜,並且容易出問題,下面一起來看。
對於這個啟動需要修改hadoop文件夾下的hdfs-site.xml
與core-site.xml
文件。
2.1 修改hdfs-site.xml配置文件
打開這個配置文件,並加入下面內容!
<property> <name>dfs.webhdfs.enabled</name> <value>true</value> </property>
2.2 修改core-site.xml配置文件
下面加入兩條配置資訊,來設置hadoop的代理用戶!
hadoop.proxyuser.hadoop.hosts
配置成*的意義,表示任意節點使用 hadoop 集群的代理用戶 hadoop 都能訪問 hdfs 集群。
hadoop.proxyuser.hadoop.groups
表示代理用戶的所屬組。
<property> <name>hadoop.proxyuser.hadoop.hosts</name> <value>*</value> </property> <property> <name>hadoop.proxyuser.hadoop.groups</name> <value>*</value> </property>
首先啟動hiveserver2
:
輸入:hiveserver2

緊接著輸入:
beeline -u jdbc:hive2://localhost:10000 -n hadoop
-n表示指定的用戶名。如果沒有許可權,會提示輸入密碼之類的。

輸入密碼後,發現連接不上(ps:如果你沒有問題,那就直接跳過下面這個問題解決辦法),針對此問題如下解決辦法:
進入hive的conf目錄,找到doAs配置,改為false即可!

再次輸入:
beeline -u jdbc:hive2://localhost:10000 -n hadoop
驗證是否連接成功:
show databases
成功後,會看到至少一個default資料庫名,這樣就成功了!

除了上述方法之外,還可以直接先進入beeline
,再對資料庫進行連接。
如下圖所示:

至此,資料庫連接就完成了。