总结:
- Hadoop是什么?
- Hadoop生态系统
2.1 总体结构与核心模块
2.2 HFDS : 分布式文件存储
2.3 Yarn: Hadoop的资源管理/分布式计算框架
2.4 MapReduce原理和图例:并行处理,降维运算。
2.5 什么时候不采用Hadoop?
1. Hadoop是什么?
Hadoop是一个开源框架,可编写和运行分布式应用处理大规模数据(PB级)。 Hadoop框架的核心是HDFS和MapReduce。其中 HDFS 是分布式文件系统,MapReduce 是分布式数据处理模型和执行环境。
2. Hadoop生态系统
目前Hadoop生态系统的组合是十分多变的,核心是HFDS,YARN, MapReduce。其他几乎都可以集成各种不同的软件。
2.1 总体结构与核心模块
以下是一种可能的Hadoop生态系统和其层次结构:
2.2 HFDS : 分布式文件存储
- 用于存储大量文件,最高能到200PB, 4500台服务器,一亿个文件和模块。
- 核心原理:把文件切成小块,分别存到不同的服务器中,并做冗余备份。
- 目的: 数据分区-->可存取大数据;冗余-->提高容错性即提供不同的数据位置。
2.3 Yarn: Hadoop的资源管理/分布式计算框架
HDFS集群和YARN集群,两者逻辑上分离,但物理上常在一起。
YARN集群:负责海量数据运算时的资源调度,集群中的角色主要有 ResourceManager /NodeManager
3. 核心原理:resource manager管理资源调度到哪里(大boss),并且通过node manager与不同设备沟通(小上司)。一个node manager就是一台设备。
类比:大boss和各部门的上司沟通,规定不同部门要干什么;然后小上司鞭策小工赶紧get the shit done.
为什么需要它:方便多种应用同时运行,没有它一次只能运行一种应用。(因为HFDS上面直接的MapReduce了)
2.4 MapReduce原理和图例:并行处理,降维运算。
一些想到的类比:
把一个原来三维的东西变成了两维的。有点像机器学习的PCA,把三维的东西做个映射变为一个平面。或者把一个三维的立方体魔方,通过计算每个面各种颜色的格子数,变成了一个二维映射表格。
2.5 什么时候不采用Hadoop?
-
以下五种情况需要小心:
-
不适合的操作和原因:
2.1 经过上面三层的核心,存取信息是需要经过MapReduce和YARN做处理,也就是需要时间。不适合快速存取操作。
2.2 小的数据集,没必要花这个处理时间。
2.3 任务级的并行处理要小心,(我觉得不同设备时延不同可能有点问题)
2.4 Advanced Algorithms, 算法任务需要小心,算task的一种吧。例如用来做机器学习的迭代,这个都迭代三次了,另一个因为时延和运算能力可能只迭代了一次这样。
2.5 更换基础设备时要小心,Hadoop只是可考虑的一种,而不一定是最好的解决方法。
2.6 Random Data Access:因为分块了,这样不太方便。
参考资料:
- Coursera 大数据导论 [美国加州大学圣地亚哥分校]
- Hadoop生态系统
2018.5.7