配置 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. qq红心头像[中国心]制作教程之Photoshop教程

    QQ红心头像[中国心]制作教程之Photoshop教程 中国最大的WEB开发资源网站及技术社区,阿里西西WEB开发 最近网络流传着很多qq红心头像,msn红心头像,中国心图标等等,最有些搞笑的是还有正 ...

  2. 1分钟学会Markdown语法

    markdown 简明语法 基本符号 *,-,+ 3个符号效果都一样,这3个符号被称为 Markdown符号 空白行表示另起一个段落 `是表示inline代码,tab是用来标记 代码段,分别对应htm ...

  3. 堆排序(C++版)

    #include <iostream> using namespace std; void HeapAdjust(int* a, int start, int n) { int max=s ...

  4. C#裁剪照片并保存

    /// <summary>    ///     /// </summary>    /// <summary>    /// 生成缩略图    /// </ ...

  5. html---文本框样式;

    一.一个单行文本框的例子 <form name="form1" action="mailto:3400982550@qq.com" method=&quo ...

  6. NOIP2011 普及組 統計單詞數

    题目描述 一般的文本编辑器都有查找单词的功能,该功能可以快速定位特定单词在文章中的位置,有的还能统计出特定单词在文章中出现的次数. 现在,请你编程实现这一功能,具体要求是:给定一个单词,请你输出它在给 ...

  7. Codeforces Round #131 (Div. 2)

    A. System of Equations \(a\)的范围在\(\sqrt n\)内,所以暴力枚举即可. B. Hometask 需要被2.5整除,所以末位必然为0,如果0没有出现,则直接返回-1 ...

  8. 顺序表及其多种实现方式 --- C/C++

    所谓顺序表,即线性表的顺序存储结构.下面给出的是数据结构---线性表的定义. ADT List{ 数据对象: 线性表的数据对象的集合为{a1,a2,a3,...,an},每个元素的类型为ElemTyp ...

  9. linux设备驱动程序该添加哪些头文件以及驱动常用头文件介绍(转)

    原文链接:http://blog.chinaunix.net/uid-22609852-id-3506475.html 驱动常用头文件介绍 #include <linux/***.h> 是 ...

  10. Java——设计模式(装饰模式_IO)

     /* * 装饰设计模式: *  对一组对象的功能进行增强时,就可以使用该模式进行问题的解决; * 装饰和继承都能实现一样的特点:  就是进行功能的扩转增强. * */ public class  ...