Hadoop的运行流程:
- 客户端向HDFS请求文件存储或使用MapReduce计算。
- NameNode负责管理整个HDFS系统中的所有数据块和元数据信息;DataNode则实际存储和管理数据块。客户端通过NameNode查找需要访问或处理的文件所在的DataNode,并将操作请求发送到相应的DataNode上。
- 当客户端上传一个新文件时(比如输入某些日志),它会被分成固定大小(默认64MB)并进行数据复制以保证可靠性。这些被称为“块”的小段才能与其他硬件组合得出代价最小化、且最佳速度/容错平衡所需表现出来呈现极高效率,并用checksum标记各实例在磁盘上是否一致。
- 数据已经保存在位于本地节点存储空间位置内,然后开始进入初始mapper/reducer任务管道处理阶段。(Mapper任务通常需要读取其中一部分输入记录并生成输出键值对给reducer;第二个reducer任务read前面评估器输出字节码映射子集与之相关联,注意写入不同单元)。
- Mapper 生成中间结果后,结果根据key排序并重新分配给下一级别stage管道里面去展开reducer工作,直至最终输出结果得到计算。
- 输出文件缺省有两个副本。
简单案例
需要注意的是此流程依赖于MapReduce执行模式。
- 准备工作
安装Hadoop集群,并将数据文件传输到HDFS中。
- 编写Mapper类
每个Mapper类负责解析输入并产生键/值对。在这个简单的案例中,我们已经将整个文件读入内存,并将其行进行拆分:
public class WordCoun