数说(之五)·大话大数据技术之Hadoop(下)

小伙伴们,过完双11,迎来双12,大家(的钱包)还好吗?

似乎所有的节日都是买买买,8月份的工资给了中秋,9月份的工资给了国庆,10月份的工资给了双11,11月份的工资给了双12,12月份的给元旦,然后就是春节了……还是宅在家里,看看刷刷微信最省钱啊。

上次说到了Hadoop的三个重要组件——HDFS、MapReduce和YARN,今天继续大话一下这些组件是如何工作的。

提到Hadoop的工作原理,就不得不先了解一下分式系统。

在这里我还是要推荐下我自己建的大数据学习交流裙:667367234, 裙 里都是学大数据开发的,如果你正在学习大数据 ,小编欢迎你加入,大家都是软件开发党,不定期分享干货(只有大数据开发相关的),包括我自己整理的一份2018最新的大数据进阶资料和高级开发教程,欢迎进阶中和进想深入大数据的小伙伴。

版权声明:本文为博主原创文章,转载请附上博文链接!一只普通的牛体力有限,很快就不行了。

如果找一群普通的牛,不会又便宜又高效呢?

采用性能高的(以质量取胜的方式),在系统体系设计上叫做Scale Up,好比向原有的机器添加CPU、内存、硬盘来提高计算和存储能力;而采用协同并行的(以数量取胜的方式),在系统体系设计上叫做Scale Out,好比添加了很多台相同的机器分担计算和存储任务。

相比之下,采用Scale Out方式的分布式系统更加复杂,因为除了考虑单个硬件资源的管理之外,还需要考虑多个硬件资源间的统一管理和并行任务的协同处理。

Hadoop中的HDFS和MapReduce组件则正是采用了Scale Out的思想来对海量数据进行处理。

  • HDFS的工作原理

HDFS采用了主从(Master/Slave)结构模型,一个HDFS集群包括一个名称节点(NameNode)和若干个数据节点(DataNode)。名称节点作为中心服务器,负责管理文件系统的命名空间及客户端对文件的访问。集群中的数据节点一般是一个节点运行一个数据节点进程,负责处理文件系统客户端的读/写请求,在名称节点的统一调度下进行数据块的创建、删除和复制等操作。

名称节点(NameNode)负责管理分布式文件系统的命名空间(Namespace),保存了两个核心的数据结构,即FsImage和EditLog,FsImage用于维护文件系统树以及文件树中所有的文件和文件夹的元数据,操作日志文件EditLog中记录了所有针对文件的创建、删除、重命名等操作。名称节点记录了每个文件中各个块所在的数据节点的位置信息。

数据节点(DataNode)是分布式文件系统HDFS的工作节点,负责数据的存储和读取,会根据客户端或者是名称节点的调度来进行数据的存储和检索,并且向名称节点定期发送自己所存储的块的列表。每个数据节点中的数据会被保存在各自节点的本地Linux文件系统中。

冗余数据保存:作为一个分布式文件系统,为了保证系统的容错性和可用性,HDFS采用了多副本方式对数据进行冗余存储,通常一个数据块的多个副本会被分布到不同的数据节点上,数据块1被分别存放到数据节点A和C上,数据块2被存放在数据节点A和B上

HDFS如何进行读写操作:因为涉及很多技术细节,就不过多展开了,但是要说明的是和普通的文件操作系统类似,HDFS读写操作都是需要先查找文件索引(对于HDFS就是名称节点),然后再对实际数据(对于HDFS就是数据节点)进行操作的,不过HDFS的读取多了结果的校验、合并以及对操作日志的记录过程。

HDFS读数据的过程:

HDFS写数据的过程:

  • MapReduce的工作原理

MapReduce是一种编程模型,用于大规模数据集的并行运算。让我们考虑一个需求:统计文件中每个单词及其出现次数(频数),并按照单词字母顺序排序,每个单词和其频数占一行,单词和频数之间有间隔。

在这里我还是要推荐下我自己建的大数据学习交流裙:667367234, 裙 里都是学大数据开发的,如果你正在学习大数据 ,小编欢迎你加入,大家都是软件开发党,不定期分享干货(只有大数据开发相关的),包括我自己整理的一份2018最新的大数据进阶资料和高级开发教程,欢迎进阶中和进想深入大数据的小伙伴。
 

要想得到这样的结果,从头开始遍历扫描是最简单的做法,但这样时间的花费将非常大。于是我们可以采用分布式处理方式,将每一行交给不同的映射程序(Map)去处理,然后经过排序程序(Shuffle),最后统一交给归约程序(Reduce)输出结果。

MapReduce采用"分而治之"的思想,把对大规模数据集的操作,分发给一个主节点管理下的各个分节点共同完成,然后通过整合各个节点的中间结果,得到最终结果。用户只需要实现map()和reduce()两个函数,剩下的事情由框架完成,即可实现分布式计算,非常简单。

  • YARN的工作原理

在Hadoop1.0时代,还没有YARN的出现。在Hadoop2.0时代,为了解决集群的资源管理问题,将任务管理功能和资源管理功能从Hadoop的MapReduce任务管理器中剥离出来。原1.0框架中核心的 JobTracker 和 TaskTracker 不见了,取而代之的是2.0中的Resource Manager, Node Manager与Application Master(含Container)三个部分。

从而大大减小了任务管理进程的资源消耗,并且让监测每一个任务状态的程序分布式化了,更安全、更优美、容错率更高。

这三个组件的功能分别如下表所示:

而简单理解Resource Manager和Node Manager的关系正如下图所展示的:

综上,我们简单了解了Hadoop中的三个重要组件的工作原理,正如19世纪法国作家大仲马在他的小说《三个火枪手》中的主人公们一样相互帮助、协作,共同战胜强大的敌人。随着Hadoop的广泛应用,大大加速了大数据技术在世界各地的推广和普及。

关注微信公众号:程序员交流互动平台!获取资料学习!

猜你喜欢

转载自blog.csdn.net/cqacry2798/article/details/84561378
今日推荐