HDFS架构示意图:
_____________________________________
| HDFS Cluster |
| |
| NameNode (Master) |
| _________________ |
| | Metadata | |
| | and Namespace | |
| |_________________| |
| | |
| | |
| ______|______ |
| | | |
| DataNode DataNode DataNode |
| (Slave) (Slave) (Slave) |
| _______ _______ _______ |
| | Data | | Data | | Data | |
| |Block 1| |Block 2| |Block 3| |
| |_______| |_______| |_______| |
| |
|_____________________________________|
解释:
1.HDFS集群:这个图示代表整个HDFS集群,包括主要的NameNode和多个从属的DataNode。
2.NameNode:NameNode是HDFS的主节点,负责维护文件系统的命名空间和块映射。它存储了文件和目录的元数据信息,但不存储实际的数据块。
3.Metadata和Namespace:NameNode存储文件和目录的元数据,包括文件名、文件大小、权限等信息。它还维护了命名空间,即文件和目录的层次结构。
4.DataNode:DataNode是HDFS的从节点,负责存储实际的数据块。数据块被分布式地存储在多个DataNode上,以提高数据的可用性和容错性。
5.Data Block:数据块是文件在HDFS上的存储单元。每个数据块通常有128MB或256MB大小,并在不同的DataNode上复制多个副本。
6.连接线:连接线表示数据块的复制和数据流动。数据块从客户端上传到HDFS时,首先被切分成数据块并分发到不同的DataNode上。同时,NameNode跟踪数据块的位置信息。
7.NameNode和DataNode之间的通信:NameNode与DataNode之间会保持通信,以侦测DataNode的健康状态,并定期更新数据块的信息。
这个示意图展示了HDFS的基本架构,其中NameNode负责管理文件系统的元数据,而DataNode负责存储数据块。这种分布式存储和管理数据的方式使Hadoop能够处理大规模数据,并提供容错性和高可用性。这样,Hadoop集群可以存储和处理大数据,并支持各种数据分析和处理工作负载。
Hadoop集群中YARN(Yet Another Resource Negotiator)的架构。
YARN架构示意图:
_______________________________________
| Hadoop Cluster |
| |
| ResourceManager (Master) |
| _________________ |
| | Application | |
| | Manager | |
| |_________________| |
| | |
| | |
| ______|______ |
| | | |
| NodeManager NodeManager |
| (Slave) (Slave) |
| _______ _______ |
| | Container | | Container | |
| |__________| |__________| |
| |
| ______|______ |
| | | |
| NodeManager NodeManager |
| (Slave) (Slave) |
| _______ _______ |
| | Container | | Container | |
| |__________| |__________| |
|_______________________________________|
解释:
1.Hadoop集群:这个示意图代表了整个Hadoop集群,包括ResourceManager(资源管理器)和多个NodeManager(节点管理器)。
2.ResourceManager:ResourceManager是YARN的主节点,负责集群资源的管理和分配。它维护了集群中可用资源的状态,并为提交的应用程序分配资源。
3.Application Manager:每个正在运行的应用程序都有一个对应的Application Manager,它负责应用程序的生命周期管理,包括应用程序的提交、调度和监控。
4.NodeManager:NodeManager是YARN的从节点,运行在每个集群节点上。它负责监视该节点上的资源使用情况,并定期向ResourceManager报告资源的可用性。
5.Container:Container是YARN中的资源分配单位,它包含了CPU、内存等资源,并用于运行应用程序的任务。NodeManager会启动和管理这些容器。
6.连接线:连接线表示资源请求和分配的过程。应用程序通过Application Manager向ResourceManager请求资源,ResourceManager然后将资源分配给NodeManager上的容器。
7.NodeManager之间的通信:NodeManager会与ResourceManager和Application Manager之间保持通信,以报告资源使用情况和接收分配的任务。
YARN的架构允许Hadoop集群高效地管理和分配资源,以支持各种不同类型的应用程序,包括MapReduce作业、Spark作业等。ResourceManager负责全局资源管理,而NodeManager负责本地资源管理,这种分层的架构使得Hadoop集群可以更好地适应不同的工作负载需求。
MapReduce工作原理和流程:
MapReduce是一种用于分布式数据处理的编程模型,通常用于Hadoop集群中。
1.分割数据(Input Split):
1.1首先,MapReduce会将输入数据分成多个小块,每个小块称为Input Split。
1.2Input Split的大小通常由Hadoop配置参数控制,并根据数据的大小来确定。
2.映射阶段(Map Phase):
2.1在映射阶段,MapReduce任务将每个Input Split中的数据记录逐一传递给映射函数(Mapper)进行处理。
2.2映射函数是用户自定义的代码,它将输入数据记录转换为一系列键-值对(Key-Value pairs)。
2.3映射函数可以并行处理多个Input Split中的数据,以提高处理速度。
3.分区和排序(Shuffle and Sort):
3.1生成的键-值对会根据键(Key)进行排序,并分区以便将相同键的数据发送到相同的Reducer。
3.2分区和排序过程发生在集群中的多个节点上,以便在Reducer阶段进行数据汇总。
4.规约(Combiner,可选):
4.1在分区和排序之后,MapReduce可以使用可选的Combiner函数对每个分区的数据进行局部规约,以减少数据传输和存储的开销。
4.2Combiner函数类似于Reducer,但在Map阶段的本地执行。
5.Reducer阶段(Reduce Phase):
5.1在Reducer阶段,MapReduce任务将每个分区中的数据传递给Reducer函数进行最终的聚合和计算。
5.2Reducer函数也是用户自定义的代码,它接收分区中的键-值对,并生成最终的结果。
5.3Reducer函数通常用于数据的聚合、汇总和计算。
6.输出结果(Output):
6.1最终的Reducer输出结果被写入Hadoop分布式文件系统(HDFS)或其他指定的输出位置。
6.2这些结果可以供后续任务或应用程序使用,如数据分析、可视化等。
7.任务调度和执行:
7.1Hadoop框架会负责任务的调度和执行,将映射任务和Reducer任务分配给集群中的节点进行并行处理。
7.2故障容忍性是MapReduce的一个关键特性,如果某个节点失败,任务会重新分配给其他节点。
MapReduce是一种强大的数据处理模型,适用于大规模数据的分布式处理。它允许用户利用Hadoop集群的计算和存储能力来处理大规模的数据集,从而实现并行计算和数据分析。这个模型的主要思想是将复杂的数据处理任务分解成映射和归约两个阶段,以便更好地利用分布式计算资源。