我通过以下方式配置并部署了 Hadoop 单节点设置这教程。
一切都部署得很好,但是当我执行 jps 查看活动进程时,没有显示数据节点。
我尝试通过 手动启动 datanode $HADOOP_HOME/bin : hadoop -datanode
,但无济于事。
总而言之,Hadoop 集群中的 DataNode 进程根本没有运行。
另外,我想知道一台机器是否可以安装 2 个 Hadoop。我使用一个用于 mapreduce 进程,另一个用于搜索引擎。?所以它们的目录不同,这样可以吗?另外,我每次只运行一个 Hadoop 操作。
编辑1#:-
如果这有帮助,这是我尝试通过运行 datanode 时的日志$HADOOP_HOME
。
root@thinktank:/usr/local/hadoop/bin# hadoop datanode
Warning: $HADOOP_HOME is deprecated.
13/08/27 16:34:57 INFO datanode.DataNode: STARTUP_MSG:
/************************************************************
STARTUP_MSG: Starting DataNode
STARTUP_MSG: host = thinktank/127.0.1.1
STARTUP_MSG: args = []
STARTUP_MSG: version = 1.2.1
STARTUP_MSG: build = https://svn.apache.org/repos/asf/hadoop/common/branches/branch-1.2 -r 1503152; compiled by 'mattf' on Mon Jul 22 15:23:09 PDT 2013
STARTUP_MSG: java = 1.6.0_27
************************************************************/
13/08/27 16:34:57 INFO impl.MetricsConfig: loaded properties from hadoop-metrics2.properties
13/08/27 16:34:57 INFO impl.MetricsSourceAdapter: MBean for source MetricsSystem,sub=Stats registered.
13/08/27 16:34:57 INFO impl.MetricsSystemImpl: Scheduled snapshot period at 10 second(s).
13/08/27 16:34:57 INFO impl.MetricsSystemImpl: DataNode metrics system started
13/08/27 16:34:57 INFO impl.MetricsSourceAdapter: MBean for source ugi registered.
13/08/27 16:34:57 WARN impl.MetricsSystemImpl: Source name ugi already exists!
13/08/27 16:34:57 ERROR datanode.DataNode: java.io.IOException: Incompatible namespaceIDs in /app/hadoop/tmp/dfs/data: namenode namespaceID = 1955988395; datanode namespaceID = 1705269445
at org.apache.hadoop.hdfs.server.datanode.DataStorage.doTransition(DataStorage.java:232)
at org.apache.hadoop.hdfs.server.datanode.DataStorage.recoverTransitionRead(DataStorage.java:147)
at org.apache.hadoop.hdfs.server.datanode.DataNode.startDataNode(DataNode.java:414)
at org.apache.hadoop.hdfs.server.datanode.DataNode.<init>(DataNode.java:321)
at org.apache.hadoop.hdfs.server.datanode.DataNode.makeInstance(DataNode.java:1712)
at org.apache.hadoop.hdfs.server.datanode.DataNode.instantiateDataNode(DataNode.java:1651)
at org.apache.hadoop.hdfs.server.datanode.DataNode.createDataNode(DataNode.java:1669)
at org.apache.hadoop.hdfs.server.datanode.DataNode.secureMain(DataNode.java:1795)
at org.apache.hadoop.hdfs.server.datanode.DataNode.main(DataNode.java:1812)
13/08/27 16:34:57 INFO datanode.DataNode: SHUTDOWN_MSG:
/************************************************************
SHUTDOWN_MSG: Shutting down DataNode at thinktank/127.0.1.1
************************************************************/
答案1
好的,我找到了解决方法。我似乎遇到了错误:不兼容的命名空间 ID。我找到了解决方法这里。太好了,终于解决了。
如果您也遇到了与不兼容的 namespaceID 相同的问题,请尝试以下方法,它对我来说非常有效。如果您仍然遇到问题,请发表评论,我会回复您。
解决方案:
1. 停止有问题的 DataNode。2
. 编辑 ${dfs.data.dir}/current/VERSION 中的 namespaceID 值,使其与 ${dfs.name.dir}/current/VERSION 中当前 NameNode 的对应值匹配。3
. 重新启动已修复的 DataNode。这将为您解决问题。
答案2
- DataNode 尝试启动但随后关闭。可以通过 检查
hadoop datanode -start
。 该问题是由于 namespaceID 不兼容造成的。因此,使用命令删除 tmp 目录
sudo rm -Rf /app/hadoop/tmp
然后按照以下步骤操作:
sudo mkdir -p /app/hadoop/tmp
http://www.michael-noll.com/tutorials/running-hadoop-on-ubuntu-linux-single-node-cluster/