我想了解mapreduce是如何在hadoop中使用kfs作为文件系统的。
./bin/start-mapred.sh文件
如果map/reduce job/task跟踪器启动,所有i/o都将执行到kfs。
那么,假设我的输入文件分散在不同的节点(kosmos服务器)中,我(使用kfs作为文件系统的hadoop客户机)如何发出mapreduce命令呢?
此外,在发出mapreduce命令之后,我的hadoop客户机会从不同的服务器获取所有数据到我的本地机器,然后执行mapreduce吗?还是会在输入文件所在的机器上启动tasktracker守护程序并在那里执行mapreduce?如果我错了,请纠正我,但是我假设输入文件top mapreduce的位置是由函数getfileblocklocations(filestatus,long,long)返回的。
非常感谢你抽出时间来帮助我。
你好,尼基
1条答案
按热度按时间abithluo1#
不,mapreduce是一个以分布式方式在所有节点上运行的程序。主节点就像是负责完成工作的所有数据/从节点的主管。
Map减少任务
Map缩小 工作 通常将输入数据集分割成独立的块,由 Map任务 以完全平行的方式。
该框架对Map的输出进行排序,然后将其输入到 减少任务。
通常,作业的输入和输出都存储在
文件系统。
该框架负责调度任务、监视任务并
重新执行失败的任务。
以上fig:3 shows mapreduce如何在节点级别发生。
现在您可以了解您的kfs:
当hadoop map/reduce跟踪器启动时,这些进程(在本地和远程节点上)现在需要加载kfs的libkfsclient.so库。
为了简化这个过程,建议存储
libkfsClient.so
在nfs可访问的目录中(类似于hadoop二进制文件/脚本的存储位置);然后,修改hadoop的conf/hadoop-env.sh,添加以下行并为查看此链接:http://hadoop.apache.org/docs/current/api/org/apache/hadoop/fs/kfs/package-summary.html