我在运行Ubuntu 14.04LTS的笔记本电脑上安装了hadoop 2.6.0。我通过运行start-all.sh
成功启动了hadoop守护程序并成功运行了WourdCount
示例,然后我尝试运行一个不能与我一起工作的jar示例,因此我决定使用{{1}格式化并重新开始但是当我使用hadoop namenode -format
启动所有守护进程时,jps所有守护进程运行但不运行datanode,如下所示:
start-dfs.sh && start-yarn.sh
如何解决?
答案 0 :(得分:51)
我遇到过这个问题,很容易解决。您的datanode没有启动,因为在您的namenode和datanode开始运行后,您再次格式化了namenode。这意味着您已从namenode清除元数据。现在,为了运行字数而存储的文件仍然在datanode中,并且datanode不知道在哪里发送块报告,因为格式化了namenode所以它不会启动。
以下是修复它所需要做的事情。 停止所有Hadoop服务(stop-all.sh)并关闭所有活动的ssh连接。
cat /usr/local/hadoop/etc/hadoop/hdfs-site.xml
此步骤很重要,请参阅datanode的数据存储位置。它是与datanode.data.dir关联的值。对我来说,它是/ usr / local / hadoop / hadoop_data / hdfs / datanode。打开终端并导航到上面的目录并删除该目录下名为current的目录。确保您只删除“当前”目录。
sudo rm -r /usr/local/hadoop/hadoop_data/hdfs/datanode/current
现在格式化namenode并检查一切是否正常。
hadoop namenode -format
如果它要求你做任何事情,请说“是”。
jps
希望我的回答能解决问题。如果它不让我知道。
小建议:不要格式化你的名字节点。没有namenode,就无法重建数据。如果你的wordcount没有运行那是另一个问题。
答案 1 :(得分:5)
您只需要删除DataNode文件夹的所有内容并使用以下命令格式化Datanode
ManyToManyField
答案 2 :(得分:3)
格式化namenode时我遇到了这个问题。我为解决这个问题所做的是:
dfs.name.dir
位置。例如,您的dfs.name.dir
是/home/hadoop/hdfs
。 (a)现在去/home/hadoop/hdfs/current
。
(b)搜索文件VERSION
。使用文本编辑器打开它。
(c)会有一行namespaceID=122684525
(122684525是我的身份证,你的身份会有所不同)。请注意ID。
hadoop.tmp.dir
位置。我的是/home/hadoop/temp
。 (a)转到/home/hadoop/temp/dfs/data/current
。
(b)搜索文件VERSION
并使用文本编辑器打开它。
(c)将有一行namespaceID=
。此文件中的namespaceID和前一个必须相同。
(d)这是我的datanode未启动的主要原因。我让他们都一样,现在datanode开始很好。
注意:将namespaceID从
/home/hadoop/hdfs/current/VERSION
复制到。{/home/hadoop/temp/dfs/data/current/VERSION
。不要反过来。
start-dfs.sh && start-yarn.sh
。 Datanode将启动。答案 3 :(得分:3)
即使我遇到同样的问题并检查了日志,发现以下错误
异常 - Datanode日志 FATAL org.apache.hadoop.hdfs.server.datanode.DataNode:secureMain中的异常 java.io.IOException:dfs.datanode.data.dir中的所有目录都无效:" / usr / local / hadoop_store / hdfs / datanode /
使用以下命令解决问题
sudo chown -R hduser:hadoop / usr / local / hadoop_store
注意 - 我在路径/ usr / local / hadoop_store
下创建了namenode和datanode答案 4 :(得分:2)
由于格式化namenode(hadoop namenode -format)而未停止dfs和yarn守护程序,因此出现上述问题。在格式化namenode时,会出现下面给出的问题,然后按Y键。 在存储目录/ tmp / hadoop-root / dfs / name中重新格式化文件系统? (Y或N)
解决方案, 您需要删除dfs.name.dir的当前(目录名)目录中的文件,您在hdfs.site.xml中提到。在我的系统中,dfs.name.dir位于/ tmp / hadoop-root / dfs / name / current中。 rm -r / tmp / hadoop-root / dfs / name / current 通过使用上面的注释,我删除了当前目录中的文件。确保你只删除了“当前”目录。在停止dfs和yarn守护进程(stop-dfs.sh& stop-yarn.sh)之后,格式化namenode。现在datanode将正常启动!!
答案 5 :(得分:0)
在core-site.xml上检查临时目录的绝对路径,如果未正确指向或未创建(mkdir)。数据节点无法启动。
答案 6 :(得分:0)
在yarn-site.xml中添加以下属性
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.nodemanager.aux-services.mapreduce.shuffle.class</name>
<value>org.apache.hadoop.mapred.ShuffleHandler</value>
</property>
答案 7 :(得分:0)
不是正确的方法。但肯定有用〜
从datanode,namenode和tmp文件夹中删除文件。在这些文件/文件夹中创建的任何文件/文件夹都由hadoop拥有,并且可能对最后一次运行的datanode详细信息有一些参考,这些详细信息可能已失败或被锁定,因为datanode在下一次尝试时不会为其加注星标
答案 8 :(得分:0)
我遇到了同样的问题( DataNode&amp; TaskTracker不会出现)。
解决:强> 删除每个“当前”子目录:数据,名称和名称二级,以解决在start-all.sh,然后jps
时无法显示的DataNode / taskTracker(我的 dfs.name.dir位置是:/ home / training / hadoop-temp / dfs / data / current; / home / training / hadoop-temp / dfs / name / current; /家庭/训练/ Hadoop的温度/ DFS / namesecondary /电流
确保停止服务: stop-all.sh
1。转到data,name,namesecondary和remove / delete下的每个“当前”子目录(例如:rm -r name / current)
2. 然后格式化:hadoop namenode -format
3. 目前在/ home / training / hadoop-temp / dfs / data / current下的mkdir
4. 从/ home / training / hadoop-temp / dfs / name / current获取目录和内容并复制到/ data / current目录
示例:文件位于:
/家庭/训练/ Hadoop的温度/ DFS /名称/电流
[培训@ CentOS当前] $ ls -l </ p>
-rw-RW-R--。 1培训培训9901 Sep 25 01:50编辑
-rw-RW-R--。 1培训培训582 Sep 25 01:50 fsimage
-rw-RW-R--。 1培训培训8月25日01:50 fstime
-rw-RW-R--。 1培训培训101 Sep 25 01:50 VERSION
5. 将VERSION中的storageType = NAME_NODE更改为刚刚复制的data / current / VERSION中的storageType = DATA_NODE。
<强> BEFORE:强>
[training @ CentOS dfs] $ cat data / current / VERSION
名称空间ID = 1018374124
CTIME = 0
storageType = NAME_NODE
layoutVersion = -32
<强> AFTER:强>
[training @ CentOS dfs] $ cat data / current / VERSION
名称空间ID = 1018374124
CTIME = 0
storageType = DATA_NODE
layoutVersion = -32
6。确保下面的每个子目录都有与名称/当前对数据相同的文件,名称,名称,次要
[training @ CentOS dfs] $ pwd
/家庭/训练/ Hadoop的温度/ DFS /
[training @ CentOS dfs] $ ls -l </ p> 总共12
drwxr-XR-X。 5培训培训4096 Sep 25 01:29数据
drwxrwxr-X。 5培训培训4096 Sep 25 01:19名称
drwxrwxr-X。 5培训培训4096 Sep 25 01:29 namesecondary
7。现在启动服务:start-all.sh 键入时应该会看到所有5个服务:jps
答案 9 :(得分:0)
我正在使用hadoop-2.6.0。我解决了使用:
1.删除其中的所有文件 的/ usr /本地/ hadoop_store / HDFS
命令:sudo rm -r / usr / local / hadoop_store / hdfs / *
2.Format hadoop namenode
命令:hadoop namenode -format
3.转到.... / sbin目录(cd / usr / local / hadoop / sbin)
start-all.sh
以下服务现在就开始了:
19088 Jps
18707 ResourceManager
19043 NodeManager
18535 SecondaryNameNode
18329 DataNode
18159 NameNode