hadoop原理解析

145 阅读2分钟

「这是我参与2022首次更文挑战的第14天,活动详情查看:2022首次更文挑战」。

hadoop是大型分布式系统基础框架,其中最重要两个组成部分就是HDFS(分布式存储系统)和MapReduce可完成计算、存储、处理大数据任务。

hadoop是用java语言开发,可以部署在多种不同硬件平台的计算机上。其原理其实就是通过大量的计算机去同时运算快速处理大量数据。

HDFS,分布式文件系统,中包含多个节点,这是就是提到的计算机,所谓集群中的节点。

命名节点是主节点,发挥着指挥其他节点的作用。存储一些映射关系,维护着将根据文件路径映射到文件的关系,就是“管理员”的角色,并且命名节点只会有一个。

数据节点存储数据块,这里的工作原理就是文件被命名文件指派并分配给数据节点,数据节点就是存储数据、读写数据的功能。

mapreduce的工作原理一两句可能说不完。先大概讲一下这个过程。

MapReduce就是存储、计算大量数据,其中的重要组成就是两部分Map和Reduce,中间包含Shuffle组合。

首先通过分片和格式化,获得<key, value>形式的数据输入到maptask。

MapTask包含read、map、collect、spill、combine等过程,每个 Map 任务都有一个大概100mb的内存缓冲区,输入通过分片( split )的数据在map处理后的中间结果数据会写入到这个内存缓冲区中。 如果输入的数据达到内存缓冲的阈值( 80MB ),会启动一个线程将内存中的溢出(spill)数据写到磁盘。在溢写过程中, MapReduce 框架会对 key 进行排序,这样的中间结果数据比较多比较大,会断形成多个溢写文件,缓冲区的数据最后完成的时候会合并成一个文件。

Shuffle 会将 MapTask 输出的处理结果数据分发给 ReduceTask ,并在分发的过程中,对数据按 key 进行分区和排序,这个步骤也会在combine中去完成,通过分区和排序将数据合并到一起。

下节继续将ReduceTask的工作过程。