在/ tmp中设置hadoop.tmp.dir

时间:2016-12-06 14:24:36

标签: hadoop

我在Hadoop文档1中看到hadoop.tmp.dir的默认值为/tmp/hadoop-${user.name}但是如果我以这种方式设置它,当机器重新启动时,我会丢失数据吗?

我的意思是,也许我不必在真实的/tmp中设置它,但我需要在/home/myuser/tmp/hadoop-${user.name}中进行设置?

提前谢谢!

添加信息:

我在/ tmp / hadoop-hduser中设置了它,但计算机由于电源问题而中断了,今天我收到了这条消息:Call From java.net.UnknownHostException: hduser-machine: hduser-machine to localhost:54310 failed on connection exception: java.net.ConnectException: Connection refused; For more details see: http://wiki.apache.org/hadoop/ConnectionRefused我运行了这个命令hadoop namenode我得到了这个:ERROR namenode.NameNode: Failed to start namenode. org.apache.hadoop.hdfs.server.common.InconsistentFSStateException: Directory /tmp/hadoop-hduser/dfs/name is in an inconsistent state: storage directory does not exist or is not accessible.我认为这是由于/ tmp配置......

1 个答案:

答案 0 :(得分:2)

默认情况下,Hadoop配置为开箱即用。为实现这一目标,所有重要的(非临时的)dirs指向${hadoop.tmp.dir}内部,而/tmp指向dfs.namenode.name.dir dfs.datanode.data.dir dfs.namenode.checkpoint.dir ,而${hadoop.tmp.dir}又存在于所有Linux系统中。

因此,您还需要调整其他重要路径,请参阅hdfs-default.xml

git commit --amend "message to enter"

它们是单独的选项,因为在实际环境中,跨不同的物理存储设备分发临时和非临时数据可能是可行的。但是如果设置很小,那么技术上是,你可以将 DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance(); DocumentBuilder dBuilder = dbFactory.newDocumentBuilder(); Document doc = dBuilder.parse(new ByteArrayInputStream(XML.getBytes())); 指向某个持久性(非/ tmp)位置并忽略我上面写的内容。