download
wget http://mirror.mel.bkb.net.au/pub/apache//hive/stable/
只需要在一个节点上安装
2. 把Hive移动到/usr/local/hadoop目录下并解压
hadoop@ubuntu:~/下载$ mv hive-0.9.0.tar.gz /usr/local/hadoop
hadoop@ubuntu:~$ cd /usr/local/hadoop
hadoop@ubuntu:~$ tar -zxvf hive-0.9.0.tar.gz
3. 用root用户给hive-0.9.0授权
hadoop@ubuntu:~$ su -
密码:
root@ubuntu:~# cd /home/hadoop/
root@ubuntu:/home/hadoop# sudochown -R hadoop:hadoop hive-0.9.0
4.添加hive-0.9.0环境变量
/etc/profile
/home/hadoop/.bashrc
/usr/local/Hadoop/hive/conf/hive-env.sh
在以上三个文件中添加如下内容:
export JAVA_HOME=/usr/lib/jdk/jdk1.7.0_25
exportJRE_HOME=/usr/lib/jdk/jdk1.7.0_25/jre
exportPATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH
exportHADOOP_HOME=/usr/local/hadoop
export CLASSPATH=$CLASSPATH:.:$JAVA_HOME/lib:$JAVA_HOME/jre/lib
export ZOOKEEPER_HOME=/usr/local/hadoop/zookeeper
export PATH=$ZOOKEEPER_HOME/bin:$PATH
export HIVE_HOME=/usr/local/hadoop/hive
export PATH=$HIVE_HOME/bin:$PATH:$HADOOP_HOME/lib
export CLASSPATH=$CLASSPATH:$HIVE_HOME/lib
5. 配置Hive
配置文件
a配置 hive-conf.sh
在“/usr/local/Hadoop/hive/bin”目录下,“hive-conf.sh”,然后在里面添加下面内容。
export JAVA_HOME=/usr/lib/jdk/jdk1.7.0_25
exportJRE_HOME=/usr/lib/jdk/jdk1.7.0_25/jre
exportPATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH
exportHADOOP_HOME=/usr/local/hadoop
export CLASSPATH=$CLASSPATH:.:$JAVA_HOME/lib:$JAVA_HOME/jre/lib
export ZOOKEEPER_HOME=/usr/local/hadoop/zookeeper
export PATH=$ZOOKEEPER_HOME/bin:$PATH
export HIVE_HOME=/usr/local/hadoop/hive
export PATH=$HIVE_HOME/bin:$PATH:$HADOOP_HOME/lib
export CLASSPATH=$CLASSPATH:$HIVE_HOME/lib
b.配置 hive-default.xml
和 hive-site.xml
在“/usr/local/hadoop/hive /conf”目录下,没有这两个文件,只有一个“hive-default.xml.template”,所以我们要复制两个“hive-default.xml.template”,并分别命名为“hive-default.xml”和“hive-site.xml”
因为我们当前是 root
用户,。所以还要把两个的文件的授权给 hadoop
用户。
root@ubuntu:/home/hadoop/hive-0.9.0/conf# cp hive-default.xml.template hive-default.xml
root@ubuntu:/home/hadoop/hive-0.9.0/conf# chown -R hadoop:hadoop hive-default.xml
root@ubuntu:/home/hadoop/hive-0.9.0/conf# cp hive-default.xml.template hive-site.xml
root@ubuntu:/home/hadoop/hive-0.9.0/conf# chown -R hadoop:hadoop hive-site.xml
root@ubuntu:/home/hadoop/hive-0.9.0/conf# ls -l
备注: “hive-default.xml”用于保留默认配置,“hive-site.xml”用于个性化配置,可覆盖默认配置。
6. 启动 Hive
此时切换用户至 hadoop
用户,在命令行输入“hive”命令进行测试。
hadoop@ubuntu:~$ hive
WARNING: org.apache.hadoop.metrics.jvm.EventCounter is deprecated. Please use org.apache.hadoop.log.metrics.EventCounter in all the log4j.properties files.
Logging initialized using configuration in jar:file:/home/hadoop/hive-0.9.0/lib/hive-common-0.9.0.jar!/hive-log4j.properties
Hive history file=/tmp/hadoop/hive_job_log_hadoop_201303041031_876597921.txt
hive>
解决的办法就是在 hive-log4j.properties
中将 log4j.appender.EventCounter
的值修改为
org.apache.hadoop.log.metrics.EventCounter,这样就不会报。该文件在“/home/hadoop/hive-0.9.0/conf”下面。
hadoop@ubuntu:~$ hive
Logging initialized using configuration infile:/home/hadoop/hive-0.9.0/conf/hive-log4j.properties
Hive history file=/tmp/hadoop/hive_job_log_hadoop_201303041047_1435676231.txt
hive>
可以看到,0.9.0的hive里面自带的hbase的jar是0.92版本的。
[zhouhh@Hadoop48 ~]$hive –auxpath$HIVE_HOME/lib/hive-hbase-handler-0.9.0.jar,$HIVE_HOME/lib/hbase-0.92.0.jar,$HIVE_HOME/lib/zookeeper-3.3.4.jar,$HIVE_HOME/lib/guava-r09.jar,$HBASE_HOME/lib/protobuf-java-2.4.0a.jar
hive> CREATE TABLE hbase_table_1(key int, value string)
> STORED BY ‘org.apache.hadoop.hive.hbase.HBaseStorageHandler’
> WITH SERDEPROPERTIES (“hbase.columns.mapping” = “:key,cf1:val”)
> TBLPROPERTIES (“hbase.table.name” = “xyz”);
java.lang.NoClassDefFoundError: com/google/protobuf/Message
at org.apache.hadoop.hbase.io.HbaseObjectWritable.(HbaseObjectWritable.java
…
Caused by: java.lang.ClassNotFoundException: com.google.protobuf.Message
解决办法:
将$HBASE_HOME/lib/protobuf-java-2.4.0a.jar
拷贝到 $HIVE_HOME/lib/.
[zhouhh@Hadoop48 ~]$cp /home/zhouhh/hbase-0.94.0/lib/protobuf-java-2.4.0a.jar $HIVE_HOME/lib/.
hive> CREATE TABLEhbase_table_1(key int, value string)
> STORED BY ‘org.apache.hadoop.hive.hbase.HBaseStorageHandler’
> WITH SERDEPROPERTIES (“hbase.columns.mapping” = “:key,cf1:val”)
> TBLPROPERTIES (“hbase.table.name” = “xyz”);
OK
Time taken: 10.492 seconds
hbase(main):002:0>list ‘xyz’
TABLE
xyz
1 row(s) in 0.0640 seconds
Hadoop Hive与Hbase整合
<!--用hbase做数据库,但由于hbase没有类sql查询方式,所以操作和计算数据非常不方便,于是整合hive,让hive支撑在hbase数据库层面的
hql查询.hive也即做数据仓库
1. 基于Hadoop+Hive架构对海量数据进行查询:http://blog.csdn.net/kunshan_shenbin/article/details/7105319
2. HBase 0.90.5 + Hadoop 1.0.0 集成:http://blog.csdn.net/kunshan_shenbin/article/details/7209990
本文的目的是要讲述如何让Hbase和Hive能互相访问,让Hadoop/Hbase/Hive协同工作,合为一体。
本文测试步骤主要参考自:http://running.iteye.com/blog/898399
当然,这边博文也是按照官网的步骤来的:http://wiki.apache.org/hadoop/Hive/HBaseIntegration
1. 拷贝hbase-0.94.12.jar和zookeeper-3.4.2.jar到hive/lib下。
注意:如何hive/lib下已经存在这两个文件的其他版本(例如zookeeper-3.3.1.jar),建议删除后使用hbase下的相关版本。
2. 修改hive/conf下hive-site.xml文件,在底部添加如下内容:
<property>
<name>hive.exec.scratchdir</name>
<value>/usr/local/hive/tmp</value>
</property>
--><property>
<name>hive.querylog.location</name>
<value>/usr/local/hadoop/hive/logs</value>
</property>
<property>
<name>hive.aux.jars.path</name> <value>file:///usr/local/hadoop/hive/lib/hive-hbase-handler-0.9.0.jar,file:///usr/local/hadoop/hive/lib/hbase-0.94.12.jar,file:///usr/local/hadoop/hive/lib/zookeeper-3.4.2.jar</value>
</property>
<property>
<name>hbase.zookeeper.quorum</name> <value>nistest.node1,nistest.node2,nistest.node3,instest.node4</value>
</property>
注意:如果hive-site.xml不存在则自行创建,或者把hive-default.xml.template文件改名后使用。
配置了hbase.zookeeper.quorum以后,启动就不需要加配置文件了
直接/bin/hive启动就可以(同时showtalbes的时候没有表是因为hive跟hbase有不同的表名,单独管理)
如果没有配置
启动的时候需要添加配置文件:
Bin/hive–hiveconfhbase.zookeeper.quorum=nistest.node1,nistest.node2,nistest.node3,nistest.node4
下面进行测试:
hive> CREATE TABLE hbase_table_1(key int, valuestring)
> STORED BY'org.apache.hadoop.hive.hbase.HBaseStorageHandler'
> WITH SERDEPROPERTIES("hbase.columns.mapping" = ":key,cf1:val")
> TBLPROPERTIES("hbase.table.name" = "hivetable_fjsh");
然后在hbase中插入数据
Put ‘hivetable_fjsh’,’1’,’cf1:val’,’1’
执行后:
可见hive已经联通了hbase,只是两个的表名称不同,分开管理
如果需要对hive的网站进行监听访问
配置一下文件:
<property>
<name>hive.hwi.listen.host</name>
<value>0.0.0.0</value>
<description>This is the host addressthe Hive Web Interface will listen on</description>
</property>
<property>
<name>hive.hwi.listen.port</name>
<value>9999</value>
<description>This is the port the HiveWeb Interface will listen on</description>
</property>
然后使用命令:
$hive --service hwi
然后在网站访问地址http://nistest.master:9999/hwi