合肥北大青鸟:一篇文章带你了解Hadoop

编辑:合工大北大青鸟 时间:2021-04-12 18:08:03 点击量:

很多研究分布式架构的同学都在问Hadoop的含义,说对Hadoop不是很了解,今天北大青鸟合肥校区的袁老师带你详细了解一下吧。

Hadoop是一个由Apache基金会所开发的分布式系统基础架构,是一个专门用于应对海量数据的存储和计算的东西。Hadoop这个英文单词并不在英语字典中,它没有具体的实际意义,为什么叫这个名字呢?是因为作者的儿子有一个宝贝玩具大象名字叫Hadoop,所以他开发的这个系统就叫Hadoop。突然感觉到技术大牛的生活就是如此的枯燥且朴实。
其他的关于Hadoop的版本、历程、花边故事等等凑字数行为就不多介绍了,废话少说,直接上干货。
 
2.jpg
 
Hadoop作为一个分布式系统,它有三个最重要组成部分:HDFS、YARN、MapReduce。在介绍它们之前,首先我们再来复习一遍分布式,分布式说白了就是有一堆机器组成的一个整体,它们之间通过网络互相连接,每一个机器称为一个节点,所有的节点连在一起组成了分布式的系统。这种分布式结构也称为集群。
 
1.jpg
 
1.HDFS
它是一个分布式文件系统,它和我们windows上的文件系统很像,比如说在windows中,我们为了不让麻麻发现我安装了游戏,往往会将游戏软件放到很深的文件路径下,并且文件名也是诸如“xxx学习资料””学习资源”等等。它可能会有一个完整的路径“D://学习资料/学习资源/英雄联盟.exe”。实际上这就是windows上的文件系统,它可以用来保存各种文件,并且可以通过路径的方式来访问这些文件。
同样HDFS也是一个类似的文件系统,但是它的不同点在于它是分布式的。在windows上我们都知道,某个路径下的文件,它的物理形态也同样的在这台电脑的硬盘上。而HDFS上的文件,它肯定是在这个系统上,但是你要问它我这个文件到底在哪个机器上,它会告诉你,你的文件在物理上被切分成了多块,分布在多台机器上。
“那文件都被你切坏了,我还能用吗!”,别担心,绝对能用。这些机制在HDFS的底层中全部定义好了,使用HDFS可以直接把它当做一个普通的文件系统就可以了,它也提供类似windows路径的方式来访问文件。我们在使用的过程大可不必关心底层内容,如:文件到底被分了多少块、副本文件在哪、使用的时候怎么合并等等这些问题。当然如果你要去面试Hadoop相关岗位,还是要去了解底层实现原理的。
由于分布式的特性,HDFS的扩展十分方便,只需增加机器,就可以给存储系统扩容。所以HDFS在机器够的情况下,可以轻松储存海量数据。
HDFS它是一个文件系统,也就是所有的节点机器一起组成了这个整体的文件系统,增加机器只会增加该系统的存储容量和存储节点。它总是保持一个整体的文件系统。
2.MapReduce
MapReduce是一个分布式计算框架,它是一套专门应对大数据的计算模式,它将一个处理大量数据的计算任务分解为Map和Reduce两个阶段来执行,将计算任务分配给集群中的每个节点,实现多节点并行计算。Map阶段并行处理输入数据,Reduce阶段对Map结果进行汇总。
3.YARN
是一个通用的资源管理系统,它其中的ResourceManager统一对集群中的资源进行调度和管理,而NodeManager对集群中每一个节点的资源进行调度和管理。也就是说ResourceManager是工程总设计师负责整个集群,NodeManager是包工头只负责自己机器这一亩三分地。MapReduce计算过程中所需要的资源,通常就是通过YARN来进行资源的调度和分配,当然YARN之所以能坐上管理位置还是得益于它比较公平,它不会让集群中一台节点承担大部分的任务,而是经常会将任务“平均”的分给各个节点。当然资源调度的方式有很多,也因情况而定。
总结一下,总之Hadoop有三板斧来处理大数据,使用HDFS轻松处理大数据的存储,使用MapReduce+YARN轻松处理大数据的计算。他们之间的关系可以简单的理解为:当我有一个大数据处理的任务,首先我将数据放在HDFS上,使用MapReduce这种计算模式来进行数据处理,其中YARN调用集群中节点资源一起参与计算,最后得出结果。
 

上一篇:我们来说说Java工程师的成长路线

下一篇:​今天我们来说说程序员如何避免内卷化