Hadoop踩坑-Hbase篇
Hadoop环境支持
hadoop 是Apache 软件基金会旗下的一个开源分布式计算平台。以hadoop 文件系统(hdfs)和 mapreduce (google 提出的mapreduce计算框架)为核心的分布式基础架构。
image.png
-
hadoop 架构
image.png -
hadoop 部署结构
image.png
在Hadoop的系统中,会有一台master,主要负责NameNode的工作以及JobTracker的工作。JobTracker的主要职责就是启动、跟踪和调度各个Slave的任务执行。还会有多台slave,每一台slave通常具有DataNode的功能并负责TaskTracker的工作。TaskTracker根据应用要求来结合本地数据执行Map任务以及Reduce任务。
-
mapreduce
mapreduce 是一个分布式的编程模型,允许用户在不了解分布式底层细节的情况下,写出并行的分布式程序,完成海量数据的处理。
image.png
先是 Map(任务的分解) 过程,然后是 Reduce(结果的汇总) 过程。
Map就是将一个任务分解成多个任务,Reduce就是将分解后多任务分别处理,并将结果汇总为最终结果。
image.png -
MapReduce流程
image.png
在Map之前,可能还有对输入数据的Split过程以保证任务并行效率,在Map之后可能还有Shuffle过程来提高Reduce的效率以及减小数据传输的压力。
HDFS搭建
hdfs 是一个高性能的文件系统。具有高容错性,可靠性,高伸缩性等优点。下图为HDFS系统架构图,主要有三个角色,Client、NameNode、DataNode。
Namenode:namenode是一个名称节点,是hdfs的大脑,它维护着文件系统的目录树。
�Secondarynode:第二个名字节点,用于备份,一旦namenode挂掉,那么secondarynode就补上。
�Datanode:data节点用来存储数据。�
Client:客户机是用来读写数据。
写流程
读流程
Zookeeper搭建
ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,ZooKeeper以Fast Paxos算法为基础,实现同步服务、配置维护和命名服务等分布式应用。
ZooKeeper 动物园管理员,他是拿来管大象(Hadoop) 、 蜜蜂(Hive) 、 小猪(Pig) 的管理员。
image.png
HBase主要用ZooKeeper来实现HMaster选举与主备切换、系统容错、RootRegion管理、Region状态管理和分布式SplitWAL任务管理等。
Hbase搭建
HBase是一种构建在HDFS之上的分布式、面向列、多版本、非关系型的数据库。在需要实时读写、随机访问超大规模数据集时,可以使用HBase。HBase自底层设计开始即聚焦于各种可伸缩性问题:表可以很“高”,有数十亿个数据行;也可以很“宽”,有数百万个列,使系统有可能提高高效的数据结构的序列化、存储和检索。
image.png
HBase是一个分布式的架构,除去底层存储的HDFS外,HBase本身从功能上可以分为三块:Zookeeper群、Master群和RegionServer群。
image.png
image.png
-
HBase架构图
image.png
从HBase的架构图上可以看出,HBase中的组件包括Client、Zookeeper、HMaster、HRegionServer、HRegion、Store、MemStore、StoreFile、HFile、Hlog。
image.png - Data model
image.png
Row Key�与 NoSQL 数据库一样,Row Key 是用来检索记录的主键。
列族�HBase 表中的每个列都归属于某个列族。必须在使用表之前定义。
Cell�时间戳HBase 中通过 Row 和 Columns 确定的一个存储单元称为 Cell。每个 Cell 都保存着同一份数据的多个版本。 -
HBase的Region寻址
image.png -
HBase的Region数据写入
image.png -
HBase的Region数据Flush
image.png
HRegionServer的一次更新操作,使得整个内存使用超过警戒线。凡是超过这个值的情况,会直接触发FlushThread,从全局的HRegion中选择一个,将其MemStore刷入hdfs,从而保证rs全局的memstore容量在可控的范围。
小白学习 无关利益
感谢:
zookeeper 启动出错问题排查 - 四维空间 - ITeye博客
HBase Getting Started(入门指南) - 简书
一条数据的HBase之旅,简明HBase入门教程-开篇 - 简书启动HBase Shell