2013-02-22 45 views
0

我想了解如何使用KFS作为Hadoop中的文件系统进行mapreduce。Mapreduce如何在KFS上发生?

#./bin/start-mapred.sh
如果map/reduce作业/任务服务器都在涨,所有的I/O工作将KFS。

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

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

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

问候, 尼基尔

+0

你提的Kosmos文件系统(KFS) – azzaxp 2013-02-22 06:38:54

+0

是。感谢您的回复,但我仍然不清楚Mapreduce究竟在哪里发生? – user2095164 2013-02-22 07:51:43

+0

Chk my已更新的答案。 – azzaxp 2013-02-22 09:41:14

回答

1

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

地图减少任务

  • 甲MapReduce工作通常将输入数据集成由地图任务以完全并行 方式处理独立 块。

  • 该框架对映射的输出进行排序,然后输入到reduce任务中的 。

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

  • 该框架负责调度任务,监控它们并且
    重新执行失败的任务。

Fig: 2 Fig: 3 上面的图3显示了MapReduce的是如何发生的,在节点级。

现在,你对你的KFS:

当Hadoop的地图/减少跟踪器启动,这些过程(在本地和远程节点)现在需要加载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

+1

这里图2中解释的输出文件也存储在分布式系统的KFS/HDFS中。 – azzaxp 2013-02-22 09:42:18

+0

嗨!非常感谢你付出了很多努力来回答我的问题。该图很好地解释了MapReduce实际发生的情况。在Hadoop中有像HDFS/KFS/S3 /等不同的FileSystems。在S3的情况下,数据被提取到本地机器,然后在其上完成MR。在下面的评论中继续...... – user2095164 2013-02-22 10:32:47

+0

因此,我想问一下,在KFS的情况下,数据是从不同服务器拉到本地机器上的吗?或者MR框架是否在包含MR输入数据的节点上启动TaskTracker守护进程,因此MR是否在没有任何数据抓取的情况下执行?你已经指定的链接,我已经看到,但它并没有明确回答这个问题。感谢您的时间和精力。 – user2095164 2013-02-22 10:33:25