用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.90.5.jar和zookeeper-3.3.2.jar到hive/lib下。
注意:怎样hive/lib下已经存在这两个文件的其它版本号(比如zookeeper-3.3.1.jar),建议删除后使用hbase下的相关版本号。

2. 改动hive/conf下hive-site.xml文件。在底部加入例如以下内容:

[html] view plaincopy
<!--  
<property>  
  <name>hive.exec.scratchdir</name>   
  <value>/usr/local/hive/tmp</value>

</property>   
-->  
 
<property>   
  <name>hive.querylog.location</name>   
  <value>/usr/local/hive/logs</value>   
</property>   
 
<property>  
  <name>hive.aux.jars.path</name>   
  <value>file:///usr/local/hive/lib/hive-hbase-handler-0.8.0.jar,file:///usr/local/hive/lib/hbase-0.90.5.jar,file:///usr/local/hive/lib/zookeeper-3.3.2.jar</value>

</property> 
注意:假设hive-site.xml不存在则自行创建,或者把hive-default.xml.template文件改名后使用。
详细请參见:http://blog.csdn.net/kunshan_shenbin/article/details/7210020

3. 拷贝hbase-0.90.5.jar到全部hadoop节点(包含master)的hadoop/lib下。

4. 拷贝hbase/conf下的hbase-site.xml文件到全部hadoop节点(包含master)的hadoop/conf下。

注意。hbase-site.xml文件配置信息參照:http://blog.csdn.net/kunshan_shenbin/article/details/7209990
注意,假设3,4两步跳过的话。执行hive时非常可能出现例如以下错误:

[html] view plaincopy
org.apache.hadoop.hbase.ZooKeeperConnectionException: HBase is able to connect to ZooKeeper but the connection closes immediately.   
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   
then make sure you are reusing HBaseConfiguration as often as you can. See HTable's javadoc for more information. at org.apache.hadoop.  
hbase.zookeeper.ZooKeeperWatcher.
參考:http://blog.sina.com.cn/s/blog_410d18710100vlbq.html

如今能够尝试启动Hive了。
单节点启动:

> bin/hive -hiveconf hbase.master=master:60000

集群启动:

> bin/hive -hiveconf hbase.zookeeper.quorum=slave

怎样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=slave

接下来能够做一些測试了。

1.创建hbase识别的数据库:
[sql] view plaincopy
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"); 
hbase.table.name 定义在hbase的table名称
hbase.columns.mapping 定义在hbase的列族
2.使用sql导入数据
a) 新建hive的数据表
[sql] view plaincopy
<span><span></span></span>hive> CREATE TABLE pokes (foo INT, bar STRING); 
b) 批量插入数据
[sql] view plaincopy

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

pokes; 
c) 使用sql导入hbase_table_1
[sql] view plaincopy
hive> INSERT OVERWRITE TABLE hbase_table_1 SELECT * FROM pokes WHERE foo=86; 
3. 查看数据
[sql] view plaincopy
hive> select * from  hbase_table_1; 
这时能够登录Hbase去查看数据了.
> /usr/local/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中插入的数据了。

hive> select * from hbase_table_1
4. hive訪问已经存在的hbase
使用CREATE EXTERNAL TABLE
[sql] view plaincopy
CREATE EXTERNAL TABLE hbase_table_2(key int, value string) 
STORED BY 'org.apache.hadoop.hive.hbase.HBaseStorageHandler' 
WITH SERDEPROPERTIES ("hbase.columns.mapping" = "cf1:val") 
TBLPROPERTIES("hbase.table.name" = "some_existing_table");

多列和多列族(Multiple Columns and Families)
1.创建数据库
Java代码 
CREATE TABLE hbase_table_2(key int, value1 string, value2 int, value3 int)  
STORED BY 'org.apache.hadoop.hive.hbase.HBaseStorageHandler' 
WITH SERDEPROPERTIES ( 
"hbase.columns.mapping" = ":key,a:b,a:c,d:e" 
);

2.插入数据
Java代码 
INSERT OVERWRITE TABLE hbase_table_2 SELECT foo, bar, foo+1, foo+2  
FROM pokes WHERE foo=98 OR foo=100;

这个有3个hive的列(value1和value2,value3),2个hbase的列族(a,d)
Hive的2列(value1和value2)相应1个hbase的列族(a。在hbase的列名称b,c)。hive的另外1列(value3)相应列(e)位于列族(d)

3.登录hbase查看结构
Java代码

hbase(main):003:0> describe "hbase_table_2"  
DESCRIPTION                                                             ENABLED                                 
 {NAME => 'hbase_table_2', FAMILIES => [{NAME => 'a', COMPRESSION => 'N true                                    
 ONE', VERSIONS => '3', TTL => '2147483647', BLOCKSIZE => '65536', IN_M                                         
 EMORY => 'false', BLOCKCACHE => 'true'}, {NAME => 'd', COMPRESSION =>                                          
 'NONE', VERSIONS => '3', TTL => '2147483647', BLOCKSIZE => '65536', IN                                         
 _MEMORY => 'false', BLOCKCACHE => 'true'}]}                                                                    
1 row(s) in 1.0630 seconds
4.查看hbase的数据
Java代码

hbase(main):004:0> scan 'hbase_table_2'  
ROW                          COLUMN+CELL                                                                        
 100                         column=a:b, timestamp=1297695262015, value=val_100                                 
 100                         column=a:c, timestamp=1297695262015, value=101                                     
 100                         column=d:e, timestamp=1297695262015, value=102                                     
 98                          column=a:b, timestamp=1297695242675, value=val_98                                  
 98                          column=a:c, timestamp=1297695242675, value=99                                      
 98                          column=d:e, timestamp=1297695242675, value=100                                     
