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&amp;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.xmlcore-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,再對資料庫進行連接。

如下圖所示:

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