Hive(五):hive与hbase整合
配置 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整合的更多相关文章
- 大数据工具篇之Hive与HBase整合完整教程
大数据工具篇之Hive与HBase整合完整教程 一.引言 最近的一次培训,用户特意提到Hadoop环境下HDFS中存储的文件如何才能导入到HBase,关于这部分基于HBase Java API的写入方 ...
- HBase(六)HBase整合Hive,数据的备份与MR操作HBase
一.数据的备份与恢复 1. 备份 停止 HBase 服务后,使用 distcp 命令运行 MapReduce 任务进行备份,将数据备份到另一个地方,可以是同一个集群,也可以是专用的备份集群. 即,把数 ...
- hive与hbase整合过程
实现目标 Hive可以实时查询Hbase中的数据. hive中的表插入数据会同步更新到hbase对应的表中. 可以将hbase中不同的表中的列通过 left 或 inner join 方式映射到hiv ...
- 《OD大数据实战》HBase整合MapReduce和Hive
一.HBase整合MapReduce环境搭建 1. 搭建步骤1)在etc/hadoop目录中创建hbase-site.xml的软连接.在真正的集群环境中的时候,hadoop运行mapreduce会通过 ...
- Hadoop Hive与Hbase整合+thrift
Hadoop Hive与Hbase整合+thrift 1. 简介 Hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供完整的sql查询功能,可以将sql语句 ...
- Hive与Hbase整合
Hive与Hbase整合 1.文档 Hive HBase Integration 2.拷贝jar文件 2.1.把Hbase的lib目录下面的jar文件全部拷贝到Hive的lib目录下面 cd /hom ...
- Hive篇---Hive与Hbase整合
一.前述 Hive会经常和Hbase结合使用,把Hbase作为Hive的存储路径,所以Hive整合Hbase尤其重要. 二.具体步骤 hive和hbase同步https://cwiki.apache ...
- HIVE HBASE 整合
一直想将hbase 与hive整合在一起,因为公司项目工期一期紧似一期,故一直推后.还不知道推到什么时候呢. 今天尝试编译hive,看着官方文档.感觉非常easy: 1.svn co http://s ...
- 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 ...
随机推荐
- HDU 5045
http://acm.hdu.edu.cn/showproblem.php?pid=5045 题意:n个学生m道题,一个n*m的矩阵代表第n个学生解第m题AC的概率,任意两学生做题数差距不能大于1,问 ...
- [转]BEHAVOUR TREE
自从开博以来,每天都会关心一下博客的访问情况,看到一些朋友的订阅或者访问,不胜欣喜,也促使我去写一些更好的博文,来和大家分享和交流,从访问 统计来看,有相当一部分是来自于搜索引擎的流量,关键字以“行为 ...
- vs2005无法启动
vs2005无法启动 今天打开vs.net 2005,VS2005无法启动了,出现初始化界面后,一直没有响应,后来在网上找到问题,发现是前段时间装VMWARE后,修改注册表引起的问题 转载如下 电 ...
- JAVA存取PG大对象类型OID数据
转载地址:http://my.oschina.net/liuyuanyuangogo/blog/151537 pg用大对象存储二进制数据的老文档:http://jdbc.postgresql.org/ ...
- tyvj1013 - 找啊找啊找GF ——二维背包变种
题目链接:https://www.tyvj.cn/Problem_Show.aspx?id=1013 好吧,这题没节操=_= 状态f[u,v,i]表示:消费u的人民币和v的人品同时泡到i个mm所需要的 ...
- leetcode 144. Binary Tree Preorder Traversal ----- java
Given a binary tree, return the preorder traversal of its nodes' values. For example:Given binary tr ...
- phpwind8.7升级9.0.1过程(三)20130107升级到20130227
升级之前一定要备份以下内容 1.网站根目录所有文件 2.网站数据库 在升级到20130227版本的时候出现以下问题. 问题: 问题原因:本地服务器不支持fsockopen()函数,此函数需要开启,但是 ...
- jsonp跨域js
http://www.cnblogs.com/yuzhongwusan/archive/2012/12/11/2812849.html window.opener用法 http://www.cnblo ...
- Linux perf tools
http://techblog.netflix.com/2015/08/netflix-at-velocity-2015-linux.html
- win7下安装配置tomcat,java运行环境
转 http://www.cnblogs.com/pannysp/archive/2012/03/07/2383364.html 1.下载JDK,安装 官网下载地址:http://java.sun.c ...