【博学谷学习记录】超强总结,用心分享|狂野大数据课程 【HBase和Hive的整合】

HBase和Hive的对比说明

HIVE: 是一个数据仓库的工具, 主要是用于对HDFS上数据进行映射, 采用SQL的方式操作数据, HIVE主要适用于离线数据统计分析操作, 延迟性比较高, SQL最终会翻译为MR

HBase: 是一个nosql型数据库, 主要是用于存储数据, 不支持SQL, 也不支持join操作, 延迟性比较低, 交互性比较强

HBase和HIVE在实际生产环境中, 也是可以同时使用的, 我们可以基于HIVE加载HBase中数据, 从而实现离线数据分析工作, 同时还可以使用HBase做实时查询数据操作, HBase后续也可以和Phoenix集成, 可以通过SQL方式查询HBase中的数据, 从而实现实时数据检索(即席查询)

HBase如何集成Hive 

集成步骤:

1- 拷贝HIVE提供的一个专门用于集成HBase的通信jar包, 将此jar包拷贝到HBase的lib目录下

hive安装在node1节点上: 在node1执行操作
cd /export/server/hive/lib/
cp hive-hbase-handler-3.1.2.jar  /export/server/hbase/lib/
​
拷贝后, 将此jar包, 分发给node2和node3的hbase的lib目录
cd /export/server/hbase/lib/
scp hive-hbase-handler-3.1.2.jar node2:$PWD
scp hive-hbase-handler-3.1.2.jar node3:$PWD

2- 修改HIVE的配置文件: hive-site.xml

cd /export/server/hive/conf
vim hive-site.xml

输入i , 进入插入模式:

添加以下内容:
    <property>
        <name>hive.zookeeper.quorum</name>
        <value>node1,node2,node3</value>
    </property>

    <property>
        <name>hbase.zookeeper.quorum</name>
        <value>node1,node2,node3</value>
    </property>

    <property>
        <name>hive.server2.enable.doAs</name>
        <value>false</value>
    </property>

3- 修改hive的配置文件: hive-env.sh

cd /export/server/hive/conf

vim hive-env.sh

输入i , 进入插入模式:
添加以下内容: 
export HBASE_HOME=/export/server/hbase-2.1.0

4- 启动相关的软件

先zookeeper  然后启动 hadoop集群  接着启动 HIVE 和 HBase

注意: 每启动完一个软件, 一定要确保是启动ok的

启动zookeeper:  三个节点都要启动
cd /export/server/zookeeper/bin
./zkServer.sh start

查看是否启动成功:
    jps / ./zkServer.sh status 

启动 hadoop:  node1执行即可
    start-all.sh   

校验: 查看进程是否全部都正常启动 以及通过 web ui查看是否启动良好


启动HBase:  node1执行即可
    start-hbase.sh

校验: 查看进程是否全部都正常启动 以及通过 web ui查看是否启动良好


启动hive:  node1执行
    cd /export/server/hive/bin
    nohup ./hive --service metastore &
    nohup ./hive --service hiveserver2 &

校验: 
    jps 以及 通过 ./beeline连接测试

 集成操作:

1-在hbase中创建一张表, 并且向表添加一些数据 (准备工作)

create 'hbase_hive_score', 'cf'

put  'hbase_hive_score','rk001','cf:name','张三'
put  'hbase_hive_score','rk001','cf:age',20
put  'hbase_hive_score','rk001','cf:address','北京'
put  'hbase_hive_score','rk001','cf:score',92

put  'hbase_hive_score','rk002','cf:name','李四'
put  'hbase_hive_score','rk002','cf:age',28
put  'hbase_hive_score','rk002','cf:address','上海'
put  'hbase_hive_score','rk002','cf:score',89

put  'hbase_hive_score','rk003','cf:name','王五'
put  'hbase_hive_score','rk003','cf:age',26
put  'hbase_hive_score','rk003','cf:address','广州'
put  'hbase_hive_score','rk003','cf:score',94

put  'hbase_hive_score','rk004','cf:name','赵六'
put  'hbase_hive_score','rk004','cf:age',23
put  'hbase_hive_score','rk004','cf:address','深圳'
put  'hbase_hive_score','rk004','cf:score',96

 

2- 在hive集成hbase的对应表  

集成的格式:
create external table  库名.表名(
    字段1 数据类型,
    字段2 数据类型,
    字段3 数据类型,
    ....
)
stored by 'org.apache.hadoop.hive.hbase.HBaseStorageHandler' with serdeproperties('hbase.columns.mapping'=':key,列族:列名,列族:列名...') tblproperties('hbase.table.name'='表名')

注意事项: 
    1) 表名: 建议与HBase表名保持一致(可以不一致)
    2) 定义字段的时候, 第一个字段为主键字段, 但是不能添加primary key, 其余字段与hbase中列名建议保持一致(可以不一致)
    3) 在mapping中设置映射关系 :
        :key 表示rowkey , 剩余其他列, 正常设置即可
        mapping中设置顺序与表中字段的顺序 和 数量都要保持一致, 因为是按序映射的
    4) hbase表名: 设置对应在hbase的哪个表


实操: 
create database day08_hbase_hive;

create external table  day08_hbase_hive.hbase_hive_score(
    id string,
    name string,
    age int,
    address string,
    score int
)
stored by 'org.apache.hadoop.hive.hbase.HBaseStorageHandler' with serdeproperties('hbase.columns.mapping'=':key,cf:name,cf:age,cf:address,cf:score') tblproperties('hbase.table.name'='hbase_hive_score');

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值