在远程服务器上存储mapreduce中间输出

时间:2014-10-30 09:04:53

标签: hadoop mapreduce storage iscsi

我使用一个16个节点的hadoop(版本1.2.0)群集,一个带有公共IP(主站),15个通过专用网络(从站)连接。

是否可以使用远程服务器(除了这16个节点)来存储映射器的输出?问题是在映射阶段节点的磁盘空间不足我不能再压缩地图输出了。

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

2 个答案:

答案 0 :(得分: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.   
  3. mapreduce.tasktracker.local.dir.minspacekill :如果mapreduce.cluster.local.dir中的空格在此下面,请不要询问更多任务,直到所有当前任务完成并清理干净。另外,为了保存我们运行的其余任务,杀死其中一个,以清理一些空间。从reduce任务开始,然后选择那些已完成最少的任务。以字节为单位的值。

  4.   

答案 1 :(得分: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>

最初,我们为该属性设置了两个以逗号分隔的值,第一个是默认值,但它仍然没有按预期工作(我们仍然有一些&#34;设备上没有剩余空间& #34;错误)。所以我们只剩下一个值。