(1)HDFS (Hadoop Distributed File System):Hadoop的数据存储工具。
Hadoop分布式文件系统(HDFS)是一种设计成适合在通用硬件上运行的分布式文件系统。HDFS具有高度容错性,非常适合部署在廉价的机器上。它能提供高吞吐量的数据访问,特别适合处理大规模数据集。该系统采用master/slave架构,由一个Namenode和一个或多个Datanodes组成。
(2) Hadoop MapReduce:分布式计算框架。
Map/Reduce是一个简易的软件框架,它允许用户编写简易的应用程序来处理大规模数据。这个框架被设计成可以运行在由数千用机器组成的大型集群上,并以一种可靠容错的方式并行处理TB级别的数据集。
(3) YARN (Yet Another Resource Negotiiator):Hadoop的资源管理器。
YARN是Hadoop的资源管理系统,负责集群资源的调度和分配。它通过引入ResourceManager和NodeManager等组件,将JobTracker的功能进行拆分和优化,提高了系统的可扩展性和可靠性。
分布式系统与HDFS
分布式系统是多个计算机通过网络协同工作,像一个单独的系统一样解决某种问题。而分布式文件系统是分布式系统的一个子集,它解决的问题就是数据存储。换句话说,它是跨多台计算机的存储系统。存储在分布式文件系统上的数据自动分布在不同的节点上。
在HDFS中,元数据(如文件名、节点数、数据块位置等)存储在Namenode上,而实际的数据文件则存储在Datanode的集群上。HDFS采用master/slave架构模式,其中Namenode是主服务器(Master),负责管理文件系统的元数据;Datanode是从服务器(Slave),负责实际的数据存储和处理。
HDFS的写入过程
当客户端希望将文件写入HDFS时,它会首先与Namenode进行通信,获取写入文件的权限和Datanode的信息。然后,客户端会与选定的Datanode进行通信,并开始写入数据。在这个过程中,Namenode会文件的写入进度,并在需要时重新分配Datanode以保持数据的冗余和可靠性。
HDFS的读取过程
当客户端需要读取HDFS中的文件时,它会首先与Namenode进行通信,获取文件的元数据和存储该文件的Datanode信息。然后,客户端会直接与包含文件数据的Datanode进行通信,读取文件内容。如果需要从多个Datanode读取数据,客户端会并行地从这些Datanode中获取数据块,然后将它们拼成完整的文件。
YARN的工作原理
YARN通过引入ResourceManager和NodeManager等组件,将作业的管理和资源的调度分离。ResourceManager负责集群资源的分配和管理,而NodeManager则负责在每个节点上执行具体的任务。通过这种方式,YARN能够更好地利用集群资源,提高系统的吞吐量和可靠性。
总结
Hadoop是一个为处理大规模数据而设计的系统,具有高可靠性、高容错性和高扩展性等特点。它通过分布式文件系统(HDFS)和MapReduce框架等技术,实现了对海量数据的存储和处理。而YARN作为Hadoop的资源管理系统,进一步提高了系统的资源利用率和任务执行效率。
无论是HDFS、MapReduce还是YARN,它们都为大规模数据处理提供了强大的支持,使得用户能够更加高效地处理和分析海量数据。