配置 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. Inno Setup的使用笔记

    Inno Setup的使用笔记 分类: Install Setup 2013-02-02 15:33 1002人阅读 评论(0) 收藏 举报 项目需要,前些天学习了Inno Setup这跨打包工具的使 ...

  2. Apache 中 .htaccess 文件设置技巧16则

    .htaccess 文件 (Hypertext Access file) 是Apache Web服务器的一个非常强大的配置文件,对于这个文件,Apache有一堆参数可以让你配置出几乎随心所欲的功能.. ...

  3. CSS 实现:父元素包含子元素,子元素垂直居中布局

    ☊[实现要求]:父元素包含子元素,子元素垂直居中布局 <div class="demo5"> <div class="child">A& ...

  4. codeforce The Art of Dealing with ATM

    题目大意 ATM取款机有n种不同的钱币kind[i],每次取款允许吐出不超过k张钱币,且钱币的种类数不能超过2(一开始没理解2的意思),现在有q次取款,钱数为ques,问ATM能否凑出这样的钱,若能的 ...

  5. Sqlserver 笔记 持续更新

    1.sp_spaceused : sp_spaceused table_name ----------------------------------------------------------- ...

  6. C++ Vector 用法总结

    1, 头文件#include <vector> using namespace std; 2,定义与初始化 一般结合模板来使用 vector <Elem>           ...

  7. POJ 3268 Silver Cow Party (双向dijkstra)

    题目链接:http://poj.org/problem?id=3268 Silver Cow Party Time Limit: 2000MS   Memory Limit: 65536K Total ...

  8. Spring AOP 实现写事件日志功能

    什么是AOP?AOP使用场景?AOP相关概念?Spring AOP组件?如何使用Spring AOP?等等这些问题请参考博文:Spring AOP 实现原理 下面重点介绍如何写事件日志功能,把日志保存 ...

  9. 准备开始自己搞企业管理软件,从openerp入手

    公司运行了半年多,人还比较少,只用了一些即时通讯工具,还有svn等基本的工具 记账用的是gnucash 其他的管理急需相应的软件,找了很长时间也没有合适的 想了想,还是从开源的openerp odoo ...

  10. 利用jdbc连接oracle数据库

    JDBC是Sun公司制定的一个可以用Java语言连接数据库的技术. 一.JDBC基础知识 JDBC(Java Data Base Connectivity,java 数据库连接)是一种用于执行SQL语 ...