配置 hive 与 hbase 整合的目的是利用 HQL 语法实现对 hbase 数据库的增删改查操作,基本原理就是利用两者本身对外的API接口互相进行通信,两者通信主要是依靠hive_hbase-handler.jar工具类。 但请注意:使用Hive操作HBase中的表,只是提供了便捷性,前面章节已经介绍,hiveQL引擎使用的是MapReduce,对于性能上,表现比较糟糕,在实际应用过程中可针对不同的场景酌情使用。

注意:本文介绍的内容适用的版本见我前面章节,HDP2.4.2 ( HBase-1.1.2, hive-1.2.1, hadooop-2.7.1), 文章命令中的路径根据你配置集群选择的安装路径不同而可能不一样,请根据实际安装目录进行调整。

目录:

  • hive配置
  • dfs权限
  • 测试

hive配置:


  • 在<HIVE_HOME>/lib 目录需要有下面的这些文件,其中(guava-14.0.1.jar、zookeeper-3.4.6.2.4.2.0-258.jar、hive-hbase-handler-1.2.1000.2.4.2.0-258.jar、htrace-core-3.1.0-incubating.jar)在hive安装时已经包含,列表中的其它文件需要从 <HBASE_HOME>/lib 下copy. (注意: 如果 hive 安装时自带的文件版本与 hbase/lib 下的不一致时,应先删除 hive/lib 下的文件,再从 hbase/lib 下copy 过来)

    guava-14.0.1.jar
    zookeeper-3.4.6.2.4.2.0-258.jar
    htrace-core-3.1.0-incubating.jar
    hbase-common-1.1.2.2.4.2.0-258.jar
    hbase-common-1.1.2.2.4.2.0-258-tests.jar
    hbase-client-1.1.2.2.4.2.0-258.jar
    hbase-server-1.1.2.2.4.2.0-258.jar
    hbase-protocol-1.1.2.2.4.2.0-258.jar
    hive-hbase-handler-1.2.1000.2.4.2.0-258.jar
  • 在 hbase master 主机 hdp4上,执行下面的命令,将文件copy至 hdp1、hdp2、hdp3 的<HIVE_HOME>/lib 目录
  • hdp4命令:cd /usr/hdp/2.4.2.0-258/hbase/lib
  • hdp4命令:scp hbase-common-1.1.2.2.4.2.0-258.jar  hbase-common-1.1.2.2.4.2.0-258-tests.jar hbase-client-1.1.2.2.4.2.0-258.jar hbase-server-1.1.2.2.4.2.0-258.jar hbase-protocol-1.1.2.2.4.2.0-258.jar hdp1:/usr/hdp/2.4.2.0-258/hive/lib    (再次执行上面命令,修改红色标注机器名更新文件至 hdp2,hdp3)
  • 在 ambari 管理界面修改 hive-site.xml 配置文件,hive --> advanced --> custom hive-site, 选择 “ Add Property ... ", 弹出框中: key输入:hive.aux.jars.path, Value的值就是 <HIVE_HOME>/lib 目录下上面列出文件名(绝对地址),如下:
    /usr/hdp/2.4.2.0-258/hive/lib/guava-14.0.1.jar,/usr/hdp/2.4.2.0-258/hive/zookeeper-3.4.6.2.4.2.0-258.jar,/usr/hdp/2.4.2.0-258/hive/hive-hbase-handler-1.2.1000.2.4.2.0-258.jar,/usr/hdp/2.4.2.0-258/hive/hbase-common-1.1.2.2.4.2.0-258.jar,/usr/hdp/2.4.2.0-258/hive/hbase-server-1.1.2.2.4.2.0-258.jar,/usr/hdp/2.4.2.0-258/hive/hbase-client-1.1.2.2.4.2.0-258.jar,/usr/hdp/2.4.2.0-258/hive/hbase-common-1.1.2.2.4.2.0-258-tests.jar,/usr/hdp/2.4.2.0-258/hive/htrace-core-3.1.0-incubating.jar,/usr/hdp/2.4.2.0-258/hive/hbase-protocol-1.1.2.2.4.2.0-258.jar
  • 上一步实际就是在 hive-site.xml (/etc/hive/2.4.2.0-258/0) 配置文件中增加一个参数 ,不让手工修改的原因是,hive服务重启后,手工修改的配置会被冲掉。
  • 在ambari中修改完参数并保存时会生成新的配置版本,同时自动检测此参数修改对其它主机和组件的影响,提示组件服务重启,按提示操作即可。
  • 将 hdp4 主机上 hbase/conf 下的hbase-site.xml文件复制到所有hadoop节点的hadoop/conf下

