注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

阿飘的博客

十里平湖霜满天 寸寸青丝愁华年

 
 
 

日志

 
 

hadoop、hbase的安装见前面的文章  

2014-10-17 21:15:48|  分类: Linux |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
1、下载
http://mirror.bit.edu.cn/apache/hive/stable/

Hadoop Hive与Hbase整合 

一 、简介

Hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供完整的sql查询功能,可以将sql语句转换为 MapReduce任务进行运行。 其优点是学习成本低,可以通过类SQL语句快速实现简单的MapReduce统计,不必开发专门的MapReduce应用,十分适合数据仓库的统计分析。

Hive与HBase的整合功能的实现是利用两者本身对外的API接口互相进行通信,相互通信主要是依靠hive_hbase-handler.jar工具类, 大致意思如图所示:



二、安装步骤:

1 .Hadoop和Hbase都已经成功安装了

Hadoop集群配置:http://blog.csdn.net/hguisu/article/details/723739

hbase安装配置:http://blog.csdn.net/hguisu/article/details/7244413

2 . 拷贝hbase-0.90.4.jar和zookeeper-3.3.2.jar到hive/lib下。

注意:如何hive/lib下已经存在这两个文件的其他版本(例如zookeeper-3.3.2.jar),建议删除后使用hbase下的相关版本。

2. 修改hive/conf下hive-site.xml文件,在底部添加如下内容:

  1. <!--    
  2. <property>    
  3.   <name>hive.exec.scratchdir</name>     
  4.   <value>/usr/local/hive/tmp</value>     
  5.   
  6. </property>     
  7. -->    
  8.     
  9. <property>     
  10.   <name>hive.querylog.location</name>     
  11.   <value>/usr/local/hive/logs</value>     
  12. </property>     
  13.     
  14. <property>    
  15.   <name>hive.aux.jars.path</name>     
  16.   <value>file:///usr/local/hive/lib/hive-hbase-handler-0.8.0.jar,file:///usr/local/hive/lib/hbase-0.90.4.jar,file:///usr/local/hive/lib/zookeeper-3.3.2.jar</value>    
  17.   
  18. </property>    

注意:如果hive-site.xml不存在则自行创建,或者把hive-default.xml.template文件改名后使用。

3. 拷贝hbase-0.90.4.jar到所有hadoop节点(包括master)的hadoop/lib下。

4. 拷贝hbase/conf下的hbase-site.xml文件到所有hadoop节点(包括master)的hadoop/conf下。

注意,如果3,4两步跳过的话,运行hive时很可能出现如下错误:

  1. [html] view plaincopy  
  2. org.apache.hadoop.hbase.ZooKeeperConnectionException: HBase is able to connect to ZooKeeper but the connection closes immediately.     
  3. This could be a sign that the server has too many connections (30 is the default). Consider inspecting your ZK server logs for that error and     
  4. then make sure you are reusing HBaseConfiguration as often as you can. See HTable's javadoc for more information. at org.apache.hadoop.    
  5. hbase.zookeeper.ZooKeeperWatcher.  

    以下是我的 hive-site.xml文件内容:
    </property>


        <!--    
        <property>    
          <name>hive.exec.scratchdir</name>     
          <value>/home/cheng/hive-0.8.1/tmp</value>     
          
        </property>     
        -->    
            
        <property>     
          <name>hive.querylog.location</name>     
          <value>/home/cheng/hive-0.8.1/logs</value>     
        </property>     
            
        <property>    
          <name>hive.aux.jars.path</name>     
          <value>file:///home/cheng/hive-0.8.1/lib/hive-hbase-handler-0.8.1.jar,file:///home/cheng/hive-0.8.1/lib/hbase-0.89.0-SNAPSHOT.jar,file:///home/cheng/hive-0.8.1/lib/zookeeper-3.4.3.jar</value>    
          
        </property>    


    </configuration>
    我没有找到hbase-0.90.4.jar这个文件,就使用hive自带的
    然后将hive打包scp到相应的各个机器上。

三、启动Hive

1.单节点启动

#bin/hive -hiveconf hbase.master=master:490001

