今天要介紹 Hadoop Ecosystem 中火力威猛的Data Warehouse工具 - Apache Hive 的安裝教學。
前面有提到Apache Hive主要是透過對儲存在HDFS上的結構化資料定義Schema後,以SQL佐以Schema來查詢”檔案“。 而Apache Hive 的 Schema需要某個儲存裝置來存放這些資料,通常是使用RDB,如果沒有任何的RDB service也可以使用Hive內建的 embedded DB(Derby)。
事前準備
- 安裝Java
- 建議使用Java 1.8以上。基本上Hive 1.2之後的版本只支援Java 1.7以上的版本。
- 一個Hadoop叢集,版本至少要2.x以上。
- 如果有根據前面的教學安裝,現在應該會有一個 Hadoop 2.7.3 的叢集可以使用。
- Mysql(非必要)。
Hive安裝教學
下載Hive 編譯好的檔案,可由Hive官方的連結下載。本篇教學會使用1.2.2版本。 下載完畢使用下面指令進行解壓縮:
tar -xzvf apache-hive-1.2.2-bin.tar.gz
解壓縮完畢後,編輯~/.bashrc
設定HIVE_HOME環境變數。
export HIVE_HOME=/path/to/your/hive
export PATH=$HIVE_HOME/bin:$PATH
設定hive-site.xml
檔案:
<configuration>
<property>
<name>fs.default.name</name>
<value>hdfs://{hostname}:9000</value>
<description>For YARN this configuration variable is called fs.defaultFS.</description>
</property>
</configuration>
備註:{hostname}
為主機名稱,請依照自己的Hadoop Namenode所在的hostname修改。
設定完畢後,就可以啟動Hive CLI來與HDFS互動囉!
hive
Metastore 設定
前面有介紹Hive可以將Schema儲存在RDB上,假設我們有一個mysql db,只要在hive-site.xml
增加連線資訊的設定,就可以讓Schema儲存到我們指定的RDB內了,但必須先在mysql內建立Hive metastore的RDB schema,可以使用Hive內建script來建立:
#使用root角色匯入schema,如果沒有root角色權限,請使用有權限之使用者。
mysql -uroot -e "CREATE DATABASE IF NOT EXISTS metastore_db"
cd ${HIVE_HOME}/scripts/metastore/upgrade/mysql
mysql -u root metastore_db<hive-schema-1.2.0.mysql.sql
匯入完畢,接著增加下列設定到hive-site.xml
:
<property>
<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:mysql://{hostname}/metastore_db</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>123456</value>
</property>
備註:{hostname}
為主機名稱,請依照自己的mysql所在的hostname修改。
接下來要到mysql官方網站下載mysql JDBC connector
好的!這樣就設定完成了!Hive CLI僅提供單機運作,如果想以server形式透過JDBC讓多人同時連線進來操作,可以透過啟動hiveserver2
service讓多人同時連線操作。
#啟動hiveserver2
hive --service hiveserver2