Mapreduce如何在KFS上发生?

时间:2013-02-22 06:32:49

标签: hadoop mapreduce

我想了解如何使用KFS作为Hadoop中的文件系统来实现mapreduce。

  
    

#。/ bin / start-mapred.sh
     如果map / reduce作业/任务跟踪器已启动,则所有I / O都将完成KFS。

  

因此,假设我的输入文件分散在不同的节点(Kosmos服务器)中,我如何(使用KFS作为文件系统的hadoop客户端)发出Mapreduce命令?

此外,在发出Mapreduce命令后,我的hadoop客户端将从不同服务器获取所有数据到我的本地机器,然后执行Mapreduce或者它会在输入文件所在的机器上启动TaskTracker守护程序在那里找到并执行Mapreduce? 如果我错了请纠正我,但我想输入文件顶部Mapreduce的位置是由函数getFileBlockLocations(FileStatus,long,long)返回的。

非常感谢您的时间并帮助我。

此致 NIKHIL

1 个答案:

答案 0 :(得分:1)

没有。 MapReduce是一个以分布式方式在所有节点中运行的程序。主节点将像负责完成工作的所有数据/从节点的主管。 Fig :1

映射减少任务

  • MapReduce作业通常将输入数据集拆分为独立的 由地图任务以完全平行的方式处理的块 方式。

  • 框架对地图的输出进行排序,然后输入 减少任务。

  • 通常,作业的输入和输出都存储在一个中 文件系统。

  • 框架负责安排任务,监控任务和 重新执行失败的任务。

Fig: 2 Fig: 3 上图:3显示了MapReduce如何在节点级别发生。

现在关于你的KFS:

当Hadoop map / reduce跟踪器启动时,这些进程(在本地和远程节点上)现在需要加载KFS的libkfsClient.so库。

为简化此过程,建议将libkfsClient.so存储在NFS可访问目录中(类似于存储Hadoop二进制文件/脚本的位置);然后,修改Hadoop的conf / hadoop-env.sh,添加以下行并为

提供合适的值
<path>:
export LD_LIBRARY_PATH=<path>

点击此链接:http://hadoop.apache.org/docs/current/api/org/apache/hadoop/fs/kfs/package-summary.html