`
k_lb
  • 浏览: 834016 次
  • 性别: Icon_minigender_1
  • 来自: 郑州
社区版块
存档分类
最新评论
  • kitleer: 据我所知,国内有款ETL调度监控工具TaskCTL,支持ket ...
    kettle调度

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.90.5.jar和zookeeper-3.3.2.jar到hive/lib下。
注意:如何hive/lib下已经存在这两个文件的其他版本(例如zookeeper-3.3.1.jar),建议删除后使用hbase下的相关版本。
2. 修改hive/conf下hive-site.xml文件,在底部添加如下内容:
01 [html] view plaincopy
02 <!--
03 <property>
04 <name>hive.exec.scratchdir</name>
05 <value>/usr/local/hive/tmp</value>
06
07 </property>
08 -->
09
10 <property>
11 <name>hive.querylog.location</name>
12 <value>/usr/local/hive/logs</value>
13 </property>
14
15 <property>
16 <name>hive.aux.jars.path</name>
17 <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>
18
19 </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时很可能出现如下错误:
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.


参考:http://blog.sina.com.cn/s/blog_410d18710100vlbq.html

现在可以尝试启动Hive了。
单节点启动:
1 > bin/hive -hiveconf hbase.master=master:60000

集群启动:
1 > bin/hive -hiveconf hbase.zookeeper.quorum=slave

如何hive-site.xml文件中没有配置hive.aux.jars.path,则可以按照如下方式启动。
1 > 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
1 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代码
1 hbase(main):003:0> describe "hbase_table_2"
2 DESCRIPTION ENABLED
3 {NAME => 'hbase_table_2', FAMILIES => [{NAME => 'a', COMPRESSION => 'N true
4 ONE', VERSIONS => '3', TTL => '2147483647', BLOCKSIZE => '65536', IN_M
5 EMORY => 'false', BLOCKCACHE => 'true'}, {NAME => 'd', COMPRESSION =>
6 'NONE', VERSIONS => '3', TTL => '2147483647', BLOCKSIZE => '65536', IN
7 _MEMORY => 'false', BLOCKCACHE => 'true'}]}
8 1 row(s) in 1.0630 seconds


4.查看hbase的数据
Java代码
1 hbase(main):004:0> scan 'hbase_table_2'
2 ROW COLUMN+CELL
3 100 column=a:b, timestamp=1297695262015, value=val_100
4 100 column=a:c, timestamp=1297695262015, value=101
5 100 column=d:e, timestamp=1297695262015, value=102
6 98 column=a:b, timestamp=1297695242675, value=val_98
7 98 column=a:c, timestamp=1297695242675, value=99
8 98 column=d:e, timestamp=1297695242675, value=100
9 2 row(s) in 0.0380 seconds


5.在hive中查看
Java代码
1 hive> select * from hbase_table_2;
2 OK
3 100 val_100 101 102
4 98 val_98 99 100
5 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
分享到:
评论

相关推荐

    HadoopHive与Hbase整合中文最新版本

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

    hive和hbase整合

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

    hive与hbase整合经验谈

    2. **配置HBase与Hive**:在Hive的配置文件(如`hive-site.xml`)中添加HBase的相关配置,包括Zookeeper地址、HBase的配置路径等。 3. **安装HBase的Hive连接器**:例如,安装`Hive-HBase-Connector`,这是一个允许...

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

    由于ZooKeeper是独立的分布式协调服务,并不直接依赖于Hadoop或Hive,因此HBase与ZooKeeper的兼容性主要取决于ZooKeeper的版本是否满足HBase运行的要求。用户需要查看HBase官方的部署指南,以确定推荐的ZooKeeper...

    Hadoop,Hive,Hbase等框架详解

    该文档保护了目前比较流行的大数据平台的原理过程梳理。Hadoop,Hive,Hbase,Spark,MapReduce,Storm

    hadoop,hive,hbase学习资料

    【标题】:“hadoop,hive,hbase学习资料”是一份综合性的学习资源,涵盖了大数据处理领域中的三个核心组件——Hadoop、Hive和Hbase。这些工具在大数据处理和分析中发挥着至关重要的作用。 【描述】:描述指出这份...

    Hadoop Hive HBase Spark Storm概念解释

    ### Hadoop Hive HBase Spark Storm概念详解 #### Hadoop **Hadoop** 是一个由Apache基金会开发的开源分布式系统基础架构。它通过提供一个高效、可靠且可扩展的平台来解决大数据存储与处理的需求。Hadoop的核心组件...

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

    1. 在HBase与Hadoop整合时,需要注意哪些权限问题? 2. 如何避免临时目录导致的问题? 3. 版本一致性的重要性是什么? **详细解答:** **1. 权限注意事项:** - 确保HBase和Hadoop使用相同的用户身份运行,避免...

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

    本文将详细介绍如何在 Hadoop 环境下实现 Hive 与 HBase 的整合,重点介绍如何通过 Hive 批量导入数据到 HBase。 #### 二、版本说明 为了确保教程的可操作性和准确性,本文使用的软件版本如下: - **Hadoop**: ...

    hive与hbase整合经验谈.pdf

    整合Hive与HBase可以实现利用Hadoop生态系统中不同组件的优势,实现数据处理的高性能和高效率。了解整合后的结构、原理和使用方法对于构建高效的大数据处理系统至关重要。通过实践中的经验分享,可以使整合过程更加...

    Hadoop+Spark+Hive+HBase+Oozie+Kafka+Flume+Flink+ES+Redash等详细安装部署

    在大数据领域,构建一个完整的生态系统是至关重要的,其中包括多个组件,如Hadoop、Spark、Hive、HBase、Oozie、Kafka、Flume、Flink、Elasticsearch和Redash。这些组件协同工作,提供了数据存储、处理、调度、流...

    zookeeper+hadoop+hbase+hive(集成hbase)安装部署教程(超详细).docx

    jdk1.8.0_131、apache-zookeeper-3.8.0、hadoop-3.3.2、hbase-2.4.12 mysql5.7.38、mysql jdbc驱动mysql-connector-java-8.0.8-dmr-bin.jar、 apache-hive-3.1.3 2.本文软件均安装在自建的目录/export/server/下 ...

    hadoop hive hbase安装过程

    ### Hadoop、Hive、HBase 的安装配置详解 #### 一、Hadoop 安装配置 ##### 1. 创建用户与安装 JDK 在安装 Hadoop 前,首先需要创建一个专用的用户账户用于运行 Hadoop 相关服务,并确保 Java 环境已经正确安装。 ...

    hive-hbase-handler-1.2.1.jar

    被编译的hive-hbase-handler-1.2.1.jar,用于在Hive中创建关联HBase表的jar,解决创建Hive关联HBase时报FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.DDLTask. org.apache.hadoop....

    毕业设计基于hadoop+hive+hbase+echarts的招聘信息大数据分析平台源码+论文PDF(高分毕设)

    毕业设计基于hadoop+hive+hbase+echarts的招聘信息大数据分析平台源码+论文PDF(高分毕设)毕业设计基于hadoop+hive+hbase+echarts的招聘信息大数据分析平台源码+论文PDF(高分毕设)毕业设计基于hadoop+hive+hbase+...

    小牛学堂-大数据24期-04-Hadoop Hive Hbase Flume Sqoop-12天适合初学者

    小牛学堂-大数据24期-04-Hadoop Hive Hbase Flume Sqoop-12天适合初学者.txt

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

    不同版本的Hadoop可能会对HDFS的API或MapReduce的执行模型进行优化,因此,HBase和Hive需要与相应的Hadoop版本保持兼容。例如,Hadoop 2.x引入了YARN资源管理系统,这可能需要HBase和Hive的更新版本来适应。 对于...

    毕业设计基于hadoop+hive+hbase+echarts的招聘信息大数据分析平台源码+文档说明(高分毕设)

    毕业设计基于hadoop+hive+hbase+echarts的招聘信息大数据分析平台源码+文档说明(高分毕设)毕业设计基于hadoop+hive+hbase+echarts的招聘信息大数据分析平台源码+文档说明(高分毕设)毕业设计基于hadoop+hive+...

Global site tag (gtag.js) - Google Analytics