HBASE+HADOOP --2

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,均可在另一邊看到數據。
 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章