Hadoop入门分析
今天本人复习了一下,当下最流行的分布式计算平台,Hadoop,在此平台上开发,可以屏蔽程序员在大数据处理上的所要考虑的各种,多线程,高并发的问题。好,下面就好好的了解一下什么是Hadoop。
Hadoop是Apache旗下的一个开源分布式平台。以Hadoop文件系统(HDFS)和MapReduce计算模型为核心的Hadoop为用户提供了系统底层细节透明的分布式基础架构。Hadoop中的HDFS具有高容错性,并且是基于Java语言开发的,这使得他可以部署在低廉的计算机集群中。Hadoop中HDFS的数据管理能力,和MapReduce处理任务时候的高效性使得他在分布式系统中十分流行。
Hadoop的项目结构包含很多子项目,是很多项目的集合。虽然核心内容是HDFS和MapReduce,但是与其相关的Chukwa,Hive,Zookeeper,HBase等项目也是不可或缺的。
Hadoop的MapReduce计算模型是一种大规模数据集的并行运算。Map(映射),Reduce(化简),是其中的主要操作,具体流程如下:
输入数据 | 数据分割 | map(映射) | shuffle| reduce计算| 输出结果 |
数据片段1 (key, value) (key, value) (key, value_list)(key, value) data
数据片段2 (key, value) (key, value) (key, value_list)(key, value)->data
数据片段3 (key, value) (key, value) (key, value_list)(key, value) data
Hadoop的HDFS文件系统是一个分布式文件系统,HDFS采用的是流失的数据访问。
Hadoopd的HDFS体系结构采用了主从(Master/Slave)结构模型,一个HDF集群是由一个NameNode和若干个DataNode组成的,其中NameNode作为主服务器,管理文件系统的命名和客户端对文件的操作,从内部来看,文件被分成若干个数据块,若干个数据块被存放到一组DataNode上。从NameNode上你可以获取的每个文件的每个块所在的DataNode.DataNode通过心跳(HeartBeat)机制定时向NameNode发送所存储的文件块信息。
Hadoop的副本存放策略是一般对一份数据采用3个副本的形式,1分副本存放在本地的机架上的一个结点上,1份副本存放在同一机架的另一个结点上,第三份副本存放在另一份机架的结点上,防止同一机架的副本遭遇灾害。
. 前面介绍完Hadoop的整体架构和MapReduce计算模型,下面说说另一个也是非常重要的子项目,HBase,HBase跟Google公司的分布式表格系统非常的相似,BigTable,很多思想上有着共同之处,比如面向列的稀疏存储啊,还有以追加的形式来更新数据才,采用文件的形式来保存数据,数据类型统统都用字符串类型来表示,大大简化了数据的管理,而这恰恰能满足当今海量数据处理的一个要求。HBase存数的数据可以理解为一种key ,value的和关系数据库数据之间。HBase是一个开源的,分布式的,多版本的面向列的存储模型,他可以直接使用本地文件系统,也可以使用Hadoop的HDFS文件系统,建议使用使用HDFD作为文件系统会更加稳妥,并且能发挥HBase处理大数据的能力。
HBase的体系结构同样遵从主从服务器架构。他由HRegion服务器和HBase Master服务器构成,HBase Master服务器负责管理所有的HRegion服务器,HBase中所有的服务器都由ZooKeeper来进行协调。
HMaseter ******************Zookeeper
** |
|--------------------------------------------------------
| | |
HRegionServer HRegionServer HRegionServer
| | |
| | |
HRegion HRegion HRegion
HRegionServer包含两大部分,HLog部分和HRegion部分,其中HLog用来存储数据日志的,采用的先写日志的方法后操作的方法,至于为什么是先写日志,我想大家都懂的吧,这是未了避免操作的丢失,如果先操作,导致系统挂了,日志上根本就找不到记录了。
---------------------------------------------------------------------------
|HRegionServer
|
|HLog HRegion
| HRegion
HRegion
|---------------------------------------------------------------------------
HBase中的数据不涉及数据的直接删除和更新,所有的取代操作为追加的形式的更新,当新数据到达的时候会首先驻留在MemStore 内存中,等内存中的数据到了一定闋值的时候,数据才会被更新到文件中。
HRegion是按照表名和主键范围划分的,所有在HRegion存在的meta元数据表,等元数据增加到一定程度,就又会进行划分出多个元数据表,这时候就有了root表的出现,所以在HBase启动的时候主服务器首先会去扫描跟数据表,从而获取其中的所有的元数据信息。ZooKeeper存储的就是HBase中ROOT表和META元数据表。
Hadoop的简单介绍就这么多了,其实里面还有很多的子项目的功能都还没有介绍,有机会的话可以深入其中的源码进行学习。