Hadoop的起源
发展历史
2003-2004年,Google公布了部分GFS和MapReduce思想的细节,受此启发的Doug Cutting等人用2年的业余时间实现了DFS和MapReduce机制,使Nutch性能飙升。然后Yahoo招安Doug Gutting及其项目。
2005年,Hadoop作为Lucene的子项目Nutch的一部分正式引入Apache基金会。
2006年2月被分离出来,成为一套完整独立的软件,起名为Hadoop
Hadoop名字不是一个缩写,而是一个生造出来的词。是Hadoop之父Doug Cutting儿子毛绒玩具象命名的。
追本溯源
Hadoop起源于Google的三大论文 ,而Google的这三篇论文则主要解决了大数据存储和计算的问题,他们的目的是能用PC机就不用高端存储,降低成本,通过软件来保证可靠性,将硬件故障视为常态,简化并行分布式计算,无须控制节点同步和数据交换。
GFS:Google的分布式文件系统Google File System
MapReduce:Google的MapReduce开源分布式并行计算框架
BigTable:一个大型的分布式数据库
演变关系
GFS —> HDFS
Google MapReduce —> Hadoop MapReduce
BigTable —> HBase
Hadoop的优势
- 高可靠性:底层存储多个数据副本,某个节点的宕机不会影响数据的存储和计算。
- 高扩展性:集群的数据节点可轻松扩展。
- 高效性:在 MapReduce的思想下,Hadoop是并行工作,节点之间是并行计算后统计汇总的。
- 高容错性:自动将失败的任务重新分配。
Hadoop1.X 和 Hadoop2.X区别
Hadoop1.x: MapReduce + HDFS + Common
Hadoop2.x: MapReduce + HDFS + Common + Yarn
Hadoop1.x时,MapReduce同时处理逻辑运算和资源调度,Hadoop2.x增加了Yarn,由Yarn来负责资源的调度,MapReduce只负责运算,降低了耦合,Hadoop3.x则在2.x基础上改进了容错机制,可通过Erasure编码来处理,降低了存储开销,以前因为副本方案存储6块数据需要18块空间,而现在只需要9块空间,还有一些其他的扩展和优化,此处不再展开。
HDFS 的基本组件
hdfs架构图:
1. NameNode(NN)
存储文件的元数据,文件名,目录结构,文件属性(时间,副本数,文件权限)等,以及每个文件的块列表和块所在的DataNode等。
2. DataNode(DN)
在本地文件系统存储文件块数据,以及块数据的校验和。
3. SecondaryNameNode(2NN)
用来监控HDFS状态的辅助后台程序,每隔一段时间获取HDFS元数据的快照,辅助NN,分担其工作量。
Block块:
HDFS最小的存储单元,任何文件写入HDFS都会被打散成一个个小块儿,默认大小是128MB,Hadoop2.7.3之前是64MB。
Yarn 的架构和组件
Yarn架构图:
1. ResourceManager(RM)
它是一个全局资源管理器,负责整个系统的资源调度和分配。
- 处理客户端的请求
- 监控NodeManager的运行
- 启动和监控ApplicationMaster
- 根据应用程序的资源请求分配资源,资源容器就是资源分配单元的一个抽象概念(Resource Container)
2. ApplicationMaster(AM)
- 与RM调度器协商以获取资源(以Container表示)
- 将得到的任务进一步分配给内部的任务(NM)
- 与NM通信以启动/停止任务
- 监控所有任务运行状态,并在任务失败时重新为任务申请资源以重启任务
3. NodeManager(NM)
NM是每个节点(DataNode)上的资源和任务管理器
- 定时向RM汇报本节点上的资源使用情况和Container的运行状态
- 接受并处理来自AM的Container启动/停止等请求。
4. Container
它是Yarn中的资源抽象,封装了节点上的多维资源,如CPU、内存、磁盘、网络等。当AM向RM申请资源时,RM向AM返回的资源便是用Container表示的。
MapReduce架构
MapReduce将计算过程分为两个阶段,Map和Reduce
- Map阶段并行处理输入数据
- Reduce阶段对Map结果进行汇总
MapReduce架构图:
大数据应用
大数据+物流 / 零售 / 旅游 / 广告推荐 / 金融 等等,总之就是通过分析用户商家的各类数据,协助商家提供更便捷的管理,更友好的服务,更智慧的营销。