写给后端的Hadoop初级入门教程:Hadoop组成部分。

前言:

在上一篇文章写给后端的Hadoop初级入门教程:概念篇中,咱们主要讲了大数据的简单概念,什么是大数据,大数据的特色是什么?以后咱们又从大数据扩展到Hadoop,讲了三个最主要的问题,Hadoop是什么,Hadoop发展史,Hadoop相较于其余大数据框架而言优点又是什么?java

今天呢,咱们依然沿着上一篇的脉络,去探索Hadoop的基本组成部分,是哪些技术有机地组合在了一块儿造就了Hadoop今天在大数据领域的出色表现,在Hadoop2.0以后,Hadoop主要由如下三个部分组成:git

  • Map - Reduce :负责计算
  • Yarn :负责资源调度
  • HDFS: 负责数据的存储

它们三个相辅相成,互相成就,固然本篇文章今天只是初略地带你们理解一下这三种技术在Hadoop中所起到的做用,具体其中的细节,咱们将在以后关于Map-ReduceHDFS专题中会作更加详细的概述。github

Map-Ruduce编程模型:

首先日常看到这种英语概念,第一时间就是打开咱们的谷歌翻译,Map的意思我想你们都知道,毕竟java中用的不能再多,Reduce是下降减小概括的意思,因此Map-Reduce就是一个先分隔(map)再概括(Reduce)的过程。编程

咱们来看下定义:后端

MapReduce是一个分布式运算程序的编程框架,是用户开发“基于Hadoop的数据分析应用”的核心框架。核心功能是将用户编写的业务逻辑代码和自带默认组件整合成一个完整的分布式运算程序,并发运行在一个Hadoop集群上。网络

MapReduce主要能够归纳为map阶段和reduce阶段。数据结构

只看定义确实是有点晦涩,那Map-Reduce通俗理解是什么呢?仍是咱们上一篇文章讲的那个例子:多线程

初中的时候,男生爱看玄幻小说,由于怕被教导主任查到,因而采用分布式存储的方案,把书分红几页几页的,放在不一样的同窗那边放着,但教导主任不是傻子,所谓道高一尺魔高一丈就是这个道理,最后仍是被发现了,而是还放言今天要是不把这本书凑齐交到他办公室,所有都等着叫家长吧。架构

最后你们都把手里的残本交给了班长小明,小明根据页码排序整理好,交给了教导主任。并发

教导主任说你这不是闲的吗,每天很差好学习搁那看的这什么,头破苍穹,是英语书很差背了,仍是数学书很差看了?这么着,你不是闲得慌吗,就这个萧炎,就他,你下去给我查查,整本书这个名字一共出现了多少次!不查完今天别想吃饭了!

小明想,这不是玩完了,我本身查,我得查到猴年马月才能查完。

重点来了,传统的编程模型要是须要知道一本书中某个单词出现的频率,只能写个程序,遍历整个文件,若是几个字还好说,可是把斗破苍穹遍历一遍,须要的时间绝对够你吃顿饭的。

那不是还有多线程吗?

是有多线程,可是前提是咱们得有一台多核或者多处理器的计算机,并且多线程的程序写起来也有点小复杂。

但小明不傻啊,小明心想,mmp,又不是我一我的看的,为啥要我本身数,因而小明心生一计,回到班里,你们有福同享有难同当,老师如今让我数萧炎在书中一共出现了多少次,我本身数到明天也数不完,谁看的谁过来你们一人数几页,而后大家在下面数好了汇总一下交给我。

因而全班男生一人数了几十页,不到一个小时就数完了,小明成功渡过一劫。

这就是 Map - Reduce,我一我的算不过来了,我找十我的并行计算,最后把结果进行汇总,不用说也知道是什么思想了,数据结构中用的最多的分而治之

固然,Map-Reduce确定不止咱们上面说的那么简单,具体实现细节仍是略微有点繁琐的,详细的执行流程,原理到时候咱们在Map-Reduce专题再细细分析。

Yarn:

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:

HDFS:Hadoop分布式文件系统(Hadoop Distributed File System),听名字就知道是Hadoop中负责文件存储部分的技术了。

HDFS相对于前面的Map-ReduceYarn就比较容易理解了,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 YarnHDFS文件系统,分别负责Hadoop的分布式计算,资源调度,分布式存储实现,每个都不可或缺,正是这三项技术的在Hadoop内部的完美配合,造就了今天Hadoop在大数据领域的地位,看到这里,我想尽管咱们可能还不知道Yarn内部是怎么协调资源的,MR是如何进行并行计算的,可是我相信,你们对于Hadoop必定有了一个初略的认识,下一篇文章,咱们讲一步一步经过配置虚拟机,而后实现咱们Hadoop的伪分布式环境的配置。

很是感谢能读到这里的朋友,大家的支持和关注是我坚持高质量分享下去的动力。

相关代码已经上传至本人github。必定要点个star啊啊啊啊啊啊啊

万水千山老是情,给个star行不行

韩数的开发笔记

欢迎点赞,关注我,有你好果子吃(滑稽)

相关文章
相关标签/搜索