在上一篇文章写给后端的Hadoop初级入门教程:概念篇中,咱们主要讲了大数据的简单概念,什么是大数据,大数据的特色是什么?以后咱们又从大数据扩展到Hadoop
,讲了三个最主要的问题,Hadoop
是什么,Hadoop
发展史,Hadoop
相较于其余大数据框架而言优点又是什么?java
今天呢,咱们依然沿着上一篇的脉络,去探索Hadoop
的基本组成部分,是哪些技术有机地组合在了一块儿造就了Hadoop
今天在大数据领域的出色表现,在Hadoop2.0
以后,Hadoop
主要由如下三个部分组成:git
Map - Reduce
:负责计算Yarn
:负责资源调度HDFS
: 负责数据的存储它们三个相辅相成,互相成就,固然本篇文章今天只是初略地带你们理解一下这三种技术在Hadoop
中所起到的做用,具体其中的细节,咱们将在以后关于Map-Reduce
和HDFS
专题中会作更加详细的概述。github
首先日常看到这种英语概念,第一时间就是打开咱们的谷歌翻译,Map的意思我想你们都知道,毕竟java
中用的不能再多,Reduce
是下降减小概括的意思,因此Map-Reduce就是一个先分隔(map)再概括(Reduce)的过程。编程
咱们来看下定义:后端
MapReduce
是一个分布式运算程序的编程框架,是用户开发“基于Hadoop
的数据分析应用”的核心框架。核心功能是将用户编写的业务逻辑代码和自带默认组件整合成一个完整的分布式运算程序,并发运行在一个Hadoop
集群上。网络
MapReduce
主要能够归纳为map
阶段和reduce
阶段。数据结构
只看定义确实是有点晦涩,那Map-Reduce通俗理解是什么呢?仍是咱们上一篇文章讲的那个例子:多线程
初中的时候,男生爱看玄幻小说,由于怕被教导主任查到,因而采用分布式存储的方案,把书分红几页几页的,放在不一样的同窗那边放着,但教导主任不是傻子,所谓道高一尺魔高一丈就是这个道理,最后仍是被发现了,而是还放言今天要是不把这本书凑齐交到他办公室,所有都等着叫家长吧。架构
最后你们都把手里的残本交给了班长小明,小明根据页码排序整理好,交给了教导主任。并发
教导主任说你这不是闲的吗,每天很差好学习搁那看的这什么,头破苍穹,是英语书很差背了,仍是数学书很差看了?这么着,你不是闲得慌吗,就这个萧炎,就他,你下去给我查查,整本书这个名字一共出现了多少次!不查完今天别想吃饭了!
小明想,这不是玩完了,我本身查,我得查到猴年马月才能查完。
重点来了,传统的编程模型要是须要知道一本书中某个单词出现的频率,只能写个程序,遍历整个文件,若是几个字还好说,可是把斗破苍穹遍历一遍,须要的时间绝对够你吃顿饭的。
那不是还有多线程吗?
是有多线程,可是前提是咱们得有一台多核或者多处理器的计算机,并且多线程的程序写起来也有点小复杂。
但小明不傻啊,小明心想,mmp,又不是我一我的看的,为啥要我本身数,因而小明心生一计,回到班里,你们有福同享有难同当,老师如今让我数萧炎在书中一共出现了多少次,我本身数到明天也数不完,谁看的谁过来你们一人数几页,而后大家在下面数好了汇总一下交给我。
因而全班男生一人数了几十页,不到一个小时就数完了,小明成功渡过一劫。
这就是 Map - Reduce,我一我的算不过来了,我找十我的并行计算,最后把结果进行汇总,不用说也知道是什么思想了,数据结构中用的最多的分而治之。
固然,Map-Reduce确定不止咱们上面说的那么简单,具体实现细节仍是略微有点繁琐的,详细的执行流程,原理到时候咱们在Map-Reduce专题再细细分析。
Yarn
这个东西在Hadoop2.x
时代才诞生,在遥远的Hadoop1.x
时代,Map-Reduce
不只要负责计算,还要负责资源调度,简直是又当爹又当妈,一两天还好,时间长了Map-Reduce
就受不了了,就向Hadoop
总部提意见,总部确定装做没听到啊,一我的干俩人的活儿不能再划算了。因而就不搭理Map-Reduce
,后来有一天,Map-Reduce
终于忍无可忍了,就甩袖子不干了,由于以前Map-Reduce又干计算又干资源调度,因此Map-Reduce甩袖子不干了,整个Hadoop
计算和资源调度系统全都歇菜了。
耦合太严重,因而Hadoop
以为这不行,被Map-Reduce卡脖子可还得了?因而Hadoop
又招了一个专门负责资源调度,就是Yarn
,这样一来,Map-Reduce只负责计算,Yarn只负责资源调度,Hadoop
内部瞬间和谐多了。再也没有出现过一人罢工,全员歇菜的问题了。
Yarn主要干四个事儿,分别是:
ResourceManager(RM):
NodeManager
。ApplicationMaster
。NodeManager(NM):
ResourceManager
的命令ApplicationMaster
的命令ApplicationMaster(AM):
Container :
Container
是YARN中的资源抽象,它封装了某个节点上的多维度资源,如内存、CPU、磁盘、网络等。
等。
HDFS
:Hadoop
分布式文件系统(Hadoop Distributed File System
),听名字就知道是Hadoop
中负责文件存储部分的技术了。
HDFS
相对于前面的Map-Reduce
和Yarn
就比较容易理解了,HDFS
架构主要分为三个部分:
NameNode(nn):
存储文件的元数据,如文件名,文件目录结构,文件属性(生成时间、副本数、文件权限),以及每一个文件的块列表和块所在的DataNode
等。
NameNode
主要存储文件的元数据,好比咱们去图书馆借书,NameNode
存的就是这个图书馆全部书籍的目录,做者,文件属性,以及书的位置等信息。
DataNode(dn) :
DataNode(dn)
:在本地文件系统存储文件块数据,以及块数据的校验和。
仍是上面那个图书馆的例子,若是NameNode
主要存的是目录的话,那么DataNode
就是存书的书架,也就是咱们实际的数据实际是在DataNode
上存放的。
Secondary NameNode(2nn):
Secondary NameNode(2nn)
:用来监控HDFS
状态的辅助后台程序,每隔一段时间获取HDFS
元数据的快照
看名字就知道了,和咱们Nginx
中讲的万一Nginx
挂了是一个性质,你只有一个NameNode
,万一不当心NameNode
挂了,全部文件的元数据都无法儿访问,找不到文件的实际位置,那不就gg了吗,因此Secondary NameNode(2nn):
主要就起一个辅助备份的做用.
万一NameNode
挂了,别怕,有Secondary NameNode(2nn)
在,他那有备份,恢复都是小KS。
这些就是HDFS总体的组成部分,固然,后面确定会有HDFS的专题来详细把这东西说清楚讲明白的。
今天这篇文章,咱们初略地讲了Hadoop
的三个重要的组成部分,Map-Ruduce
Yarn
和 HDFS
文件系统,分别负责Hadoop
的分布式计算,资源调度,分布式存储实现,每个都不可或缺,正是这三项技术的在Hadoop
内部的完美配合,造就了今天Hadoop
在大数据领域的地位,看到这里,我想尽管咱们可能还不知道Yarn内部是怎么协调资源的,MR是如何进行并行计算的,可是我相信,你们对于Hadoop
必定有了一个初略的认识,下一篇文章,咱们讲一步一步经过配置虚拟机,而后实现咱们Hadoop
的伪分布式环境的配置。
很是感谢能读到这里的朋友,大家的支持和关注是我坚持高质量分享下去的动力。
相关代码已经上传至本人github。必定要点个star啊啊啊啊啊啊啊
万水千山老是情,给个star行不行
欢迎点赞,关注我,有你好果子吃(滑稽)