hive-0.7.1
hbase-0.90.3
hadoop-0.20.203.0 三個NODE
在有了HBASE+HADOOP之後,數據的統計成了問題,MAP REDUCE是我們想用的功能,藉助HIVE來連接HBASE
一、準備
爲了能使HIVE多用戶操作,在NAMENODE上建立MYSQL,
1、建立MYSQL DATABASE
2、建立用戶和密碼
mysql> create database hive;
Query OK, 1 row affected (0.02 sec)
過程略,對於我們DBA來說非常容易。
二、安裝 HIVE
下載最新版hive:http://hive.apache.org/
1.解壓縮
2.配置
關鍵配置文件爲:conf/hive-site.xml
由於conf裏沒有hive-site.xml文件,複製hive-default.xml改名即可
cp hive-default.xml hive-site.xml
修改內容:
<property>
<name> hive.zookeeper.quorum </name>
<value> dm2,dm3,dm4 </value>
<property>
<name>hive.metastore.warehouse.dir</name>
<value>/home/hadoop/hive/warehouse</value>
<property>
<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:mysql://localhost:3306/hive?characterEncoding=UTF-8;databaseName=hive;create=true</value>
<property>
<name>javax.jdo.option.ConnectionDriverName</name>
<value>com.mysql.jdbc.Driver</value>
<property>
<name>javax.jdo.option.ConnectionUserName</name>
<value>hive</value>
<property>
<name>javax.jdo.option.ConnectionPassword</name>
<value>hive</value>
添加內容:
<property>
<name>hbase.zookeeper.quorum</name>
<value>dm2,dm3,dm4</value> --備註:我這裏的3個 HBASE datanode ,使用HBASE自己維護的ZOOKEEPER
<property>
<name>hive.aux.jars.path</name>
<value>file:///usr/hadoop/hive-0.7.1/lib/hive-hbase-handler-0.7.1.jar,file:///usr/hadoop/hive-0.7.1/lib/zookeeper-3.3.1.jar,file:///usr/hadoop/hive-0.7.1/lib/hbase-0.90.3.jar </value> --備註:這裏的文件後面有描述
</property>
---------------------------
需要注意:
一個jar包mysql-connector-java-5.1.15-bin.jar拷貝到hive的lib目錄下才行,否則執行語 句的時候會報錯,類似下面這樣
hive> show tables;
FAILED: Error in metadata: javax.jdo.JDOFatalInternalException: Error creating transactional connection factory
NestedThrowables:
java.lang.reflect.InvocationTargetException
FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.DDLTask
文件: mysql-connector-java-5.1.15-bin.jar
網址:http://www.mysql.com/products/connector/
下載: JDBC Driver for MySQL (Connector/J)
複製: /usr/hadoop/hive-0.7.1/lib/
-------------------------
複製/usr/hadoop/hbase-0.90.3/hbase-0.90.3.jar到hive的lib下
然後刪除 hbase-0.89.0-SNAPSHOT.jar
-------------------------
3、設置環境變量
sudo vi /etc/profile添加:
export HIVE_HOME=/usr/hadoop/hive-0.7.1
export PATH=/usr/local/mysql/bin:$HIVE_HOME/bin:$PATH
三、啓動與使用HIVE
其實應該說是登錄hive
1、進入 $HIVE_HOME
hadoop@dm1:/usr/hadoop/hive-0.7.1$ ./bin/hive
WARNING: org.apache.hadoop.metrics.jvm.EventCounter is deprecated. Please use org.apache.hadoop.log.metrics.EventCounter in all the log4j.properties files.
Hive history file=/tmp/hadoop/hive_job_log_hadoop_201111251707_674291674.txt
hive>
2、用HIVE在HBASE上建表
下面建表會在HBASE中創建表
CREATE TABLE hbase_tb(key int, value string)
STORED BY 'org.apache.hadoop.hive.hbase.HBaseStorageHandler'
WITH SERDEPROPERTIES ("hbase.columns.mapping" = ":key,cf1:val")
TBLPROPERTIES ("hbase.table.name" = "hbase_tb");
3、HIVE中建表關聯HBASE中已存在的表
先在HBASE建表 create 'test','data';
然後在HIVE建表,用擴展:
CREATE EXTERNAL TABLE hbase_test(key string, value string)
STORED BY 'org.apache.hadoop.hive.hbase.HBaseStorageHandler'
WITH SERDEPROPERTIES ("hbase.columns.mapping" = "data:1")
TBLPROPERTIES("hbase.table.name" = "test");
上面的兩張表在HBASE 中put,或者在HIVE中LOAD,均可在另一邊看到數據。