2 row(s) in 0.0380 seconds

5.在hive中查看
Java代码

hive> select * from hbase_table_2;  
OK  
100     val_100 101     102  
98      val_98  99      100  
Time taken: 3.238 seconds 
參考资料:
http://running.iteye.com/blog/898399
http://heipark.iteye.com/blog/1150648
http://www.javabloger.com/article/apache-hadoop-hive-hbase-integration.html

转载于:https://www.cnblogs.com/mfrbuaa/p/5094133.html

Hadoop Hive与Hbase关系 整合相关推荐

  1. java hive和hbase整合,Hive入门3–Hive与HBase的整合

    开场白: Hive与HBase的整合功能的实现是利用两者本身对外的API接口互相进行通信,相互通信主要是依靠hive_hbase-handler.jar工具类 (Hive Storage Handle ...

  2. HBase:Hive与HBase的整合

    hive与HBase的整合 hive与我们的HBase各有千秋,各自有着不同的功能,但是归根接地,hive与hbase的数据最终都是存储在hdfs上面的,一般的我们为了存储磁盘的空间,不会将一份数据存 ...

  3. hadoop+hive+flink+hbase交互的版本兼容性

    与Hive兼容的Hadoop版本[3] Flink支持的Hive[1] 1.x.y, 2.x.y 1.0.0 1.0.1 1.x.y, 2.x.y 1.1.0 1.1.1 1.x.y, 2.x.y 1 ...

  4. Mysql和Hadoop+Hive有什么关系?

    1.Hive不存储数据,Hive需要分析计算的数据,以及计算结果后的数据实际存储在分布式系统上,如HDFS上. 2.Hive某种程度来说也不进行数据计算,只是个解释器,只是将用户需要对数据处理的逻辑, ...

  5. hive存储处理器(StorageHandlers)以及存储格式以及hive与hbase整合

    一 存储处理器介绍 通过HIVE存储处理器,不但可以让hive基于hbase实现,还可以支持cassandra JDBC MongoDB 以及 Google Spreadsheets HIVE存储器的 ...

  6. 【伊利丹】Hadoop-2.5.0-CDH5.2.0/Hive与Hbase整合实验

    Hadoop Hive与Hbase整合 用hbase做数据库,但由于hbase没有类sql查询方式,所以操作和计算数据非常不方便,于是整合hive,让hive支撑在hbase数据库层面 的 hql查询 ...

  7. hive 集成hbase 笔记

    Hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供完整的sql查询功能,可以将sql语句转换为 MapReduce任务进行运行.其优点学习成本低,可以通过类 ...

  8. hive,hbase,mysql的区别

    版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn.net/vipyeshuai/article/d ...

  9. Hadoop生态上几个技术的关系与区别:hive、pig、hbase 关系与区别

    Pig 一种操作hadoop的轻量级脚本语言,最初又雅虎公司推出,不过现在正在走下坡路了.当初雅虎自己慢慢退出pig的维护之后将它开源贡献到开源社区由所有爱好者来维护.不过现在还是有些公司在用,不过我 ...

最新文章

  1. Robots.txt和Robots META
  2. NSMutableArray 记住取不到时要进行强转
  3. 农林行业的系统应用 php专业,农林|类专业
  4. android 8 ril,Android系统启动——8 附录2:相关守护进程简介
  5. mybatis中LIKE模糊查询的几种写法以及注意点
  6. python调用函数_Python 函数中的 4 种参数类型
  7. 向日葵linux 用电脑远程控制与管理,远程控制软件向日葵和teamviewer的区别和使用...
  8. 【转】C++中的inline用法
  9. 数据库操作--批量修改数据库表名及字段名大小写转换及首字母大写+删除没有数据无用的表...
  10. 20165328 第八周学习总结
  11. linux修改环境截图,Linux环境下php实现给网站截图的方法.docx
  12. coreldrawx4缩略图显示不出来_CDR缩略图不显示怎么办?CorelDRAW缩略图不显示解决办法 - 优优下载站...
  13. somachine3.1安装
  14. 支付宝当面付(统一收单线下交易预创建,二维码扫码支付)
  15. 测试要找苹果机型,哪里有?
  16. Mysql --分表、分库、分区(横向纵向、分区列)的区别与详解
  17. PPT科研绘图:将PPT绘制的图像保存为高清图片
  18. 关于Centos7 下df -h 无响应
  19. 牛顿后插matlab,大神求解析程序~~关于牛顿插值多项式的matlab程序
  20. python课程设计:公交线路查询系统

热门文章

  1. python 取字符串的最后一位_python中获得一个字符串最后出现位置 | 学步园
  2. 二等水准数据平差_自编单次二等水准平差计算表
  3. Python数据结构与算法(1.3)——Python基础之输入、输出与高阶赋值
  4. NEAT(NeuroEvolution of Augmenting Topologies)算法详解与实践(基于NEAT-Python)
  5. Hadoop 2.x MapReduce(MR V1)字数统计示例
  6. Android ButterKnife示例
  7. 以太坊POA共识机制Clique源码分析
  8. Java RESTful Web Service实战(第2版) 2.3 传输格式
  9. Github 是如何用 Github 撰写 Github 文档的
  10. linux下如何关闭防火墙、查看当前的状态、开放端口