通俗易懂了解Hadoop(更新中)
创始人
2025-05-30 13:58:05
0

从本书第5、6、7、8章,学习云计算开发相关知识

这是第五章

文章目录

    • Hadoop:主流开源云架构
      • 什么是分布式?
      • Hadoop体系架构
        • Common——制片人
        • HDFS——编剧
        • MapReduce——导演
        • Yarn——后勤

Hadoop:主流开源云架构

什么是分布式?

书中模拟了一个场景,提出了四个划时代的问题。

场景:我们现在有一些完全相同的计算机C1~Cn,每台计算机可以存5GB内容。另有两个均为2GB的文件f0和f1。

Q1:将f0和f1分别存入不同计算机,但对外显示存储在同一块硬盘;

Q2:另有一个6GB的文件f2,将它存入计算机,但对外显示为一个完整文件;

Q3:在Q1的前提下,统计f0和f1每个单词的出现次数(以下简称词频);

Q4:如果某个机器宕机,如何保证数据不丢失。

这四个问题,如果我们按照常规思路,似乎都是很难解决的。哎不对,Q3可以哦,只需要把f0复制到存储f1的计算机上,把它们放在一起统计即可,这确实没错。但如果是100个文件,每个文件1TB,就是复制文件这一步,我们都很难做到。这四个问题似乎没有了解决方法~

在这种情况下,分布式应运而生,下面是分布式思想来解决问题:

A1、A2:从这些相同的计算机中取出一台作为管理者,记为Master;其他计算机作为被管理者,记为Slave1~Slave(n-1)。Master中仅存储所有Slave机器的地址(也叫元数据),而不存储真实数据;所有Slave存储真实数据。这样设计,如果后期存储或计算需求增大,我们只需要在Master中再加入几个对应其他机器的地址映射,构建更庞大的集群,就可以完成需要。

如图,整个集群就像是一台机器Master、一片云。对外显示为一个硬盘空间,Q1、Q2解决。

A3:针对计算问题,Google提出“移动计算比移动数据更划算”,想想也是,数据动辄几个TB,代码一般就几个MB。基于此,我们假设f0存储在Slave0,f1存储在Slave1,先让两个文件在它们自己所在的机器中计算词频,将得到的结果在另一台机器中将同一个词的词频求和,就得到了这个词在两个文件中的词频,Q3解决(具体实现方法见MapReduce)。

A4:要想数据不丢失,唯一的办法就是备份。我们再取两台机器,记为Slave2和Slave3,Slave2存储文件f0,Slave3存储文件f1,将它们也归于Master管理。当Master启动计算时,四台机器同时工作,因为Slave0和Slave2的作用相同,当其中一台完成计算任务提交给Master,Master立即停止另一台的计算,使用前者提交的结果即可。

这样的话,我们岂不是白白浪费了很多资源?

确实是这样,但在绝大多数情况下,冗余存储和计算是必要的,因为数据丢失是不可逆过程,一旦出现,对企业甚至国家造成的影响太大了。

Hadoop体系架构

下面介绍它的四个组成成分:

Hadoop公共组件 -> Common

分布式文件系统 -> HDFS

分布式计算框架 -> MapReduce

分布式操作系统 -> Yarn

Common——制片人

可以说,没有Common,就没有这部“电影”。Common的定位是其他模块的公共组件,为其他模块提供公用API,观众看不到他,而他,一直在后台为剧组人员默默付出~

Common通过设计方式,降低了Hadoop设计的复杂性,减少了其他模块之间的耦合性,大大增强了Hadoop的健壮性。

HDFS——编剧

电影开拍前,HDFS会将所有的文件妥善存储,作为”剧本“,方便导演后期导戏。

首先引入两个实体:namenode和datanode,Master运行主进程namenode,所有Slave运行从属进程datanode。namenode只存储元数据信息:文件块位置、大小、拥有者信息;datanode以块(block)为单位存储实际数据,这里的块通常为128MB,要存入的文件被切分成块,存入不同的datanode中。

当客户端(Client)要访问一个文件,先“拜访”namenode,问问数据在哪个datanode中?然后直接去相应的datanode读取数据。(不再需要namenode引荐)

事务日志(EditLog)记录HDFS元数据的变化,存储在namenode本地文件系统中。

MapReduce——导演

有了编剧的剧本,导演就可以用它开始工作了,MapReduce需要非常大的计算资源来最终完成这部电影。

承接引例中的回答A3,下面说说MapReduce的详细过程(以统计词频为例)

假设文件f0和f1的内容分别为:

Baidu Tencent Huawei Huawei

Alibaba Tencent Huawei

引入“键值对”概念,即,key表示单词,value为其出现次数。所以在单机中计算结果分别为:

通过shuffle(洗牌)操作,将相同key的键值对放入同一台机器(这里需要4台),然后将value相加,此时得到的结果为:

