我使用this tutorial设置并配置了多节点Hadoop集群。
当我输入start-all.sh命令时,它会显示正确初始化的所有进程,如下所示:
starting namenode, logging to /usr/local/hadoop/libexec/../logs/hadoop-root-namenode-jawwadtest1.out
jawwadtest1: starting datanode, logging to /usr/local/hadoop/libexec/../logs/hadoop-root-datanode-jawwadtest1.out
jawwadtest2: starting datanode, logging to /usr/local/hadoop/libexec/../logs/hadoop-root-datanode-jawwadtest2.out
jawwadtest1: starting secondarynamenode, logging to /usr/local/hadoop/libexec/../logs/hadoop-root-secondarynamenode-jawwadtest1.out
starting jobtracker, logging to /usr/local/hadoop/libexec/../logs/hadoop-root-jobtracker-jawwadtest1.out
jawwadtest1: starting tasktracker, logging to /usr/local/hadoop/libexec/../logs/hadoop-root-tasktracker-jawwadtest1.out
jawwadtest2: starting tasktracker, logging to /usr/local/hadoop/libexec/../logs/hadoop-root-tasktracker-jawwadtest2.out
但是,当我输入jps命令时,我得到以下输出:
31057 NameNode
4001 RunJar
6182 RunJar
31328 SecondaryNameNode
31411 JobTracker
32119 Jps
31560 TaskTracker
如您所见,没有运行datanode进程。我尝试配置单节点群集但遇到了同样的问题。有人会知道这里可能出现什么问题吗?是否有任何配置文件未在教程中提及或我可能已查看过?我是Hadoop的新手,有点迷失,任何帮助都会受到高度赞赏。
编辑: Hadoop的根数据节点-jawwadtest1.log:
STARTUP_MSG: args = []
STARTUP_MSG: version = 1.0.3
STARTUP_MSG: build = https://svn.apache.org/repos/asf/hadoop/common/branches/$
************************************************************/
2012-08-09 23:07:30,717 INFO org.apache.hadoop.metrics2.impl.MetricsConfig: loa$
2012-08-09 23:07:30,734 INFO org.apache.hadoop.metrics2.impl.MetricsSourceAdapt$
2012-08-09 23:07:30,735 INFO org.apache.hadoop.metrics2.impl.MetricsSystemImpl:$
2012-08-09 23:07:30,736 INFO org.apache.hadoop.metrics2.impl.MetricsSystemImpl:$
2012-08-09 23:07:31,018 INFO org.apache.hadoop.metrics2.impl.MetricsSourceAdapt$
2012-08-09 23:07:31,024 WARN org.apache.hadoop.metrics2.impl.MetricsSystemImpl:$
2012-08-09 23:07:32,366 INFO org.apache.hadoop.ipc.Client: Retrying connect to $
2012-08-09 23:07:37,949 ERROR org.apache.hadoop.hdfs.server.datanode.DataNode: $
at org.apache.hadoop.hdfs.server.datanode.DataStorage.doTransition(Data$
at org.apache.hadoop.hdfs.server.datanode.DataStorage.recoverTransition$
at org.apache.hadoop.hdfs.server.datanode.DataNode.startDataNode(DataNo$
at org.apache.hadoop.hdfs.server.datanode.DataNode.<init>(DataNode.java$
at org.apache.hadoop.hdfs.server.datanode.DataNode.makeInstance(DataNod$
at org.apache.hadoop.hdfs.server.datanode.DataNode.instantiateDataNode($
at org.apache.hadoop.hdfs.server.datanode.DataNode.createDataNode(DataN$
at org.apache.hadoop.hdfs.server.datanode.DataNode.secureMain(DataNode.$
at org.apache.hadoop.hdfs.server.datanode.DataNode.main(DataNode.java:1$
2012-08-09 23:07:37,951 INFO org.apache.hadoop.hdfs.server.datanode.DataNode: S$
/************************************************************
SHUTDOWN_MSG: Shutting down DataNode at jawwadtest1/198.101.220.90
************************************************************/
答案 0 :(得分:64)
你需要做这样的事情:
bin/stop-all.sh
(或2.x系列中的stop-dfs.sh
和stop-yarn.sh
)rm -Rf /app/tmp/hadoop-your-username/*
bin/hadoop namenode -format
(或2.x系列中的hdfs
)解决方案取自: http://pages.cs.brandeis.edu/~cs147a/lab/hadoop-troubleshooting/。基本上它包括从头开始重新启动,因此请确保您不会通过格式化hdfs来丢失数据。
答案 1 :(得分:16)
我遇到了同样的问题。我创建了一个hdfs文件夹'/ home / username / hdfs',其子目录名称,数据和tmp在hadoop / conf的config xml文件中引用。
当我开始使用hadoop并执行jps时,我找不到datanode,因此我尝试使用 bin / hadoop datanode 手动启动datanode。然后我从错误消息中意识到它有访问dfs.data.dir = / home / username / hdfs / data /的权限问题,这是在其中一个hadoop配置文件中引用的。我所要做的就是停止hadoop,删除 / home / username / hdfs / tmp / * 目录的内容,然后尝试这个命令 - chmod -R 755 /home/username/hdfs/
,然后启动hadoop。我可以找到datanode!
答案 2 :(得分:7)
我在运行datanode时遇到了类似的问题。以下步骤很有用。
转到* / hadoop_store / hdfs目录,您在其中创建了namenode和datanode作为子目录。 (在[hadoop_directory] /etc/hadoop/hdfs-site.xml中配置的路径)。使用
rm -r namenode
rm -r datanode
在* / hadoop_store / hdfs目录中使用
sudo mkdir namenode
sudo mkdir datanode
如果出现权限问题,请使用
chmod -R 755 namenode
chmod -R 755 datanode
在[hadoop_directory] / bin中使用
hadoop namenode -format (To format your namenode)
答案 3 :(得分:6)
我在运行单节点伪分布式实例时遇到了同样的问题。无法弄清楚如何解决它,但一个快速的解决方法是手动启动带有
的数据节点
hadoop-x.x.x/bin/hadoop datanode
答案 4 :(得分:2)
然后按如下方式重新启动dfs和纱线。
start-dfs.sh
start-yarn.sh
mr-jobhistory-daemon.sh start historyserver
希望这很好。
答案 5 :(得分:1)
请控制tmp目录属性是否指向core-site.xml中的有效目录
<property>
<name>hadoop.tmp.dir</name>
<value>/home/hduser/data/tmp</value>
</property>
如果目录配置错误,则datanode进程将无法正常启动。
答案 6 :(得分:1)
检查hadoop.tmp.dir
中的core-site.xml
属性是否设置正确。
如果设置它,请导航到此目录,然后删除或清空此目录。
如果您没有设置它,则导航到其默认文件夹/tmp/hadoop-${user.name}
,同样删除或清空此目录。
答案 7 :(得分:1)
在线下运行命令: -
答案 8 :(得分:1)
按照以下步骤操作,您的datanode将重新开始。
答案 9 :(得分:1)
停止所有服务 - ./stop-all.sh 格式化所有主站和从站的所有hdfs tmp目录。不要忘记从slave格式化。
格式化namenode。(hadoop namenode -format)
现在在namenode上启动服务。 ./bin/start-all.sh
这对我启动datanode服务起了不同作用。
答案 10 :(得分:1)
需要遵循3个步骤。
(1)需要转到日志并查看最新的日志(In hadoop- 2.6.0 /日志/ Hadoop的用户数据管理部-ubuntu.log)
如果错误为
java.io.IOException:/ home / kutty / work / hadoop2data / dfs / data中的不兼容的clusterID: namenode clusterID = CID-c41df580-e197-4db6-a02a-a62b71463089 ; datanode clusterID = CID-a5f4ba24-3a56-4125-9137-fa77c5bb07b1
即。 namenode cluster id和datanode cluster id不相同。
(2)现在复制上面错误 namenode clusterID,即CID-c41df580-e197-4db6-a02a-a62b71463089
(3)用hadoopdata / dfs / data / current / version中的Namenode集群ID替换Datanode集群ID
丛集编号= <强> CID-c41df580-e197-4db6-a02a-a62b71463089 强>
重启Hadoop。将运行DataNode
答案 11 :(得分:1)
第1步: - Stop-all.sh
第2步: - 走到这条道路
cd /usr/local/hadoop/bin
步骤3: - 运行该命令 hadoop datanode
现在DataNode工作
答案 12 :(得分:0)
在Mac os(伪分布式模式)的情况下:
打开终端
cd /tmp
rm -rf hadoop*
bin/hdfs namenode -format
sbin/start-dfs.sh
答案 13 :(得分:0)
删除hadoop文件夹下的datanode,然后重新运行start-all.sh
答案 14 :(得分:0)
一旦我无法在hadoop中使用jps查找数据节点,则删除了
hadoop安装目录(/opt/hadoop-2.7.0/hadoop_data/dfs/data
中的当前文件夹,并使用start-all.sh和jps重新启动hadoop。
这次我可以找到数据节点,并且再次创建了当前文件夹。
答案 15 :(得分:0)
得到了同样的错误。尝试多次启动和停止dfs,清除了之前答案中提到的所有目录,但没有任何帮助。
仅在重新启动操作系统并从头开始配置Hadoop后才解决该问题。 (从头开始配置Hadoop而不重新启动没有工作)
答案 16 :(得分:0)
按照以下步骤操作,您的datanode将重新开始。
1)停止dfs。 2)打开hdfs-site.xml 3)再次从hdfs-site.xml和-format namenode中删除data.dir和name.dir属性。
4)然后再次启动dfs。
答案 17 :(得分:0)
我已经应用了一些混合配置,并且对我有用。
第一>>
停止使用Hadoop所有服务
${HADOOP_HOME}/sbin/stop-all.sh
第二>>
检查位于${HADOOP_HOME}/etc/hadoop/mapred-site.xml
上的mapred-site.xml,并将localhost
更改为master
。
第三>>
删除hadoop创建的临时文件夹
rm -rf //path//to//your//hadoop//temp//folder
第四>>
在temp上添加递归权限。
sudo chmod -R 777 //path//to//your//hadoop//temp//folder
第五>>
现在,再次启动所有服务。然后首先检查包括datanode在内的所有服务正在运行。
enter image description here
答案 18 :(得分:0)
删除$hadoop_User/dfsdata
和$hadoop_User/tmpdata
下的文件
然后运行:
hdfs namenode -format
最终运行:
start-all.sh
然后您的问题得到解决。
答案 19 :(得分:0)
即使在删除重建目录后,datanode也没有启动。
所以,我使用bin/hadoop datanode
手动启动了它
它没有得出任何结论。我用相同的用户名打开了另一个终端并执行了jps
,它向我展示了正在运行的datanode进程。
它正在工作,但我只需将未完成的终端保持在旁边。
答案 20 :(得分:0)
将dfs.data.dir
数据节点开始工作。
答案 21 :(得分:0)
如果格式化tmp目录不起作用,请尝试:
希望这有帮助。
答案 22 :(得分:0)
您需要检查:
/ app / hadoop / tmp / dfs / data / current / VERSION和/ app / hadoop / tmp / dfs / name / current / VERSION ---
在这两个文件中,以及名称节点和datanode的名称空间ID。
当且仅当数据节点的NamespaceID与名称节点的NamespaceID相同时,您的datanode才会运行。
如果不同,请使用vi编辑器或gedit将namenode NamespaceID复制到Datanode的NamespaceID并保存并重新运行deamons,它将完美运行。
答案 23 :(得分:0)
这是针对较新版本的Hadoop(我正在运行2.4.0)
在文件中:hdfs-site.xml 注意与之对应的目录路径 dfs.namenode.name.dir dfs.namenode.data.dir
希望这有帮助。
答案 24 :(得分:0)
您可以设置另一个,而不是删除&#34; hadoop tmp目录&#34;下的所有内容。例如,如果您的core-site.xml具有此属性:
<property>
<name>hadoop.tmp.dir</name>
<value>/home/hduser/data/tmp</value>
</property>
您可以将其更改为:
<property>
<name>hadoop.tmp.dir</name>
<value>/home/hduser/data/tmp2</value>
</property>
然后scp core-site.xml到每个节点,然后&#34; hadoop namenode -format&#34;,然后重新启动hadoop。
答案 25 :(得分:0)
我在日志文件中有关于此问题的详细信息,如下所示: “dfs.data.dir中的目录无效:/ home / hdfs / dnman1的权限不正确,预期: rwxr-xr-x ,而实际:rwxrwxr-x” 从那里我发现我的文件夹的datanote文件权限是777。我纠正到755,它开始工作。
答案 26 :(得分:0)
试试这个
dfs.data.dir
答案 27 :(得分:-1)
mv /usr/local/hadoop_store/hdfs/datanode /usr/local/hadoop_store/hdfs/datanode.backup
mkdir /usr/local/hadoop_store/hdfs/datanode
hadoop datanode OR start-all.sh
jps
答案 28 :(得分:-1)
datanode.log中的错误
$ more /usr/local/hadoop/logs/hadoop-hduser-datanode-ubuntu.log
节目:
java.io.IOException: Incompatible clusterIDs in /usr/local/hadoop_tmp/hdfs/datanode: namenode clusterID = CID-e4c3fed0-c2ce-4d8b-8bf3-c6388689eb82; datanode clusterID = CID-2fcfefc7-c931-4cda-8f89-1a67346a9b7c
解决方案:停止群集&amp;发出以下命令&amp;然后再次启动你的集群。
sudo rm -rf /usr/local/hadoop_tmp/hdfs/datanode/*
答案 29 :(得分:-1)
在我的情况下,我在Windows上有hadoop,在C:/上,这个文件根据core-site.xml等,它在tmp / Administrator / dfs / data ... name等,所以擦掉它
然后,namenode -format。然后再试一次,