Hive整合hbase及导入数据测试

 1,Hive与Hbase的区别

 1.1Hive(数据仓库)

  Hive是由Facebook实现并开源,是基于Hadoop的一个数据仓库工具,底层依赖于HDFS存储数据,利用MapReduce进行计算,可以将结构化的数据映射为一张数据库表,并提供HQL。Hive的本质是将 SQL 语句转换为 MapReduce 任务运行。Hive提供了三种协议访问 Hive数据:Thrift RPC、JDBC、ODBC。

注意:以上是Hive之前的定义。如今随着大数据的发展Hive逐步舍弃了MR。Hive2.X版本已经建议不再使用MR,而在新出来的Hive3.X版本中,直接舍弃了使用MR作为底层运行机制,改为使用Tez。后来由于Spark的出现,许多公司开始使用Spark代替MapReduce作为Hive的执行引擎,使Hive运行在Spark上。也就是Hive on Spark。

1.2Hbase(数据库)

  HBase 是 BigTable 的开源(源码使用 Java 编写)版本。是 Apache Hadoop 的数据库,是建立在 HDFS 之上,被设计用来提供高可靠性、高性能、列存储、可伸缩、多版本的非关系型的分布式数据存储系统,实现对大型数据的实时、随机的读写访问。

HBase 依赖于 HDFS 做底层的数据存储,BigTable 依赖 Google GFS 做数据存储。

HBase 依赖于 MapReduce 做数据计算,BigTable 依赖 Google MapReduce 做数据计算。

HBase 依赖于 ZooKeeper 做服务协调,BigTable 依赖 Google Chubby 做服务协调。

1.3hive与hbase区别

  Hbase,其实是Hadoop database的简称,是一种NoSQL数据库,主要适用于海量明细数据(十亿、百亿)的随机实时查询,如日志明细、交易清单、轨迹行为等HBase作为支持查询的数据管理器,仅HBase不能用于分析查询,因为它没有专用的查询语言。为了运行CRUD(创建,读取,更新和删除)和搜索查询,它具有基于JRuby的shell,该shell提供了简单的数据操作可能性,例如Get,Put和Scan。

  Hive,Hadoop数据仓库,通过SQL来处理和计算HDFS的数据,Hive会将SQL翻译为Mapreduce来处理数据,适用于离线的批量数据计算。Hive作为分析查询引擎,是专门为启用数据分析而设计的,专用的Hive查询语言(HiveQL)与SQL类似。最初,Hive将HiveQL查询转换为Hadoop MapReduce作业执行,而如今,Apache Hive还能够将查询转换为Apache Tez或Apache Spark作业。2.Hive整合Hbase

实验环境准备:

Hive-2.3.3

Hbase-1.3.1

2.1实验原理:

Hive与HBase整合的实现是利用两者本身对外的API接口互相通信来完成的,其具体工作交由Hive的lib目录中的hive-hbase-*.jar工具类来实现

Hive整合hbase及导入数据测试_第1张图片

整合的意义:

(一)通过Hive把数据加载到HBase中,数据源可以是文件也可以是Hive中的表。

(二)通过整合,让HBase支持JOIN、GROUP等SQL查询语法。

(三)通过整合,不仅可完成HBase的数据实时查询,也可以使用Hive查询HBase中的数据完成复杂的数据分析。

(四)通过结合,可以设计一个高速写入,后面接入实时分析的海量数据分析系统。

3.实验步骤

3.1查看进程

xcall.sh jps

cd /opt/software/hive-2.3.3/lib/

ll

Hive整合hbase及导入数据测试_第2张图片

Hive整合hbase及导入数据测试_第3张图片

3.2修改hive-site.xml文件以及hive-env.sh文件配置(仅当hbase为集群模式时)

hive-site.xml:

    hive.zookeeper.quorum

    node01,node02,node03

    hbase.zookeeper.quorum

    node01,node02,node03

    hive.aux.jars.path

    file:///opt/software/hive/lib/hive-hbase-handler-2.3.3.jar,file:///opt/software/hive/lib/zoo

keeper-3.4.10.jar,file:///opt/software/hive/lib/hbase-client-1.3.1.jar,file:///opt/software/hive/lib/hbase-common-1.3.1-tests.jar,file:///opt/software/hive/lib/hbase-server-1.3.1.jar,file:///opt/software/hive/lib/hbase-common-1.3.1.jar,file:///opt/software/hive/lib/hbase-protocol-1.3.1.jar,file:///opt/software/hive/lib/htrace-core-3.1.0-incubating.jar

    

Hive整合hbase及导入数据测试_第4张图片

Hive整合hbase及导入数据测试_第5张图片

 ​​​​Hive整合hbase及导入数据测试_第6张图片

3.3将hbase lib目录下的所有文件复制到hive lib目录中

/opt/software/hive/lib目录下:

rm -rf hbase-*

/opt/software/hbase/lib目录下:

cp * /opt/software/hive/lib/

Hive整合hbase及导入数据测试_第7张图片

 3.4在hive中创建映射表,创建完成后在hbase中查看是否同时在hbase中也创建成功(创建之前要先启动hbase

Hive整合hbase及导入数据测试_第8张图片

 Hive整合hbase及导入数据测试_第9张图片

 Hive整合hbase及导入数据测试_第10张图片

4,导入数据测试:

Hive 导入数据,Hbase查看数据:

1vi hive_hbase.txt

Hive整合hbase及导入数据测试_第11张图片

2)在hive中创表,导入数据:

create table test(id int,name string) row format delimited fields terminated by ',';

load data local inpath "/opt/testdata/hive/hive_hbase.txt" into table test;

select * from test;

Hive整合hbase及导入数据测试_第12张图片

 3)将hive的test表中的数据加载到hive_hbase_test表

insert overwrite table hive_hbase_test select * from test;

Hive整合hbase及导入数据测试_第13张图片

4)通过Hbase put添加数据,Hive查看添加数据

1)在hbase shell中对表hive_hbase_test添加数据

put 'hive_hbase_test','4','cf1:name','mipeng'

2)在hive中查看数据是否添加进来:

select * from hive_hbase_test;

Hive整合hbase及导入数据测试_第14张图片

 Hive整合hbase及导入数据测试_第15张图片

注意事项:

整合完成之后,如果在hive当中创建的为内部表,那么在hive中删除该表时,hbase上对应的表也会删除;如果在hive当中创建的为外部表,那么在hive中删除该表时,不会影响hbase。

补充:

hive中创建外部映射表步骤:

1.在hbase中创建对应名称、对应列簇的表:

create 'hbase_score1','cf'

 2.在hive中创建外部表:

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

3.在hive中向外部表内导入数据:(参考导入数据测试)

4.在hbase中添加数据:(参考导入数据测试)

Hive整合hbase及导入数据测试_第16张图片

Hive整合hbase及导入数据测试_第17张图片Hive整合hbase及导入数据测试_第18张图片

 

你可能感兴趣的:(hive,hbase,hadoop)