这个即为最终结果,将其存入分布式文件系统即可,下面附图详细过程:

MapReduce说白了就是Map和Reduce两个很简单的过程,别看它原理很简单,但应用范围非常广。

Yarn——后勤

正如后勤人员一样,Yarn管理着计算机资源并进行统一调配,同时提供用户程序访问系统资源的应用程序接口(API)。

Yarn在执行时包含以下实体:

  1. Client:客户端,负责向集群提交作业;
  2. ResourceManager:集群的主进程,负责资源管理和任务调度;
  3. NodeManager:集群的从进程,管理和监视Containers,执行具体任务;
  4. Container:资源的独立单位;
  5. Scheduler:资源仲裁模块;
  6. ApplicationManager:选定,启动和监管ApplicationManager;
  7. ApplicationMaster:任务执行和监管中心。

工作过程如图:

相关内容

热门资讯

优酷安卓9.0系统版本,畅享流... 你有没有发现,最近你的优酷APP是不是有点不一样了?没错,就是那个我们每天离不开的追剧神器——优酷,...
安卓手机系统体验排名,揭秘最佳... 你有没有发现,现在手机市场上安卓手机的品牌和型号简直多到让人眼花缭乱?每个品牌都试图在系统体验上大显...
安卓操作系统技巧在哪,安卓操作... 你有没有发现,安卓手机用久了,总感觉有点慢吞吞的?别急,今天就来给你支几招,让你的安卓手机焕发第二春...
安卓手机哪个系统最快,揭秘最快... 你有没有想过,为什么你的安卓手机有时候会慢吞吞的,像是老牛拉破车一样?别急,今天就来给你揭秘安卓手机...
安卓非系统允许程序,探索安卓非... 你知道吗?在安卓手机的世界里,除了那些系统自带的程序,还有很多“外来客”在悄悄地占领着你的手机空间。...
qq飞车安卓系统和苹果系统,安... 你有没有发现,最近QQ飞车这款游戏在安卓系统和苹果系统上可是火得一塌糊涂啊!不管是走在街头,还是坐在...
安卓系统页面不显示时间,安卓系... 手机屏幕上那时间怎么突然消失了呢?是不是你也遇到了安卓系统页面不显示时间的问题?别急,今天就来给你详...
怎么修改安卓系统设备,揭秘安卓... 手机用久了是不是觉得卡得要命?别急,今天就来教你怎么修改安卓系统设备,让你的手机焕发第二春!一、清理...
安卓平板刷车载系统固件,体验智... 你有没有想过,你的安卓平板不仅能陪你追剧、玩游戏,还能变身成为车载系统的得力助手呢?没错,就是那种让...
安卓要不要系统更新系统,守护安... 亲爱的安卓用户们,你是不是也经常被手机弹出的系统更新通知搞得头都大了?是不是在犹豫,这更新到底要不要...
电视机安卓系统则,体验升级 你有没有发现,现在的电视机越来越智能了?尤其是那些搭载了安卓系统的电视机,简直就像是个小机器人,不仅...
安卓系统打开动画效果,打开动画... 你有没有发现,每次打开安卓手机,那瞬间闪现的动画效果,就像是一场视觉盛宴呢?今天,就让我带你一起探索...
安卓系统的诞生和发展,安卓系统... 你有没有想过,手机里的那个小小的操作系统,竟然能改变我们的生活呢?没错,我要说的就是安卓系统。它就像...
安卓系统电话通话录音,捕捉真实... 你有没有想过,在繁忙的生活中,有时候一个电话的录音就能帮你回忆起重要的信息或者关键时刻的对话内容呢?...
安卓64位系统官方下载,解锁全... 你有没有发现,最近你的安卓手机好像有点卡卡的呢?别急,别急,今天就来给你揭秘一下如何给你的安卓手机升...
安卓8系统可以吗,创新与变革的... 你有没有听说安卓8系统?最近这个话题在数码圈可是火得一塌糊涂呢!不少朋友都在问我:“安卓8系统可以吗...
安卓系统电量显示不正,揭秘原因... 手机电量显示不准确,是不是你也遇到了这样的烦恼?每次看着那忽上忽下的电量百分比,心里是不是直发慌?别...
安卓平板开票系统怎么用,轻松实... 你有没有想过,拥有一台安卓平板,不仅能随时随地办公学习,还能轻松搞定开票业务呢?没错,现在就让我来带...
安卓系统怎样下载尚德,安卓系统... 你有没有想过,想要在安卓系统上下载尚德,其实就像是在茫茫书海中找到一本宝藏呢?别急,让我来带你一步步...
安卓5系统自带相机软件,系统自... 你有没有发现,自从你升级到了安卓5系统,手机里的相机软件好像变得不一样了呢?没错,就是那个我们每天都...