HIVE的安裝配置

myamor發表於2013-11-28

有些倉促,有遺漏或者錯誤的地方還請各位大俠給予指正

1. 下載軟體
 登入http://mirror.mel.bkb.net.au/pub/apache/網下載hive的軟體包
 我下載的是http://mirror.mel.bkb.net.au/pub/apache//hive/stable/hive-0.12.0.tar.gz
 上傳到suse linux
 執行 tar zxf hive-0.12.0.tar.gz           #解壓軟體包
 在master節點上 mv hive-0.12.0 /usr/       #複製到與hadoop相同的目錄,便於管理
 ln -s hive-0.12.0 hive                    #建立一個連線
 
2. 設定環境變數
針對hadoop使用者,本機的hadoop使用者名稱就是hadoop
vi .bash_profile
export JAVA_HOME=/usr/lib/jvm/java-1.6.0-openjdk-1.6.0.0.x86_64/jre
export HADOOP_HOME=/usr/hadoop
export HIVE_HOME=/usr/hive
export HADOOP_CONF_DIR=$HOME/conf
export HIVE_CONF_DIR=$HOME/hive-conf

export CLASSPATH=$HIVE_HOME/lib:$JAVA_HOME/lib:$JAVA_HOME/jre/lib:$HADOOP_HOME
export PATH=$HIVE_HOME/bin:$HADOOP_HOME/bin:$JAVA_HOME/bin:/sbin/:/bin:.:$PATH

3. 配置hive
進入目錄/usr/hive

cp -r conf $HIVE_CONF_DIR/
cd $HIVE_CONF_DIR/
cp hive-default.xml.template hive-default.xml
cp hive-env.sh.template hive-env.sh

vi hive-env.sh  #編輯檔案增加下邊兩列
export HADOOP_HEAPSIZE=512
export HIVE_CONF_DIR=/home/hadoop/hive-conf

4. 測試HIVE
$ hive
hive> show tables;
OK
Time taken: 4.824 seconds
hive> create table product(id int,name string) ROW FORMAT DELIMITED FIELDS TERMINATED BY ',';
OK
Time taken: 0.566 seconds
......
hive> select * from product;
OK
1       zhang
2       wang
1       zhang
2       wang
Time taken: 0.099 seconds, Fetched: 4 row(s)

#本地載入需要帶local,不帶的為從hadoop上載入的,需要先上傳的hadoop的目錄中
hive> load data local inpath '/home/hadoop/product.txt' into table product; 
Copying data from file:/home/hadoop/product.txt
Copying file: file:/home/hadoop/product.txt
Loading data to table default.product
Table default.product stats: [num_partitions: 0, num_files: 3, num_rows: 0, total_size: 45, raw_data_size: 0]
OK
Time taken: 0.57 seconds
hive> select * from product;                                              
OK
1       zhang
2       wang
1       zhang
2       wang
1       zhang
2       wang
Time taken: 0.132 seconds, Fetched: 6 row(s)
hive> CREATE TABLE product1 (id int,name string) ROW FORMAT DELIMITED FIELDS TERMINATED BY ',' LOCATION '/tmp/product/'
OK
Time taken: 0.566 seconds
###只要把檔案上傳到/tmp/product/這個目錄就可以了 hadoop fs -put /home/hadoop/product.txt /tmp/product
hive> select * from product1;
OK
1       zhang
2       wang
Time taken: 0.101 seconds, Fetched: 2 row(s)


$ hadoop dfs -lsr /user/hive
drwxrwxr-x   - hadoop supergroup          0 2013-11-27 20:52 /user/hive/warehouse
drwxr-xr-x   - hadoop supergroup          0 2013-11-27 23:27 /user/hive/warehouse/product
-rw-r--r--   1 hadoop supergroup         15 2013-11-27 20:39 /user/hive/warehouse/product/product.txt
-rw-r--r--   1 hadoop supergroup         15 2013-11-27 20:51 /user/hive/warehouse/product/product_copy_1.txt
-rw-r--r--   1 hadoop supergroup         15 2013-11-27 23:27 /user/hive/warehouse/product/product_copy_2.txt

$ hadoop dfs -lsr /tmp/product
-rw-r--r--   1 hadoop supergroup         15 2013-11-27 22:58 /tmp/product/product.txt


####刪除檔案以及目錄的命令,檔案刪除資料庫表中的資料也同時刪除。
hadoop fs -rm /user/hive/warehouse/product/product_copy_2.txt
hadoop fs -rmr /user/hive/warehouse/product/                  

 


5. 常見錯誤
error 1:
-------------------------------------------------
執行hadoop命令的時候會出現這個錯誤:
FAILED: Could not create the Java Virtual Machine
Solution:
 減小hadoop-env.sh 裡面的 hadoop-heapsize=200
 同時減少hive-conf 裡面的 hadoop-heapsize=200
 

error 2:
-------------------------------------------------
hadoop datanode 無法啟動,通過日誌檢視發現是namespaceIDs的問題
ava.io.IOException: Incompatible namespaceIDs in /tmp/hadoop/hadoop-hadoop/dfs/data:
NameNode namespaceID = 1307672299; DataNode namespaceID = 389959598

這是因為namenode和datanode節點namespaceID不一致
Solution:
1、停止hadoop,刪除/tmp/hadoop/*,執行hadoop namenode -format,啟動hadoop
2、停止hadoop,編輯/tmp/hadoop/hadoop-hadoop/dfs/data/current/VERSION,修改namespaceID = 389959598 為 namespaceID = 1307672299,啟動hadoop


 

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/177006/viewspace-1061532/,如需轉載,請註明出處,否則將追究法律責任。

相關文章