大数据与Hadoop:核心技术与实践指南
1. Hadoop中的大数据处理挑战与优化
在处理大数据时,文件存储和处理的效率至关重要。如果一个文件非常大,需要10,000个块来存储,这意味着要进行10,000次映射操作。然而,若只有10台服务器,就需要向每台服务器发送1,000次映射操作。这种方式可能并非最优,因为它会因磁盘I/O操作和每个映射的资源分配设置而导致高成本。
理想的归约器数量应接近以下条件:
- 块大小的倍数
- 任务时间在5到15分钟之间
- 尽可能创建最少的文件
用户常倾向于使用过高或过低的值,这两种做法都很危险,可能导致以下问题:
- 工作流下一阶段性能不佳
- 洗牌阶段性能糟糕
- 因向名称节点加载无用对象而导致整体性能下降
- 无合理原因地破坏磁盘I/O
- 因处理大量CFIF/MFIF工作而产生大量网络传输
2. Hadoop YARN:作业管理的变革
Hadoop 1中,作业管理和监控由JobTracker和TaskTracker完成。JobTracker负责协调所有MapReduce作业,处理服务器故障和资源重新分配等;TaskTracker监控本地作业执行并向JobTracker反馈状态。
但随着Hadoop的发展,这种设计出现了局限性:
- NameNode同时管理作业调度和资源监控,一旦NameNode故障,集群活动将立即停止。
- 所有作业必须用MapReduce框架编写。
Hadoop 2引入了YARN,解决了这些问题:
- 作业管理、调度和资源监控功