自学大数据有一段时间了,找工作历时一周,找到一家大厂,下周入职,薪资待遇还不错,公司的业务背景自己也很喜欢。趁着还没有入职,给大家争取先把 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。

image

在再细分一下:

image

大数据解决框架解决的问题大体可以分为两个方面:一是海量数据的存储、二是海量数据的计算。
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 的架构,架构图如下:

image

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

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

image

缺点是: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 中的架构图如下:

image

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

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

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

image

使用 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 细节不需要我们关心。

(全文完)


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

image.png

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

  1. Hadoop 生态系列之 Mapreduce

    阅读文本大概需要 5 分钟.文章稍长,建议收藏慢慢看. 目前 Hadoop 系列文章的规划就是这样,持续补充完善中- 同时可以访问 https://data.cuteximi.com Hadoop 生 ...

  2. Hadoop 生态系列之 HDFS

    目前 Hadoop 系列文章的规划就是这样,持续补充完善中... 同时可以访问 :https://data.cuteximi.com Hadoop 生态系列之1.0和2.0架构 Hadoop 生态系列 ...

  3. 【Hadoop】Hadoop生态系列之MapReduce概述及MapReduce任务开发与发布

    上一篇:Hadoop生态系列之HDFS常用Shell命令实践及Java API操作HDFS 这里写目录标题 MapReduce 概述 流程分析 环境搭建 MapReduce任务开发 背景 实现 任务发 ...

  4. Hadoop 系列之 1.0 和2.0 架构

    Hadoop 系列之 1.0 和2.0 架构 自学大数据有一段时间了,找工作历时一周,找到一家大厂,下周入职,薪资待遇还不错,公司的业务背景自己也很喜欢.趁着还没有入职,给大家争取先把 Hadoop ...

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

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

  6. hadoop生态的kerberos认证系列2-hadoop

    hadoop生态的kerberos认证系列2-hadoop 一.准备工作 二.配置 1.hdfs配置kerberos认证 1.1所有节点安装autoconf 1.2所有节点安装gcc 1.3安装jsv ...

  7. Hadoop学习系列之Hadoop、Spark学习路线(很值得推荐)

    Hadoop学习系列之Hadoop.Spark学习路线(很值得推荐) 文章出自:http://www.cnblogs.com/zlslch/p/5448857.html 1 Java基础: 视频方面: ...

  8. Python +大数据-Hadoop生态-Linux(二)-集群搭建和安装

    Python +大数据-Hadoop生态-Linux(二)-集群搭建和安装 今日课程学习目标 1.掌握Linux用户.权限管理 2.掌握Linux常用系统命令 3.掌握服务器集群环境搭建 4.了解sh ...

  9. Hadoop生态之Mapreduce

    今天给大家带来的是Hadoop生态中的Mapreduce,看到这里诸佬们可能就有疑惑了呢,啥是Mapreduce?小小的脑袋大大的疑惑. 在上篇博客中博主使用了王者来举例子,如果把Hadoop当作王者 ...

最新文章

  1. QT 通过QNetworkReply *获取对应请求的URL地址
  2. mysql 安装目录说明
  3. Sql自动配置器原理及其说明
  4. css案例学习之id要唯一
  5. P2639 [USACO09OCT]Bessie的体重问题 【背包问题】
  6. javascript有关this的那些事(某渣提出的问题)
  7. mysql sqrt_详解MySQL中的SQRT函数的使用方法
  8. listary的使用教程
  9. 自动采集电影网站PHP源码
  10. 倾斜摄影OSGB转换为3DTiles
  11. Excel快速填充小技巧,这几个技能你会了吗
  12. MongoDB 之滴滴、摩拜都在用的索引-educoder上面的题目以及笔记
  13. android 手机存储大小设置,如何让手机内存变大?内存不足解决方法【详解】
  14. CDQ分治——学习笔记
  15. Centos7虚拟机下安装配置Tomcat
  16. 信息安全——大整数包的设计!
  17. es android,ES文件浏览器
  18. php算法结构,PHP递归算法实现无限分类 - YangJunwei
  19. 关于游戏测试岗位的一些理解和建议
  20. python考试报名入口_考试报名管理系统

热门文章

  1. pandas计算时间的间隔天数
  2. 今天学习了无序列表和有序列表和使用HTML5创建表格
  3. Hotspot JVM的常用选项
  4. Hadoop单机模式安装入门(Ubuntu系统)
  5. 64位windows系统如何显示32位dcom组件配置
  6. LaTeX 目录中显示“参考文献”条目
  7. 电脑速度太慢 重装系统不如换个帐户
  8. Java 9 特性与示例
  9. 你真正了解public、internal、protected、private吗?不妨幽默一些
  10. linux系统wget、curl终端命令行获取公网ip地址及其他网络信息