目录
什么是HBase?
1.首先它是一个非关系型数据库,不对数据进行计算、加工,仅限于查询与存储,该数据库里面存储的是结构化与非结构化数据,因此不适合对其进行关联查询,像SQL语言那种JOIN操作是无法实现的。
2.基于hadoop架构,将数据存储至HDFS的DataNode中,提供高容错的支持,HBase中的RegionServer对其以region的格式进行管理,里面存储数据的模式是K-V键值对形式
3.需要zookeeper的支持以及提供master的高可用、RegionServer的监控、元数据的入口以及集群配置的维护等工作,客户端在HBase中进行读写需要访问zookeeper获取元数据表所在的RegionServer。
4.在面对大量数据的情况下,通过划分了region以及设置了合理的rowkey,能够提供高效的数据访问以及查询速度。
什么是Hive?
1.hive只是一个数据库管理工具,本质其实就相当于将HDFS中已经存储的文件在Mysql中做了一个双射关系,提供了一个类SQL的查询语言,程序员上手简单。
2.和HBase一样,同样基于hadoop架构,将数据文件存储至DN上,编写的HQL语言最终通过hive的解析器、优化器、编译器、执行器转换为MapReduce运行。
3.由于是通过MR进行查询,一个简单的查询结果可能通过几个MR完成,因此延时较高。
异同之处
在大致了解了Hive与HBase后,我们可以不难看出,这两者没有什么必然联系,就像是大象与鲸鱼般的关系,任意一处都是不同点。
但是有一些相同点可以总结得出:
1.都基于hadoop架构,都在HDFS上进行数据存储。
2.都能够对数据进行增、删、改、查操作。
Hive-On-HBase
配置文件的修改
在hive-site.xml中添加zookeeper的参数属性:
<property>
<name>hive.zookeeper.quorum</name>
<value>long1,long2,long3</value>
</property>
#填主机名
<property>
<name>hive.zookeeper.client.port</name>
<value>2181</value>
</property>
Hive中创建一个外部表关联HBase中的表
首先在hive中创建外部表
CREATE EXTERNAL TABLE relevance_hbase_student(
id int,
name string,
age int)
STORED BY
'org.apache.hadoop.hive.hbase.HBaseStorageHandler'
WITH SERDEPROPERTIES ("hbase.columns.mapping" =
":key,info:name,info:age")
TBLPROPERTIES ("hbase.table.name" = "hbase_student_table");
这样就能使用hive函数进行分析了
select * from relevance_hbase_student;