我在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配置......
答案 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)位置并忽略我上面写的内容。