Hadoop介绍
Apache Hadoop 是Apache开源组织的一个分布式计算开源框架,提供了一个分布式文件系统子项目(HDFS)和支持MapReduce分布式计算的软件架构。简单来说,Hadoop是一个可以更容易开发和运行处理大规模数据的软件平台。Hadoop实现了一个分布式集群文件系统(HadoopDistributedFileSystem)。分布式集群文件系统的意思是:每台计算机各自提供自己的存储空间,并各自协调管理所有计算机节点(node)中的文件。
Hadoop · MapReduce
Architecture
Hadoop在网络计算机集群上执行,每个节点运行一组守护进程。
• 资源管理器ResourceManager — computing
• 节点管理器NodeManager — computing
• 名称节点NameNode — storage
• 二级节点名称SecondaryNameNode — storage
• 数据节点DataNode — storage
Master-Slave architecture
Map/Reduce框架由一个单独的master JobTracker 和每个集群节点一个slave TaskTracker共同组成。master负责调度构成一个作业的所有任务,这些任务分布在不同的slave上,master监控它们的执行,重新执行已经失败的任务。而slave仅负责执行由master指派的任务。
Master节点 (1)
• 管理所有Slave的节点
• 接受外界请求
• 分配谁什么时候执行什么任务
• 与Slave节点交流
Slave节点 (1..*)
• 执行任务
• 执行Master节点
Job flow
- 将input data分成到computing chunks中
- 将一个chunk分配到一个Map 节点
- 运行所有的Mappers
- Shuffle and sort
- 运行所有的Reducers
- Reducers的结果组成了这个job的output
Hadoop 优缺点
Hadoop 并不是针对所有情况的完美的解决方案
1. Hadoop是一个batch processing framework,用来处理非常大的dataset
2. Hadoop时延高,只适用Batch数据处理,对于交互式数据处理,实时数据处理的支持不够
2. 因为data已经是distributed,Hadoop在处理Map phase的时候很高效(efficient)
2. Hadoop在I/O communication方面表现不是那么好。Hadoop在job运行过程中,频繁的对hdfs进行文件读取/写入操作,io操作频繁。并且shuffle and sort会引发large network traffic
4. Hadoop没有对迭代(iteration)的原生支持
5. Hadoop只有一个同步屏障(synchronisation barrier)