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

3npbholx  于 2021-06-02  发布在  Hadoop
关注(0)|答案(2)|浏览(399)

我使用的hadoop(版本1.2.0)集群有16个节点,其中一个节点有一个公共ip(主节点),15个节点通过一个私有网络(从节点)连接。
是否可以使用远程服务器(除了这16个节点)来存储Map器的输出?问题是在Map阶段节点的磁盘空间不足,我无法再压缩Map输出。
我知道 mapred.local.dirmapred-site.xml 用于设置存储tmp文件的目录的逗号分隔列表。理想情况下,我希望在远程服务器上有一个本地目录(默认目录)和一个目录。当本地磁盘填满时,我想使用远程磁盘。

c7rzv4ha

c7rzv4ha1#

我不是很确定,但根据链接(http://hadoop.apache.org/docs/current/hadoop-mapreduce-client/hadoop-mapreduce-client-core/mapred-default.xml)上面说:
本地目录是mapreduce存储中间数据文件的目录。可以是不同设备上以逗号分隔的目录列表,以便分散磁盘i/o。不存在的目录将被忽略。
还有一些其他的属性,你应该检查一下。这些可能会有所帮助:
mapreduce.tasktracker.local.dir.minspacestart:如果mapreduce.cluster.local.dir中的空间落在下面,则不要请求更多任务。值(字节)
mapreduce.tasktracker.local.dir.minspacekill:如果mapreduce.cluster.local.dir中的空间落在下面,在当前所有任务完成并清理之前,不要询问更多任务。另外,要保存我们正在运行的其他任务,请杀死其中一个,以清理一些空间。从减少任务开始,然后选择完成最少的任务。以字节为单位的值。

mznpcxlj

mznpcxlj2#

解决方案是使用iscsi技术。一位技术人员帮助我们实现了这一点,所以不幸的是,我无法提供更多的细节。
我们将远程磁盘挂载到本地路径( /mnt/disk )并创建了一个 tmp 在那里归档,用 rwx 所有用户的特权。
然后,我们换了房间 $HADOOP_HOME/conf/mapred-site.xml 文件并添加了属性:

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

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

相关问题