MAPREDUCE服务 MRS-HDFS基本原理:HDFS结构
HDFS结构
HDFS包含主、备NameNode和多个DataNode,如图1所示。
HDFS是一个Master/Slave的架构,在Master上运行NameNode,而在每一个Slave上运行DataNode,ZKFC需要和NameNode一起运行。
NameNode和DataNode之间的通信都是建立在TCP/IP的基础之上的。NameNode、DataNode、ZKFC和JournalNode能部署在运行Linux的服务器上。
名称 |
描述 |
---|---|
NameNode |
用于管理文件系统的命名空间、目录结构、元数据信息以及提供备份机制等,分为:
|
DataNode |
用于存储每个文件的“数据块”数据,并且会周期性地向NameNode报告该DataNode的数据存放情况。 |
JournalNode |
HA集群下,用于同步主备NameNode之间的元数据信息。 |
ZKFC |
ZKFC是需要和NameNode一一对应的服务,即每个NameNode都需要部署ZKFC。它负责监控NameNode的状态,并及时把状态写入ZooKeeper。ZKFC也有选择谁作为Active NameNode的权利。 |
ZK Cluster |
ZooKeeper是一个协调服务,帮助ZKFC执行主NameNode的选举。 |
HttpFS gateway |
HttpFS是个单独无状态的gateway进程,对外提供webHDFS接口,对HDFS使用FileSystem接口对接。可用于不同Hadoop版本间的数据传输,及用于访问在防火墙后的HDFS(HttpFS用作gateway)。 |
- HDFS HA架构
HA即为High Availability,用于解决NameNode单点故障问题,该特性通过主备的方式为主NameNode提供一个备用者,一旦主NameNode出现故障,可以迅速切换至备NameNode,从而不间断对外提供服务。
在一个典型HDFS HA场景中,通常由两个NameNode组成,一个处于Active状态,另一个处于Standby状态。
为了能实现Active和Standby两个NameNode的元数据信息同步,需提供一个共享存储系统。本版本提供基于QJM(Quorum Journal Manager)的HA解决方案,如图2所示。主备NameNode之间通过一组JournalNode同步元数据信息。
通常配置奇数个(2N+1个)JournalNode,且最少要运行3个JournalNode。这样,一条元数据更新消息只要有N+1个JournalNode写入成功就认为数据写入成功,此时最多容忍N个JournalNode写入失败。比如,3个JournalNode时,最多允许1个JournalNode写入失败,5个JournalNode时,最多允许2个JournalNode写入失败。
由于JournalNode是一个轻量级的守护进程,可以与Hadoop其它服务共用机器。建议将JournalNode部署在控制节点上,以避免数据节点在进行大数据量传输时引起JournalNode写入失败。
- MapReduce服务_什么是HDFS_HDFS特性
- MapReduce服务_什么是Hive_如何使用Hive
- MapReduce服务_什么是MapReduce服务_什么是HBase
- MapReduce服务_什么是Flume_如何使用Flume
- MapReduce服务_什么是Loader_如何使用Loader
- MapReduce服务_什么是ZooKeeper_如何使用ZooKeeper
- MapReduce服务_什么是Kafka_如何使用Kafka
- 什么是Spark_如何使用Spark_Spark的功能是什么
- MapReduce服务_什么是Hue_如何使用Hue
- Hudi服务_什么是Hudi_如何使用Hudi