hive的安装和配置 

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.0hive里面自带的hbasejar0.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 
本文的目的是要讲述如何让HbaseHive能互相访问,让Hadoop/Hbase/Hive协同工作,合为一体。 
本文测试步骤主要参考自:http://running.iteye.com/blog/898399 
当然,这边博文也是按照官网的步骤来的:http://wiki.apache.org/hadoop/Hive/HBaseIntegration 
1.
拷贝hbase-0.94.12.jarzookeeper-3.4.2.jarhive/lib下。 
注意:如何hive/lib下已经存在这两个文件的其他版本(例如zookeeper-3.3.1.jar),建议删除后使用hbase下的相关版本。 
2.
修改hive/confhive-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


posted on 2014-11-14 14:17  大鹏展翅fjsh  阅读(214)  评论(0编辑  收藏  举报