Hadoop 基础系列一Hadoop 系列之 1.0 和2.0 架构-程序员宅基地

技术标签: java  mapreduce  hadoop  分布式  大数据  

精选30+云产品,助力企业轻松上云!>>> hot3.png

Hadoop 系列之 1.0 和2.0 架构

自学大数据有一段时间了,找工作历时一周,找到一家大厂,下周入职,薪资待遇还不错,公司的业务背景自己也很喜欢。趁着还没有入职,给大家争取先把 Hadoop 系列的文章总结完毕,可以当做科普文,也可以当做笔记收藏。经过查阅各种资料,保证我的理解没有偏差。但是也难免会有疏漏,欢迎朋友们留言给我进行交流。我的座右铭就是:认真搞定一切!绝对保证一字一字好好斟酌,技术不能有半点马虎。<br /> <br />目前 Hadoop 系列文章的规划就是这样,其它的小组件先不进行总结,以后会慢慢涉及到的。<br /> <br />Hadoop 生态系列之 1.0 和 2.0 架构<br />Hadoop 生态系列之 HDFS<br />Hadoop 生态系列之 Mapreduce<br />Hadoop 生态系列之 Yarn<br />Hadoop 生态系列之 Zookeeper<br />Hadoop 生态系列之 Hive<br />Hadoop 生态系列之 HBase<br /> <br />学习大数据的前提思想:分而治之。<br /> <br />先来一个题目大家思考一下:给定a、b两个文件,各存放50亿个url,每个url各占64字节,内存限制是4G,让你找出a、b文件共同的url?<br /> <br />这个问题不要急着我上网去查。先思考一下,结合上面我提到的「分而治之」的思想。思路会在文末给出。<br />

1背景

2003 年 Google 发表三篇论文,分别是 《The Google File System》 《MapReduce: Simplified Data Processing on Large Clusters》 《Bigtable: A Distributed Storage System for Structured Data》,分别对应后来出现的 HDFS,MapReduce, HBase。建议大家都看看论文原文,后台回复谷歌论文即可。<br /> <br />2006 年 Docu Cutting 开源了 Hadoop,名字取自于他儿子的玩具小象 Hadoop。<br /><br /><br />Hadoop 1.0 是指 MapReduce  +  HDFS,Hadoop 2.0 是指 MapReduce + HDFS + Yarn。<br /><br /> <br />在再细分一下:<br /><br />大数据解决框架解决的问题大体可以分为两个方面:一是海量数据的存储、二是海量数据的计算。

2Hadoop 1.0 架构

为了解决上述问题,推出了一系列的解决方案,其中开源框架中比较出名的就是 Hadoop 了,提供了分布式存储系统 HDFS 和分布式计算模型 MapReduce。<br /> <br />Hadoop1.0 即第一代 Hadoop,指的是版本为 Apache Hadoop 0.20.x、1.x或者 CDH3 系列的 Hadoop,内核主要由 HDFS 和 MapReduce 两个系统组成,其中MapReduce是一个离线处理框架,由编程模型(新旧API)、运行时环境(JobTracker 和 TaskTracker)和数据处理引擎(MapTask和ReduceTask)三部分组成。<br /> <br />先来说一下  HDFS 的架构,架构图如下:<br /> <br /><br />分布式系统最怕的就是出现单节点的问题,很容易成为性能瓶颈。HDFS 1.0 中使用 NameNode 做为主节点,SecondaryNameNode 作为从节点,但是这里的从节点不能作为主节点的备份。<br /> <br />分布式计算,MapReduce 1.0 的架构如下:<br /> <br /><br /> <br />缺点是:JobTracker 压力大。单点故障。只能执行 MapReduce 任务,不能跑 Storm,Flink等计算框架的任务。

3Hadoop 2.0 架构

Hadoop2.0即第二代Hadoop,指的是版本为Apache Hadoop 0.23.x、2.x或者CDH4系列的Hadoop,内核主要由HDFS、MapReduce和YARN三个系统组成,其中YARN是一个资源管理系统,负责集群资源管理和调度,MapReduce则是运行在YARN上的离线处理框架。<br /> <br />1、针对Hadoop1.0单NameNode制约HDFS的扩展性问题,提出HDFS Federation,它让多个NameNode分管不同的目录进而实现访问隔离和横向扩展,同时彻底解决了NameNode单点故障问题;<br />2、针对Hadoop1.0中的MapReduce在扩展性和多框架支持等方面的不足,它将JobTracker中的资源管理和作业控制分开,分别由ResourceManager(负责所有应用程序的资源分配)和ApplicationMaster(负责管理一个应用程序)实现,即引入了资源管理框架Yarn。<br />3、Yarn作为Hadoop2.0中的资源管理系统,它是一个通用的资源管理模块,可为各类应用程序进行资源管理和调度,不仅限于MapReduce一种框架,也可以为其他框架使用,如Tez、Spark、Storm等。<br /> <br />HDFS 在 Hadoop 2.0 中的架构图如下:<br />NameNode 变为两个,一个主节点,一个从节点,主节点负责接收客户端的读写请求,从节点同步主节点的元数据。两个 NameNode 就需要保持元数据一致,这个是由 JN 集群来完成的。主从节点的自动切换是由 ZKFC 来完成的。这里面的细实现细节很重要。对于理解分布式应用也是一种帮助。Hadoop 的 高可用原理:Hadoop HA 深度解剖。<br /><br /><br />Hadoop 2.0新引入的资源管理系统,直接从MRv1演化而来的;核心思想:将MRv1 中 JobTracker 的资源管理和任务调度两个功能分开,分别由 ResourceManager 和 进程实现。<br />1.ResourceManager负责资源管理和调度;<br />2.ApplicationMaster:负责任务切分、任务调度、任务监控和容错等。<br />3.MapTask/ReduceTask:任务驱动引擎,与MRv1一致<br /> <br />注意:每个 MapRduce 作业对应一个 ApplicationMaster 任务调度。<br /><br /><br /><br /> <br /><br />使用 Yarn 资源调度和任务管理。Hadoop 2.0 中 YARN的引入,使得多个计算框架可运行在一个集群中。<br /><br /><br />今天这篇文章主要是介绍一下 Hadoop 1.0 和 2.0 的架构,以及 2.0 改善的地方。继续深挖的话,东西太多了,你学的越深,不会的东西就越多。但是做研究就是这样,没有一个人敢说自己在某一方面很完美,随着升级打怪的难度提升,不懂的就越多,人生就是这样一个大游戏啊。今天关于架构就介绍到这里,有什么正确的地方欢迎留言指出。<br /><br /><br />回答一下开头的思路:分而治之。<br />Q:给定a、b两个文件,各存放50亿个url,每个url各占64字节,内存限制是4G,让你找出a、b文件共同的url?<br />A:可以估计每个文件的大小为50G×64=320G,远远大于内存限制的4G。所以不可能将其完全加载到内存中处理。考虑采取分而治之的方法。s 遍历文件a,对每个url求取 hash(url) % 1000,然后根据所取得的值将url分别存储到1000个小文件(记为)中。这样每个小文件的大约为300M。s 遍历文件b,采取和a相同的方式将url分别存储到1000个小文件(记为)。这样处理后,所有可能相同的url都在对应的小文件()中,不对应的小文件不可能有相同的url。然后我们只要求出1000对小文件中相同的url即可。s  求每对小文件中相同的url时,可以把其中一个小文件的url存储到hash_set中。然后遍历另一个小文件的每个url,看其是否在刚才构建的hash_set中,如果是,那么就是共同的url,存到文件里面就可以了。<br /> <br />Hadoop 中 MapReduce 计算模型就是分而治之思想的一种实现,更重要对于我们开发者来说使用很简单,只需要开发的过程中使用对应的模块就可以完成我们的分布式应用,Map 和 Reduce 细节不需要我们关心。<br /> <br />(全文完)<br />


如果对您有帮助,欢迎点赞、关注、转发。<br /> <br />

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qq_31975963/article/details/107662521

智能推荐

centos7设置超级管理员_centos7进入超级管理员-程序员宅基地

文章浏览阅读1.4k次。_centos7进入超级管理员

膜拜 (mo)——求n个区间重叠的最大次数_重叠区间的最多次数-程序员宅基地

文章浏览阅读1k次。膜拜 (mo)题目描述:小鱼有 n 名优秀的粉丝。粉丝们得知小鱼将会在一条直线上出现,打算去膜他。为了方便,粉丝们在这条直线上建立数轴。第 i 名粉丝有一个侦查区间[li,ri] 。如果小鱼在 j(li≤j≤ri) 处出现,这名粉丝将立刻发现并膜他。小鱼希望膜他的人越多越好,但是他不能分身,因此只能选择一个位置出现。小鱼想知道自己最多能被多少个人膜。输入:第一行一个整数n —— 粉丝的个数。接下来 n 行,每行两个整数 li,ri ,分别表示第 i 名粉丝的侦查区间的两个端点。两个数之间用_重叠区间的最多次数

ubuntu创建虚机_ubuntu lookback-程序员宅基地

文章浏览阅读876次。自己搭建VPS系列文章自己搭建VPS系列文章,介绍了如何利用自己的计算机资源,通过虚拟化技术搭建VPS。在互联网2.0时代,每个人都有自己的博客,还有很多专属于自己的互联网应用。这些应用大部分都是互联网公司提供的。对于一些有能力的开发人员(geek)来说,他们希望做一些自己的应用,可以用到最新最炫的技术,并且有自己的域名,有自己的服务器。这时就要去租一些互联网上的VPS主机。VPS_ubuntu lookback

微信小程序开发之本地图片上传(leancloud)_微信小程序require本地图片-程序员宅基地

文章浏览阅读3.4w次。将本地图片上传至leancloud后台.获取本地图片或者拍照,我在上一篇博文中写过.这里就不说了.我的博客直接上代码:1.index.js//index.js//获取应用实例var app = getApp()const AV = require('../../utils/av-weapp.js');Page({ data: { temp_微信小程序require本地图片

为el-col、el-row添加点击事件_el-col点击事件-程序员宅基地

文章浏览阅读5.1k次,点赞4次,收藏5次。为el-col、el-row添加点击事件要为el-col和el-row添加点击事件,不能用常用的v-on:click=”function()”或@click=”function()”添加点击事件,应该使用v-on:click.native="function()"或@click=”function()”添加点击事件..._el-col点击事件

P标签的样式:怎么垂直居中_p标签垂直居中-程序员宅基地

文章浏览阅读1.4w次。P标签垂直居中代码如下 display: inline-block; vertical-align:middle;常见的行间样式:width:height:color:font-size:line-heighttext-alignletter-spacing 字符间距text-indent:首行缩进px今天一天都在做一个小项目,其实CSS我并不熟练,多借鉴大公司网站,..._p标签垂直居中

随便推点

Qt中在QMAinWindow内添加layout出现问题_qt qmainwindow layout-程序员宅基地

文章浏览阅读3.2k次。 在QDialog的派生类中,添加Layout,可在创建Layout对象的同时指定其父窗口,但这在QMainWindow中行不通,可能会出现" ..已经设置过布局.. "或者设置的Layout不能正常显示。这是因为基于主窗口的程序,默认已经有了自己的布局管理器,所以再次设置Layout的话会失效。 QMainWindow的中心控件是一个QWidget,可以通过setCentralW..._qt qmainwindow layout

单代号网络图计算例题_最新(免锁版)网络图横道图绘制软件,内附安装教程,制图做更快...-程序员宅基地

文章浏览阅读500次。最新(免锁版)网络图横道图绘制软件,内附安装教程,制图做更快网络图横道图绘制可制作双代号网络计划、单代号网络图、横道图(及甘特图Gantt),是最常用的计划与控制手段之一,项目管理的必备工具,还可作为企业生产进度计划与生产排程。网络图绘制无需草稿,用鼠标直接在屏幕上画图,直接用鼠标对工作增、删、改和调节逻辑关系。该横道图编制软件简单方便,上手即会,可添加子工作,子工作可折叠,可打印,非常..._项目管理单代号画图工具

手动生成token_生成 Token-程序员宅基地

文章浏览阅读2.4k次。# 生成 TokenToken 是一种动态密钥,通过 AppKey、AppSecret、用户名、有效时间戳等参数生成,安全性较高。在正式生产环境等对安全要求较高的场景中,我们推荐使用 Token 鉴权。TIP在生成 Token 前请确保您已经在控制台开启了 Token 鉴权模式。具体参考 开启 Token 鉴权模式 。在生成 Token 前,您需要在控制台获取必要的参数:AppSecret 。具体..._token能自己造吗

Android项目集成穿山甲开屏/插屏/横幅广告教程大全_bytedancecsjdemo-程序员宅基地

文章浏览阅读1.2w次,点赞4次,收藏19次。Android项目集成穿山甲开屏/插屏/横幅广告教程大全_bytedancecsjdemo

浏览器UI多线程及JavaScript单线程运行机制的理解-程序员宅基地

文章浏览阅读224次。在上一篇博客中,我对jQuery的队列(queue)机制和动画(animate)机制做了一个深入的解析,在animate的实现机制其核心是依靠queue来完成的,其中在jQuery的链式调用部分,之前我非常疑惑为什么animate内部只需要在第一次入队操作后进行一次出队,然后就可以在第一个动画完成后直接使用next()来实现下一个动画出队,这个问题一度让我非常的疑惑,通过接近三个小时的战斗(deb..._javascript 线程和 ui 线程

Btrfs文件系统使用说明_scanning for btrfs filesystems failed to send flus-程序员宅基地

文章浏览阅读2.4k次。1 Btrfs简介 Btrfs被称为是下一代 Linux文件系统。近年来 ext2/3遇到越来越多的扩展性问题,在期待 ext4的同时,人们发现了 btrfs,据说它采用了很多先进的文件系统设计,不仅解决了 ext2/3 的扩展性问题,还让人们看到了下一代文件系统所具有的许多其他特性。在 btrfs 的主页上看到 btrfs的特性列表。首先是扩展性_scanning for btrfs filesystems failed to send flush request: operation not p

推荐文章

热门文章

相关标签