Hbase,hive关系
在大数据体系中,hbase,hive处于协作关系,Hbase主要解决实时数据查询问题,Hive主要解决数据处理和计算问题,一般是配合使用。大体流程如下:
Hbase
基于Hadoop数据库,是一种NoSQL数据库,主要适用于海量明细数据(十亿、百亿)的随机实时查询;
hive
Hive是Hadoop数据仓库,严格来说,不是数据库,适用于离线的批量数据计算。通过元数据来描述Hdfs上的结构化文本数据,通俗点来说,就是定义一张表来描述HDFS上的结构化文本,方便我们处理数据。当前很多SQL ON Hadoop的计算引擎均用的是hive的元数据,通过SQL来处理和计算HDFS的数据,Hive会将SQL翻译为Mapreduce来处理数据;
特殊场景
基于业务场景不同,在某些情况下,hive存储所带来的弊大于利,而hbase能完美解决相应问题。
场景:hive表存在大量分区,表内数据过多,单条记录过小。
由于hive的存储机制,会导致在hdfs上表现为表对应的目录过多,同时会爆发小文件过多,远远达不到hdfs的默认块大小,却要占有一个默认块的物理容量,造成了HDFS容量利用率低,同时目录过多,小文件过多会对namenode产生很大压力。
此时,hbase便体现了强大存储能力,根据hbase存储机制,假设hbase默认大小128M为一个数据文件(Hfile),那利用hbase存储后一个文件将替代多个hive小文件。解决小文件过多问题,同时Hfile目录也仅为1个,解决了目录过多问题。
合理选择hbase,hive 会给我们解决很多头痛的问题呦。