使用MapReduce之替代方案Hive

若要操作Hadoop就必須要會MapReduce,很好!!在Hadoop很夯之前相信很多人都對MapReduce非常陌生,沒錯!!那真的是有點困難,但是呢,若我講SQL語言,相信你一定信心十足吧!!

因此囉,Facebook當初也了這個問題傷透了腦筋,因為要找一個熟悉MapReduce的工程師比找一個會SQL語法的工程師還困難的情況底下,他們想出了應變之道,那就是用極接近SQL語言的方式去操作MapReduce,因為找到會SQL語言的人較容易。

所以Hive就是為此誕生的,這是Facebook一個部門的研發成果,後來為了讓更多人可以應用,他們將其釋出提供給Apache當作開源項目,讓Hive開始發揚光大,更多的介紹官網都有唷。

若你看不順眼Hive,你也可以選擇其他的諸如PIG(我不是在罵人...真的叫PIG),或是你真的想挑戰MapReduce當然也可以,任君挑選。因為我喜歡Hive的Logo所以囉,我就選他了。

建立Hive

從官網下載或是

$ cd /opt
$ wget 'http://ftp.stut.edu.tw/var/ftp/pub/OpenSource/apache//hive/hive-0.7.1/hive-0.7.1.tar.gz'
$ mv hive-0.7.1 /opt/hive

安裝ivy

$ cd /tmp
$ wget 'http://www.apache.org/dist/ant/ivy/2.3.0/apache-ivy-2.3.0-bin-with-deps.tar.gz'
$ tar zxvf apache-ivy-2.3.0-bin-with-deps.tar.gz
$ mv apache-ivy-2.3.0 /usr/local
$ ln -s apache-ivy-2.3.0 ivy

配置環境

$ vim ~/.bashrc
export HIVE_HOME=/opt/hive
export IVY_HOME=/usr/local/ivy
export PATH=$HIVE_HOME/bin
export HIVE_HOME

修改hive-default.xml

多個Hive節點的數據内容保存在HDFS上,通過配置文件,指向NameNode節點即可,例如:

使用Hive的三種Metastore儲存方式

  1. 使用Derby資料庫儲存數據

  2. 使用本機的MySQL

  3. 使用遠端的MySQL

我自己熟悉的是MySQL當然就選他囉!!

有一個需要注意的地方是,需要把一個jar包mysql-connector-java-5.1.15-bin.jar複製到hive的lib目錄下才行,否則執行語句的時候會出錯,範例如下:

我當時安装MYSQL的时候是使用RPM来安装的,没找到mysql-connector-java-5.1.15-bin.jar。

在MySQL建立Hive資料庫並且設定語系

讓Thrift使用Hive

修改/opt/hive/src/metastore/if/hive_metastore.thrift第6行,依實際路徑修改

開始產生Thrift使用的Hive程式碼

Generate code並將目錄搬至packages

修改/opt/hive/src/metastore/if/hive_metastore.thrift第27行,依實際路徑修改

新增hive-thrift執行檔

更改權限檔案

Hive的三種執行模式

Hive CLI

Hive CLI(Hive Command Line)Client可以以直接在命令行模式下進行操作。

HWI

hwi(Hive Web Interface,Hive Web接口),Hive提供了更友善的Web介面

在hive-site.xml的添加項目

啟動HWI服務

或是在背景啟動hwi服務

我的Hive部署在192.168.1.28,Hive默認HWI端口為9999。我们在瀏覽器中輸入http://192.168.1.28:9999/hwi/ 就可以瀏覽了

hiveserver

hiveserver,Hive提供了Thrift服務,Thrift Client目前支持C++/Java/PHP/Python/Ruby。

啟動與停止Hive

啟動

停止

Hive執行叢集環境

修改hive-site.xml

在的添加項目

執行所有節點

或是背景執行

將hive-thrift新增至服務中並設開機啟動

檢查是否有執行Hive

如果有出現RunJar則執行成功

發生錯誤

如果資料寫不進去試著把/tmp/root裡面的log刪掉

參考教學:

http://blog.csdn.net/liuzhoulong/article/details/6441914

Jun 23rd, 2013 10:03:00pm

Last updated

Was this helpful?