10分钟零基础就可搞懂的Hadoop架构原理,阿里架构师详解( 三 )


(6)执行
Hive中大多数查询的执行是通过Hadoop提供的MapReduce来实现的(类似select * from tbl的查询不需要MapReduce) 。而数据库通常有自己的执行引擎 。
(7)执行延迟
Hive在查询数据的时候,由于没有索引,需要扫描整个表,因此延迟较高 。另外一个导致Hive执行延迟高的因素是MapReduce框架 。由于MapReduce本身具有较高的延迟,因此在利用MapReduce执行Hive查询时,也会有较高的延迟 。相对的,数据库的执行延迟较低 。当然,这个低是有条件的,即数据规模较小,当数据规模大到超过数据库的处理能力的时候,Hive的并行计算显然能体现出优势 。
(8)可扩展性
由于Hive是建立在Hadoop之上的,因此Hive的可扩展性是和Hadoop的可扩展性是一致的(世界上最大的Hadoop集群在Yahoo!,2009年的规模在4000台节点左右) 。而数据库由于ACID语义的严格限制,扩展行非常有限 。目前最先进的并行数据库Oracle在理论上的扩展能力也只有100台左右 。
(9)数据规模
由于Hive建立在集群上并可以利用MapReduce进行并行计算,因此可以支持很大规模的数据;对应的,数据库可以支持的数据规模较小 。
Hbase
1.定义
HBase – Hadoop Database,是一个高可靠性、高性能、面向列、可伸缩的分布式存储系统,利用HBase技术可在廉价PC Server上搭建起大规模结构化存储集群 。
HBase是Google Bigtable的开源实现,类似Google Bigtable利用GFS作为其文件存储系统,HBase利用Hadoop HDFS作为其文件存储系统;
Google运行MapReduce来处理Bigtable中的海量数据,HBase同样利用Hadoop MapReduce来处理HBase中的海量数据;
Google Bigtable利用 Chubby作为协同服务,HBase利用Zookeeper作为协同服务 。
2.组成

10分钟零基础就可搞懂的Hadoop架构原理,阿里架构师详解

文章插图
 

10分钟零基础就可搞懂的Hadoop架构原理,阿里架构师详解

文章插图
 
分析:从上图可以看出:Hbase主要由Client、Zookeeper、HMaster和HRegionServer组成,由Hstore作存储系统 。
  • Client
HBase Client使用HBase的RPC机制与HMaster和HRegionServer进行通信,对于管理类操作,Client与 HMaster进行RPC;对于数据读写类操作,Client与HRegionServer进行RPC
  • Zookeeper
Zookeeper Quorum 中除了存储了 -ROOT- 表的地址和 HMaster 的地址,HRegionServer 也会把自己以 Ephemeral 方式注册到 Zookeeper 中,使得 HMaster 可以随时感知到各个HRegionServer 的健康状态 。
  • HMaster
HMaster 没有单点问题,HBase 中可以启动多个 HMaster,通过 Zookeeper 的 Master Election 机制保证总有一个 Master 运行,HMaster 在功能上主要负责 Table和Region的管理工作:
  • 管理用户对 Table 的增、删、改、查操作
  • 管理 HRegionServer 的负载均衡,调整 Region 分布
  • 在 Region Split 后,负责新 Region 的分配
  • 在 HRegionServer 停机后,负责失效 HRegionServer 上的 Regions 迁移
HStore存储是HBase存储的核心了,其中由两部分组成,一部分是MemStore,一部分是StoreFiles 。
MemStore是Sorted Memory Buffer,用户写入的数据首先会放入MemStore,当MemStore满了以后会Flush成一个StoreFile(底层实现是HFile),当StoreFile文件数量增长到一定阈值,会触发Compact合并操作,将多个 StoreFiles 合并成一个 StoreFile,合并过程中会进行版本合并和数据删除 。
因此可以看出HBase其实只有增加数据,所有的更新和删除操作都是在后续的 compact 过程中进行的,这使得用户的写操作只要进入内存中就可以立即返回,保证了 HBase I/O 的高性能 。
当StoreFiles Compact后,会逐步形成越来越大的StoreFile,当单个 StoreFile 大小超过一定阈值后,会触发Split操作,同时把当前 Region Split成2个Region,父 Region会下线,新Split出的2个孩子Region会被HMaster分配到相应的HRegionServer 上,使得原先1个Region的压力得以分流到2个Region上 。
三、Hadoop的应用实例1.回顾Hadoop的整体架构
10分钟零基础就可搞懂的Hadoop架构原理,阿里架构师详解

文章插图
 
2.Hadoop的应用——流量查询系统
(1)流量查询系统总体框架
10分钟零基础就可搞懂的Hadoop架构原理,阿里架构师详解

文章插图
 
(2)流量查询系统总体流程
10分钟零基础就可搞懂的Hadoop架构原理,阿里架构师详解

文章插图
 
(3)流量查询系统数据预处理功能框架
10分钟零基础就可搞懂的Hadoop架构原理,阿里架构师详解


推荐阅读