dfs权限:


  • 进入ambari管理界面,选择 HDFS --> Advanced --> Advanced hdfs-site ,设置 dfs.permissions.enabled 属性为: false 如图:

 测试:


  • 使用 xshell 连接 hive 主机 hdp1
  • 命令: cd /usr/hdp/2.4.2.0-258/hive/bin   (切换至 hive/bin 目录)
  • 单节点连接hbase命令: beeline -hiveconf  hbase.master=hdp4.60000    (hdp4是hbase的master节点,见hd2.4安装第五部分)
  • 以集群连接hbase命令:beeline -hiveconf  hbase.zookeeper.quorum=R  (意思是由zookeeper来分配主机,HBase使用的zookeeper集群,默认端口是2181,可以不指定,如果修改过zookeeper端口,则为:zkNode1:2222,zkNode2:2222,zkNode3:2222)
  • beeline: !connect jdbc:hive2://hdp1:10000/default      (连接hive)
  • 测试: show databases;    (查看 hive 中所有的数据库,验证hive连接成功否)
  • 执行下面的sql, 创建 hive 的扩展表与 hbase 数据库 stocksInfo 表关联。 (见 HBase(二): c#访问HBase之股票行情Demo
    CREATE EXTERNAL TABLE if not exists StocksInfo(
    Rowkey string,
    Code string,
    Name string
    )
    STORED BY 'org.apache.hadoop.hive.hbase.HBaseStorageHandler'
    WITH SERDEPROPERTIES('hbase.columns.mapping' = ':key,d:Code,d:Name')
    TBLPROPERTIES('hbase.table.name' = 'StocksInfo');
  • hbase.columns.mapping: Hive表和HBase表的字段映射关系,分别为:Hive表中第一个字段映射:key(rowkey),d:code (d 指hbase 数据库 stocksInfo 表列族,code 列名)
  • 表创建成功后,执行 : select * from stocksInfo; 查一下,如下则OK
  • hive 扩展表可理解为关系型数据库里面的视图, 表删除时,并不会删除数据,我在应用过程中,大部分场景是与 hbase 数据关联。
  • 如果创建 hive 实表与 hbase 关联时,通过 hiveQL 进行的创建表、增加数据等操作均会影响到 hbase 数据库中的数据,具体会在以后的章节介绍。

Hive(五):hive与hbase整合的更多相关文章

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

    大数据工具篇之Hive与HBase整合完整教程 一.引言 最近的一次培训,用户特意提到Hadoop环境下HDFS中存储的文件如何才能导入到HBase,关于这部分基于HBase Java API的写入方 ...

  2. HBase(六)HBase整合Hive,数据的备份与MR操作HBase

    一.数据的备份与恢复 1. 备份 停止 HBase 服务后,使用 distcp 命令运行 MapReduce 任务进行备份,将数据备份到另一个地方,可以是同一个集群,也可以是专用的备份集群. 即,把数 ...

  3. hive与hbase整合过程

    实现目标 Hive可以实时查询Hbase中的数据. hive中的表插入数据会同步更新到hbase对应的表中. 可以将hbase中不同的表中的列通过 left 或 inner join 方式映射到hiv ...

  4. 《OD大数据实战》HBase整合MapReduce和Hive

    一.HBase整合MapReduce环境搭建 1. 搭建步骤1)在etc/hadoop目录中创建hbase-site.xml的软连接.在真正的集群环境中的时候,hadoop运行mapreduce会通过 ...

  5. Hadoop Hive与Hbase整合+thrift

    Hadoop Hive与Hbase整合+thrift 1.  简介 Hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供完整的sql查询功能,可以将sql语句 ...

  6. Hive与Hbase整合

    Hive与Hbase整合 1.文档 Hive HBase Integration 2.拷贝jar文件 2.1.把Hbase的lib目录下面的jar文件全部拷贝到Hive的lib目录下面 cd /hom ...

  7. Hive篇---Hive与Hbase整合

     一.前述 Hive会经常和Hbase结合使用,把Hbase作为Hive的存储路径,所以Hive整合Hbase尤其重要. 二.具体步骤 hive和hbase同步https://cwiki.apache ...

  8. HIVE HBASE 整合

    一直想将hbase 与hive整合在一起,因为公司项目工期一期紧似一期,故一直推后.还不知道推到什么时候呢. 今天尝试编译hive,看着官方文档.感觉非常easy: 1.svn co http://s ...

  9. hadoop 1.1.2和 hive 0.10 和hbase 0.94.9整合

    今天弄了一下hive0.10和hbase0.94.9整合,需要设置的并不多,但是也遇到了一些问题. 1.复制jar包 拷贝hbase-0.94.9.jar,zookeeper-3.4.5.jar,pr ...

