HDFS介绍:html
简述:缓存
Hadoop Distributed File System(HDFS)是一种分布式文件系统,设计用于在商用硬件上运行。它与现有的分布式文件系统有许多类似之处。可是,与其余分布式文件系统的差别很大。HDFS具备高度容错能力,旨在部署在低成本硬件上。HDFS提供对应用程序数据的高吞吐量访问,适用于具备大型数据集的应用程序。HDFS放宽了一些POSIX要求,以实现对文件系统数据的流式访问。HDFS最初是做为Apache Nutch网络搜索引擎项目的基础设施而构建的。HDFS是Apache Hadoop Core项目的一部分。网络
主要成分:分布式
HDFS主要由NameNode和DataNode组成。NameNode负责存储数据的元数据信息和数据的偏移量。DataNode负责存储数据。oop
数据进入先经过NameNode搜索引擎
NameNode在Hadoop1.x存在一个,在Hadoop2.x能够有两个了。推荐使用2.x,由于2.x相比1.x更能快速切换新的NameNode。spa
NameNode里面由EditLog和FsImage组成,EdtiLog记录的是操做日志,FsImage记录的全部文件的元数据(包括:文件大小,文件名称,建立时间等等)。另外FsImage还记录了文件的偏移量,不过这个偏移量是由DataNode作心跳机制反馈给NameNode的。当NameNode启动或者触发配置的检查点时,它会读取EditLog和FsImage,并使用EditLog应用到FsImage并加载到缓存,而后刷新EditLog。设计
我画了个交互图以下:3d
Quorum Journal Manager :日志
简述:
因为部署了两个NameNode,而且仅仅容许一台(ActiveNode)对外提供服务,另外一台(StandByNode)在NameNode不可用的时候切换过去,这样就要保证StandBy数据是最新的。 而JournalManager就是接受ActiveNode的变更日志,而后StandBy节点读取同步更新数据。
结合上面的NameNode我画了个图以下:
Zookeeper和ZookeeperFailOverController介绍:
简述:
Zookeeper简称ZK,ZookeeperFailOverController简称ZKFC
上面使用JournalManager遇到故障的时候须要手动切换NameNode节点,这样处理会很不及时,因此必须想个办法自动切换,这样就有了Zookeeper,而后配套的出现了ZKFC,ZKFC和NameNode是一一对应的,它是一个守护进程,它负责和ZK通讯,而且时刻检查NameNode的健康情况。它经过不断的ping,若是能ping通,则说明节点是健康的。而后ZKFC会和ZK保持一个持久通话,及Session对话,而且ActiveNode在ZK里面记录了一个"锁",这样就会Prevent其它节点成为ActiveNode,当会话丢失时,ZKFC会发通知给ZK,同时删掉"锁",这个时候其它NameNode会去争抢并创建新的“锁”,这个过程叫ZKFC的选举。
结合上面简要图以下: