Hadoop 系列之 1.0 和2.0 架构

自学大数据有一段时间了,找工作历时一周,找到一家大厂,下周入职,薪资待遇还不错,公司的业务背景自己也很喜欢。趁着还没有入职,给大家争取先把 Hadoop 系列的文章总结完毕,可以当做科普文,也可以当做笔记收藏。经过查阅各种资料,保证我的理解没有偏差。但是也难免会有疏漏,欢迎朋友们留言给我进行交流。我的座右铭就是:认真搞定一切!绝对保证一字一字好好斟酌,技术不能有半点马虎。

目前 Hadoop 系列文章的规划就是这样,其它的小组件先不进行总结,以后会慢慢涉及到的。

Hadoop 生态系列之 1.0 和 2.0 架构
Hadoop 生态系列之 HDFS
Hadoop 生态系列之 Mapreduce
Hadoop 生态系列之 Yarn
Hadoop 生态系列之 Zookeeper
Hadoop 生态系列之 Hive
Hadoop 生态系列之 HBase

学习大数据的前提思想:分而治之。

先来一个题目大家思考一下:给定a、b两个文件,各存放50亿个url,每个url各占64字节,内存限制是4G,让你找出a、b文件共同的url?

这个问题不要急着我上网去查。先思考一下,结合上面我提到的「分而治之」的思想。思路会在文末给出。

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。建议大家都看看论文原文,后台回复谷歌论文即可。

2006 年 Docu Cutting 开源了 Hadoop,名字取自于他儿子的玩具小象 Hadoop。

Hadoop 1.0 是指 MapReduce  +  HDFS,Hadoop 2.0 是指 MapReduce + HDFS + Yarn。

在再细分一下:

大数据解决框架解决的问题大体可以分为两个方面:一是海量数据的存储、二是海量数据的计算。

2Hadoop 1.0 架构

为了解决上述问题,推出了一系列的解决方案,其中开源框架中比较出名的就是 Hadoop 了,提供了分布式存储系统 HDFS 和分布式计算模型 MapReduce。

Hadoop1.0 即第一代 Hadoop,指的是版本为 Apache Hadoop 0.20.x、1.x或者 CDH3 系列的 Hadoop,内核主要由 HDFS 和 MapReduce 两个系统组成,其中MapReduce是一个离线处理框架,由编程模型(新旧API)、运行时环境(JobTracker 和 TaskTracker)和数据处理引擎(MapTask和ReduceTask)三部分组成。

先来说一下  HDFS 的架构,架构图如下:


分布式系统最怕的就是出现单节点的问题,很容易成为性能瓶颈。HDFS 1.0 中使用 NameNode 做为主节点,SecondaryNameNode 作为从节点,但是这里的从节点不能作为主节点的备份。

分布式计算,MapReduce 1.0 的架构如下:

缺点是: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上的离线处理框架。

1、针对Hadoop1.0单NameNode制约HDFS的扩展性问题,提出HDFS Federation,它让多个NameNode分管不同的目录进而实现访问隔离和横向扩展,同时彻底解决了NameNode单点故障问题;
2、针对Hadoop1.0中的MapReduce在扩展性和多框架支持等方面的不足,它将JobTracker中的资源管理和作业控制分开,分别由ResourceManager(负责所有应用程序的资源分配)和ApplicationMaster(负责管理一个应用程序)实现,即引入了资源管理框架Yarn。
3、Yarn作为Hadoop2.0中的资源管理系统,它是一个通用的资源管理模块,可为各类应用程序进行资源管理和调度,不仅限于MapReduce一种框架,也可以为其他框架使用,如Tez、Spark、Storm等。

HDFS 在 Hadoop 2.0 中的架构图如下:
NameNode 变为两个,一个主节点,一个从节点,主节点负责接收客户端的读写请求,从节点同步主节点的元数据。两个 NameNode 就需要保持元数据一致,这个是由 JN 集群来完成的。主从节点的自动切换是由 ZKFC 来完成的。这里面的细实现细节很重要。对于理解分布式应用也是一种帮助。Hadoop 的 高可用原理:Hadoop HA 深度解剖。

Hadoop 2.0新引入的资源管理系统,直接从MRv1演化而来的;核心思想:将MRv1 中 JobTracker 的资源管理和任务调度两个功能分开,分别由 ResourceManager 和 进程实现。
1.ResourceManager负责资源管理和调度;
2.ApplicationMaster:负责任务切分、任务调度、任务监控和容错等。
3.MapTask/ReduceTask:任务驱动引擎,与MRv1一致

注意:每个 MapRduce 作业对应一个 ApplicationMaster 任务调度。

使用 Yarn 资源调度和任务管理。Hadoop 2.0 中 YARN的引入,使得多个计算框架可运行在一个集群中。

今天这篇文章主要是介绍一下 Hadoop 1.0 和 2.0 的架构,以及 2.0 改善的地方。继续深挖的话,东西太多了,你学的越深,不会的东西就越多。但是做研究就是这样,没有一个人敢说自己在某一方面很完美,随着升级打怪的难度提升,不懂的就越多,人生就是这样一个大游戏啊。今天关于架构就介绍到这里,有什么正确的地方欢迎留言指出。

回答一下开头的思路:分而治之。
Q:给定a、b两个文件,各存放50亿个url,每个url各占64字节,内存限制是4G,让你找出a、b文件共同的url?
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,存到文件里面就可以了。

Hadoop 中 MapReduce 计算模型就是分而治之思想的一种实现,更重要对于我们开发者来说使用很简单,只需要开发的过程中使用对应的模块就可以完成我们的分布式应用,Map 和 Reduce 细节不需要我们关心。

(全文完)


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

Hadoop 系列之 1.0 和2.0 架构相关推荐

  1. Hadoop 生态系列之 1.0 和 2.0 架构

    自学大数据有一段时间了,找工作历时一周,找到一家大厂,下周入职,薪资待遇还不错,公司的业务背景自己也很喜欢.趁着还没有入职,给大家争取先把 Hadoop 系列的文章总结完毕,可以当做科普文,也可以当做 ...

  2. Hadoop 基础系列一Hadoop 系列之 1.0 和2.0 架构

    精选30+云产品,助力企业轻松上云!>>> Hadoop 系列之 1.0 和2.0 架构 自学大数据有一段时间了,找工作历时一周,找到一家大厂,下周入职,薪资待遇还不错,公司的业务背 ...

  3. 积少成多 Flash(ActionScript 3.0 Flex 3.0) 系列文章索引

    [源码下载] 积少成多 Flash(ActionScript 3.0 & Flex 3.0) 系列文章索引 作者:webabcd Flash 之 ActionScript 3.0  1.积少成 ...

  4. 华为P50系列已适配鸿蒙OS 2.0 Beta2:有望4月亮相

    此前有爆料达人表示华为P50系列今年将推迟至4月发布,由于芯片问题,备货遭遇前所未有的影响.近日,华为官方再次透露关于该机的消息,称其将首发鸿蒙OS 2.0 Beta 2系统. 据华为B站联合运营账户 ...

  5. vSphere 5.0 开发系列(一)vSphere 5.0 环境搭建手顺

    vSphere 5.0 开发系列(一)vSphere 5.0 环境搭建手顺 首先我们要简单了解一下vSphere整体设计结构. 接下来开始做服务器吧. 一.先做ESXi5.0服务器 找到一台干净服务器 ...

  6. 华为p10android版本,华为P10系列什么时候升级安卓8.0?官方给出答案

    华为P10系列什么时候升级安卓8.0?官方给出答案 系统可以说是手机的灵魂,作为不可或缺的一部分,每每更新都引人关注.前阵子,Android 8.0正式发布了,很多手机也开始适配新系统.华为作为手机行 ...

  7. 游戏开发 unity3d python_游戏研发系列 Unity3D/2D游戏开发从0到1 第2版.pdf

    作 者 :刘国柱著 出版发行 : 北京:电子工业出版社 , 2018.01 ISBN号 :978-7-121-33499-3 页 数 : 507 丛书名 : 游戏研发系列 原书定价 : 99.00 开 ...

  8. Debezium系列之:安装部署debezium2.0以上版本的详细步骤

    Debezium系列之:安装部署debezium2.0以上版本的详细步骤 一.相关技术博客 二.升级debezium2.0以上版本注意事项 三.安装jdk 四.修改kafka相关参数 五.启动kafk ...

  9. hadoop集群安装ES(ElasticSearch 5.0.2)

    配置/etc/hosts,ntp服务,免密码登录,关闭防火墙这里不做详细说明. 安装java环境 [root@manager ~]# mkdir /usr/java [root@manager ~]# ...

最新文章

  1. Ubuntu的apt-get使用国内的源
  2. android----HttpClient的get,post和图片上传服务器
  3. JVM系列二:垃圾回收
  4. Lightoj-1356 Prime Independence(质因子分解)(Hopcroft-Karp优化的最大匹配)
  5. python的闭包要素_Python的闭包
  6. python大数据培训好不好
  7. seaweedfs学习
  8. 百度有道谷歌api集成批量翻译器
  9. 快捷指令 python_有没有硬核的iOS快捷指令推荐(实用性)?
  10. FFmpeg的音频处理详解
  11. 企业做营销型网站的目的
  12. 粗虚线和细虚线_高速虚线两侧是粗虚线 高速公路虚线两边加斜线什么意思?...
  13. 计算机实习生听课记录,实习生听课记录
  14. 将iTunes降级到12.6版本
  15. POJ 3264 Balanced Lineup
  16. IDEA快捷键设置复制上一行
  17. 热辣7月,惊爆福利 统信UOS个人体验版最佳体验师就是你!
  18. Unable to interpret the implicit parameter configuration with dataType
  19. java计算机毕业设计共享汽车管理系统源码+mysql数据库+系统+lw文档+部署
  20. Java“彭于晏,kafka教程

热门文章

  1. Spring Boot与RESTful API
  2. 杨辉三角_二维数组的好例子(转载)
  3. Nagios 安装教程
  4. jquery学习。。
  5. 欲取代硬盘?SSD固态存储器前景分析
  6. 面试精讲之面试考点及大厂真题 - 分布式专栏 04 谈谈你对分布式的理解,为什么引入分布式?
  7. Ngnix的TCP和UDP负载平衡配置
  8. 容器编排技术 -- Kubernetes kubectl edit 命令详解
  9. JAVA创建一个私有域_使用java基础反射访问私有域、方法和构造函数
  10. iOS与H5交互(WKWbebView)