随机推荐

  1. 在magneto系统中输出tier price的最小值

    2012年6月16日星期六 Asia/Shanghai上午11时39分22秒 有的时候,我们想输出产品的tier price 的最小值!如图: 下面是解决的办法: 1. 在catalog/produc ...

  2. Http的请求的全过程

    http请求的详细过程 HTTP是一个应用层的协议,在这个层的协议,是一种网络交互需要遵守的一种协议规范. 1.连接:当输入一个请求时,首先建立一个socket连接,因为socket是通过ip和端口建 ...

  3. Web页面性能测试工具浅析

    http://www.cnblogs.com/fo0ol/p/3297054.html 做Web开发,难免要对自己开发的页面进行性能检测,自己写工具检测,工作量太大.网上有几款比较成熟的检测工具,以下 ...

  4. HDU 1001 Sum Problem(AC代码)

    #include <stdio.h> int main(){ int k,sum; while(scanf("%d",&k)!=EOF){ ==){ sum=( ...

  5. 博客Mac桌面编辑器-cnblogs

    Mac篇 公司的机器内存只有8G,不想再大动干戈为了Windows Live Writer装个Vmware了,谷歌娘讲MarsEdit不错,那就试试用这个写个试用贴呗   就是这货了,果然是火星来的, ...

  6. 完美解决IE6不支持position:fixed的bug

    示例代码: <!DOCTYPE html><html><head><meta http-equiv="Content-Type" cont ...

  7. ZOJ 1048 Financial Management

    原题链接 题目大意:给出12个月的收入,求一个平均值. 解法:没什么好说的,就是一个除法. 参考代码: #include<stdio.h> int main(){ int i; float ...

  8. 深入理解HTTP

    深入理解HTTP协议(转) http协议学习系列 1. 基础概念篇 1.1 介绍 HTTP是Hyper Text Transfer Protocol(超文本传输协议)的缩写.它的发展是万维网协会(Wo ...

  9. Oracle 删除用户和表空间

    版权声明:本文为博主原创文章,未经博主允许不得转载. Oracle 使用时间长了, 新增了许多user 和tablespace. 需要清理一下 对于单个user和tablespace 来说, 可以使用 ...

  10. leetcode 108 Convert Sorted Array to Binary Search Tree ----- java

    Given an array where elements are sorted in ascending order, convert it to a height balanced BST. 给一 ...