`
郑云飞
  • 浏览: 817261 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Hive与HBase的整合

 
阅读更多

开场白:

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

hive-hbase

口水:

 对 hive_hbase-handler.jar 这个东东还有点兴趣,有空来磋磨一下。

一、2个注意事项:

1、需要的软件有 Hadoop、Hive、Hbase、Zookeeper,Hive与HBase的整合对Hive的版本有要求,所以不要下载.0.6.0以前的老版本,Hive.0.6.0的版本才支持与HBase对接,因此在Hive的lib目录下可以看见多了hive_hbase-handler.jar这个jar包,他是Hive扩展存储的Handler ,HBase 建议使用 0.20.6的版本,这次我没有启动HDFS的集群环境,本次所有测试环境都在一台机器上。

     

2、运行Hive时,也许会出现如下错误,表示你的JVM分配的空间不够,错误信息如下:

Invalid maximum heap size: -Xmx4096m

The specified size exceeds the maximum representable size.

Could not create the Java virtual machine.

解决方法:

/work/hive/bin/ext# vim util/execHiveCmd.sh 文件中第33行

修改,

HADOOP_HEAPSIZE=4096



HADOOP_HEAPSIZE=256

另外,在 /etc/profile/ 加入 export $HIVE_HOME=/work/hive

二、启动运行环境

1启动Hive

hive –auxpath /work/hive/lib/hive_hbase-handler.jar,/work/hive/lib/hbase-0.20.3.jar,/work/hive/lib/zookeeper-3.2.2.jar -hiveconf hbase.master=127.0.0.1:60000

加载 Hive需要的工具类,并且指向HBase的master服务器地址,我的HBase master服务器和Hive运行在同一台机器,所以我指向本地。

2启动HBase

/work/hbase/bin/hbase master start

3启动Zookeeper

/work/zookeeper/bin/zkServer.sh start

三、执行

在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");

在运行一个在Hive中建表语句,并且将数据导入

建表

    CREATE TABLE pokes (foo INT, bar STRING);

数据导入

    LOAD DATA LOCAL INPATH '/work/hive/examples/files/kv1.txt' OVERWRITE INTO TABLE pokes;

在Hive与HBase关联的表中 插入一条数据

    INSERT OVERWRITE TABLE hbase_table_1 SELECT * FROM pokes WHERE foo=98;

运行成功后,如图所示:

hive

插入数据时采用了MapReduce的策略算法,并且同时向HBase写入,如图所示:

Map-Reduce Job for INSERT

在HBase shell中运行 scan 'xyz' 和describe "xyz" 命令,查看表结构,运行结果如图所示:

hive

xyz是通过Hive在Hbase中创建的表,刚刚在Hive的建表语句中指定了映射的属性 "hbase.columns.mapping" = ":key,cf1:val" 和 在HBase中建表的名称 "hbase.table.name" = "xyz"

在hbase在运行put命令,插入一条记录

    put 'xyz','10001','cf1:val','www.javabloger.com'

在hive上运行查询语句,看看刚刚在hbase中插入的数据有没有同步过来,

    select * from hbase_table_1 WHERE key=10001;

如图所示:

hive

最终的效果

    以上整合过程和操作步骤已经执行完毕,现在Hive中添加记录HBase中有记录添加,同样你在HBase中添加记录Hive中也会添加, 表示Hive与HBase整合成功,对海量级别的数据我们是不是可以在HBase写入,在Hive中查询 喃?因为HBase 不支持复杂的查询,但是HBase可以作为基于 key 获取一行或多行数据,或者扫描数据区间,以及过滤操作。而复杂的查询可以让Hive来完成,一个作为存储的入口(HBase),一个作为查询的入口(Hive)。如下图示。

    hive mapreduce

    

    呵呵,见笑了,以上只是我面片的观点。

先这样,稍后我将继续更新,感谢你的阅读。

  

分享到:
评论

相关推荐

    hive与hbase整合经验谈

    将Hive与HBase整合,主要是为了结合两者的优点,实现批量处理和实时查询的无缝对接。整合的关键在于Hive的外部表功能,通过创建指向HBase表的外部表,我们可以用Hive的HQL查询HBase中的数据。 整合步骤如下: 1. *...

    hive和hbase整合

    【Hive与HBase整合详解】 Hive和HBase是两个大数据处理的重要组件。Hive提供了基于SQL的查询语言(HQL)来处理大规模的数据,适合于离线批处理;而HBase则是一个NoSQL数据库,它基于Google的Bigtable设计,提供高...

    大数据工具篇之Hive与HBase整合完整教程

    ### 大数据工具篇之Hive与HBase整合完整教程 #### 一、引言 在大数据处理领域,Hive 和 HBase 是两种非常重要的工具。Hive 是一种数据仓库工具,可以用来进行数据提取、转换和加载(ETL),同时提供了一种 SQL ...

    hive与hbase整合经验谈.pdf

    Hive与HBase整合后可以实现多样的使用场景,包括但不限于数据的批量迁移、实时更新、周期性加载以及复杂的数据分析操作。 整合Hive与HBase后,可以在Hive中进行数据的插入、查询、连接(JOIN)、分组(GROUPBY)...

    HIVE和HBASE的整合

    在HIVE中创建HBASE的外表,是实现HIVE和HBASE整合的关键步骤。外表是一种虚拟表,它不存储实际数据,而是指向HBASE中的实际数据。通过创建外表,HIVE可以直接访问HBASE中的数据,并且可以使用类SQL和各种函数来操作...

    HadoopHive与Hbase整合中文最新版本

    用hbase做数据库,但由于hbase没有类sql查询方式,所以操作和计算数据非常不方便,于是整合hive,让hive支撑在hbase数据库层面 的 hql查询.hive也即 做数据仓库 本文的目的是要讲述如何让Hbase和Hive能互相访问,让...

    Hive整合HBase资源文件.zip

    1. **Hive与HBase的集成背景**:介绍为什么需要将Hive与HBase整合,通常是因为需要结合Hive的数据处理能力与HBase的实时查询和高并发性能。 2. **Hive-HBase连接器**:文件"hive-hbase-handler-1.2.1.jar"是Hive...

    Hive与Hbase的整合

    Hive与Hbase的整合,集中两者的优势,使用HiveQL语言,同时具备了实时性

    hive-hbase-handler-1.2.2.jar

    hive和hbase整合的时候,如果出现不兼容的情况需要手动编译:hive-hbase-hander-1.2.2.jar把这个jar替换掉hive/lib里的那个jar包

    scala-hive-HBASE-Api.7z

    在Java开发中,为了将这些组件整合在一起,你需要相关的jar包,例如包含Hive和HBase的API。这些API允许你在Scala程序中直接操作Hive和HBase,简化了数据处理的流程。例如,`scalatestOne`可能是一个Scala测试项目,...

    hadoop2.2+hbase0.96+hive0.12安装整合详细高可靠文档及经验总结

    6. Hive与HBase整合需要做哪些准备工作? **详细解答:** **1. MySQL的使用:** - 不需要在每个客户端安装MySQL,只需在服务器端安装即可。 - MySQL用于存储Hive的元数据,提高性能和可靠性。 **2. 客户端与...

    (编译过的)hive-hbase-handler-1.2.1.jar

    hive和hbase的整合所需要的编译后的jar包。 注意:这里的hbase版本为:1.2.1 hive的版本为:1.2.1

    hive-hbase-handler-3.1.1.jar

    HBase2.1.3整合Hive3.1.2,Hive官方的hive-hbase-handler-3.1.1.jar包不好用,自己编译后的,确认好用

    hive 整合 hbase

    #### 四、Hive与HBase的整合 Hive和HBase的整合使得Hive能够直接操作存储在HBase中的数据,而无需将数据导出到HDFS中再进行处理。 - **配置Hive连接HBase**: - 设置Hive连接HBase所需的配置项: - `SEThbase....

    HIVE和HBASE区别

    HIVE必须提供预先定义好的schema将文件和目录映射到列,并且HIVE与ACID不兼容。 HBASE查询是通过特定的语言来编写的,这种语言需要重新学习。类SQL的功能可以通过Apache Phonenix实现,但这是以必须提供schema为...

    hadoop,hbase,hive版本整合兼容性最全,最详细说明【适用于任何版本】 -

    本文将详细介绍Hadoop、HBase和Hive的版本整合兼容性,以及如何确保它们在不同版本间顺畅协作。 首先,Hadoop作为基础平台,其版本选择会直接影响到HBase和Hive的运行。Hadoop的主要组件包括HDFS(分布式文件系统)...

    hadoop2.2 hbase0.96 hive0.12安装整合详细高可靠文档及经验总结

    **3.3 Hive与HBase整合** - **添加通信包**: 将`mysql-connector-java-5.1.10-bin.jar`和`hive-hbase-handler-0.13.0.jar`复制到Hive安装目录下的`lib`文件夹。 - **配置Hive与HBase的连接**: 在`hive-site.xml`中...

Global site tag (gtag.js) - Google Analytics