hadoop之旅7-centerOS7 : Hive環境搭建

爾以發表於2018-10-30

之前的文章帶大家一起從hadoop最開始的搭建,到最終寫一個MapReduce結尾,相信大家也基本瞭解什麼是hadoop。當然了現如今的開發,基本少很少有人寫MapReduce,因為寫起來太麻煩了,又是map,又是reduce,還要寫執行的客戶端。程式猿們太喜歡偷懶了,所以hive就出現了

Hive

Hive是一個資料倉儲基礎工具在Hadoop中用來處理結構化資料。它架構在Hadoop之上,總歸為大資料,並使得查詢和分析方便。並提供簡單的sql查詢功能,可以將sql語句轉換為MapReduce任務進行執行.

是的,你沒有看錯,hive就是把sql語句轉換為我們MapReduce任務的,所以做hive開發完全可以不懂程式設計,只需要會寫sql語句就可以了。

貼一張hive的結構圖,大家可以體會以下

hadoop之旅7-centerOS7 : Hive環境搭建

注意

Hive不是為線上事務處理而設計。它最適合用於傳統的資料倉儲任務

接下來就帶大家在CenterOS7上搭建一下Hive環境

Hive安裝有三種模式

嵌入模式:

元熟悉資訊被儲存在Hive自帶的Derby資料庫中

只允許建立一個連線

多用於Demo

本地模式:

後設資料資訊被儲存在MySQL資料庫中

MySQL資料庫與Hive執行在同一臺物理機器上

多用於開發和測試

遠端模式:

Hive與Mysql安裝在不同的作業系統上

在這裡就給搭建演示本地模式安裝,後設資料存在mysql中

第一步

  1. 準備Hive-2.3.3工具包:點選下載
  2. 放入linux自己目錄下,通過tar -zxvf xxxxx命令解壓,然後通過以下命令建立一個臨時目錄mkdir hive_tmpdir為後面配置做準備

第二步

  1. 進入conf目錄,複製hive-default.xml.templatehive-site.xml檔案
cp hive-default.xml.template hive-site.xml
複製程式碼
  1. 配置hive-site.xml檔案

將所有的${system:java.io.tmpdir}替換為第一步建立的臨時目錄hive_tmpdir 如果後面還接的有類似這樣引用的變數${},可以直接刪除

如:
<property>
    <name>hive.exec.local.scratchdir</name>
    #<value>${system:java.io.tmpdir}/${system:user.name}</value>
    <value>/home/mmcc/hive_tmpdir</value>
  </property>
 ...
複製程式碼

然後將hive.metastore.schema.verification的值設定為false,取消metastore驗證, 再將datanucleus.schema.autoCreateTables設定為true,自動在資料庫裡建表。 其次配置我們的mysql資料庫,關於mysql的安裝大家可以自行研究。 依然是在hive-site.xml

<property>
  <name>javax.jdo.option.ConnectionURL</name>  #資料庫連結
  <value>jdbc:mysql://localhost:3306/hive?createDatabaseIfNotExist=true</value>
  <description>JDBC connect string for a JDBC metastore</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>123456</value>  #資料庫密碼
  <description>password to use against metastore database</description>
</property>
複製程式碼

配置好hive-site.xml之後儲存退出。

第三步

  1. 將mysql的驅動包放入hive的lib目錄下,mysql-5.1.25驅動下載
  2. 去掉hive裡的sl4j的jar包,可能會和hadoop裡的衝突(保留log4j-api和log4j-core和log4j-web)

第四步

到這裡關於準備配置及一些準備工作就已經完成了,接下來就可以正式進行啟動的流程了。首先關閉hadoop的安全模式,避免出現不必要的錯誤,執行命令hdfs dfsadmin -safemode leave,然後執行以下命令進行啟動。

#啟動hive的metastore服務
[root@master bin]# ./hive --service metastore &
#初始化後設資料為mysql資料庫(只有第一次需要),這一步完成後,在mysql裡其實就會生成hive表
[root@master bin]# ./schematool -dbType mysql -initSchema #
#接下來可以直接執行hive了
[root@master bin]# ./hive
複製程式碼

然後我們就進入到了hive的命令列模式,就可以做hive的執行操作了。

相關文章