2014-10-30 249 views
2

上存储的MapReduce中间输出,可以使用一个Hadoop(版本1.2.0)16个节点,一个具有通过专用网络(从站)连接的公共IP(主)及15的集群。远程服务器

是否有可能使用远程服务器(除了这些16个节点),用于存储映射器的输出是什么?问题是在映射阶段期间节点磁盘空间不足,我无法再压缩映射输出。

我知道mapred-site.xml中的mapred.local.dir用于设置存储tmp文件的dirs的逗号分隔列表。理想情况下,我想在远程服务器上有一个本地目录(默认目录)和一个目录。当本地磁盘已满时,我想使用远程磁盘。

回答

0

的解决方案是使用iSCSI technology。技术人员帮助我们实现这一目标,所以很遗憾,我无法提供更多细节。

我们将远程磁盘安装到每个从节点的本地路径(/mnt/disk),并在那里创建了tmp文件,并为所有用户提供rwx权限。

然后,我们改变了$HADOOP_HOME/conf/mapred-site.xml文件并添加属性:

<property> 
    <name>mapred.local.dir</name> 
    <value>/mnt/disk/tmp</value> 
</property> 

最初,我们有两个,逗号分隔值该属性,第一是默认值,但它仍然没” t按预期工作(我们仍然有一些“设备上没有剩余空间”的错误)。所以我们在那里只剩下一个价值。

3

我不是很肯定这个,但按照链接(http://hadoop.apache.org/docs/current/hadoop-mapreduce-client/hadoop-mapreduce-client-core/mapred-default.xml)它说:

本地目录是哪里的MapReduce存储中间数据文件。 可能是在 为了传播磁盘I/O不同设备上的目录的逗号分隔的列表。不存在的目录被忽略。

还有一些,你应该检查出一些其他属性。这些可能会有所帮助:

  1. mapreduce.tasktracker.local.dir.minspacestart:如果空间mapreduce.cluster.local.dir根据本下降,不要求更多的任务。以字节为单位值

  2. mapreduce.tasktracker.local.dir.minspacekill:如果在这mapreduce.cluster.local.dir空间下降,直到所有当前那些已经完成,并清理不问更多的任务。另外,为了保存我们正在运行的其他任务,请杀死其中一个,清理一些空间。从减少任务开始,然后去完成最少的任务。值以字节为单位。

+0

对于这两个属性来说+1,的确很有用。谢谢!我将深入研究这些。我已经知道答案的第一部分,我的问题是如何做到这一点。 – vefthym 2014-10-30 11:01:51