2 集群启动:

#bin/hive -hiveconf hbase.zookeeper.quorum=node1,node2,node3

如何hive-site.xml文件中没有配置hive.aux.jars.path,则可以按照如下方式启动。

bin/hive --auxpath /usr/local/hive/lib/hive-hbase-handler-0.8.0.jar, /usr/local/hive/lib/hbase-0.90.5.jar, /usr/local/hive/lib/zookeeper-3.3.2.jar -hiveconf hbase.zookeeper.quorum=node1,node2,node3

四、测试:

1.创建hbase识别的数据库:

  1. CREATE TABLE hbase_table_1(key int, value string)  
  2. STORED BY 'org.apache.hadoop.hive.hbase.HBaseStorageHandler'  
  3. WITH SERDEPROPERTIES ("hbase.columns.mapping" = ":key,cf1:val")  
  4. TBLPROPERTIES ("hbase.table.name" = "xyz");    

hbase.table.name 定义在hbase的table名称

hbase.columns.mapping 定义在hbase的列族 

2.使用sql导入数据

1) 新建hive的数据表:

CREATE TABLE pokes (foo INT, bar STRING);
2)批量插入数据:

hive> LOAD DATA LOCAL INPATH './examples/files/kv1.txt' OVERWRITE INTO TABLE

3)使用sql导入hbase_table_1:

hive> INSERT OVERWRITE TABLE hbase_table_1 SELECT * FROM pokes WHERE foo=86

3. 查看数据

hive> select * from  hbase_table_1;  

这时可以登录Hbase去查看数据了
#bin/hbase shell
hbase(main):001:0> describe 'xyz'  
hbase(main):002:0> scan 'xyz'  
hbase(main):003:0> put 'xyz','100','cf1:val','www.360buy.com'


这时在Hive中可以看到刚才在Hbase中插入的数据了。

4 hive访问已经存在的hbase

使用CREATE EXTERNAL TABLE:

  1. CREATE EXTERNAL TABLE hbase_table_2(key int, value string)        
  2. STORED BY 'org.apache.hadoop.hive.hbase.HBaseStorageHandler'  
  3. WITH SERDEPROPERTIES ("hbase.columns.mapping" = "cf1:val")  
  4. TBLPROPERTIES("hbase.table.name" = "some_existing_table");  
内容参考:http://wiki.apache.org/hadoop/Hive/HBaseIntegration

创建hbase识别的数据库总是报错误:
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");    
FAILED: Error in metadata: java.lang.IllegalArgumentException: Not a host:port pair: 锟?
还没有解决

 解决:
其实还是上面的安装步骤有问题导致了一直报这个错误,需要注意的是这一步:

拷贝hbase-0.90.4.jar和zookeeper-3.3.2.jar到hive/lib下。
其中hbase-0.92.1.jar所在的路径是/home/cheng/hbase-0.92.1/hbase-0.92.1.jar(我的 hbase版本高),原来弄错了以为是在hbase的lib路径下那。然后将该jar包拷贝到hive/lib以及hadoop/lib下就可以了
cheng@ip83 hive-0.8.1]$ ./bin/hive --auxpath file:///home/cheng/hive-0.8.1/lib/hive-hbase-handler-0.8.1.jar,file:///home/cheng/hive-0.8.1/lib/hbase-0.92.1.jar,file:///home/cheng/hive-0.8.1/lib/zookeeper-3.4.3.jar -hiveconf hbase.zookeeper.quorum=ip81,ip82,ip83
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/cheng/hive-0.8.1/lib/hive-common-0.8.1.jar!/hive-log4j.properties
Hive history file=/home/cheng/hive-0.8.1/logs/hive_job_log_cheng_201205151131_1369166340.txt
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");   
OK
Time taken: 9.152 seconds
hive> 
其中

WARNING: org.apache.hadoop.metrics.jvm.EventCounter is deprecated. Please use org.apache.hadoop.log.metrics.EventCounter in all the log4j.properties files.
好像是个bug可以忽略,到此hadoop+hbase+hive集群安装完成

  评论这张
 
阅读(313)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017