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,均可在另一边看到数据。