为什么yarn的nodemanager与hdfs的hdfs datanode 格式化不能同时启动,其他其中之一,另一个就自己挂掉了

当前位置: &&>> 阅读正文
View: 8,297
Author: Dong
- 359,967 阅 - 273,614 阅 - 261,862 阅 - 247,109 阅 - 245,229 阅 - 243,154 阅 - 223,098 阅 - 214,592 阅 - 211,833 阅 - 204,386 阅
collapsItems['collapsArch-'] = '
collapsItems['collapsArch-'] = '
collapsItems['collapsArch-'] = '
collapsItems['collapsArch-'] = '
collapsItems['collapsArch-'] = '
collapsItems['collapsArch-'] = '
collapsItems['collapsArch-'] = '
collapsItems['collapsArch-'] = '
collapsItems['collapsArch-'] = '
collapsItems['collapsArch-'] = '
collapsItems['collapsArch-'] = '
collapsItems['collapsArch-'] = '
collapsItems['collapsArch-'] = '
collapsItems['collapsArch-'] = '
collapsItems['collapsArch-'] = '
collapsItems['collapsArch-'] = '
collapsItems['collapsArch-'] = '
collapsItems['collapsArch-'] = '
collapsItems['collapsArch-'] = '
collapsItems['collapsArch-'] = '
collapsItems['collapsArch-'] = '
collapsItems['collapsArch-'] = '
collapsItems['collapsArch-'] = '
collapsItems['collapsArch-'] = '
collapsItems['collapsArch-'] = '
collapsItems['collapsArch-'] = '
collapsItems['collapsArch-'] = '
collapsItems['collapsArch-'] = '
collapsItems['collapsArch-'] = '
collapsItems['collapsArch-'] = '
collapsItems['collapsArch-'] = '
collapsItems['collapsArch-'] = '
collapsItems['collapsArch-'] = '
collapsItems['collapsArch-'] = '
collapsItems['collapsArch-'] = '
collapsItems['collapsArch-'] = '
collapsItems['collapsArch-'] = '
collapsItems['collapsArch-'] = '一、问题描述
在搭建 Hadoop hadoop-2.4.1 集群的最后一步启动集群,在命令窗口并没有报任何错误,但是Slave 节点的 NodeManager进程始终启动不起来。随后查看了后台启动日志yarn-hadoop-nodemanager-Slave1.Hadoop.log,发现如下错误:
&01:02:17,228&FATAL&org.apache.hadoop.yarn.server.nodemanager.containermanager.AuxServices:&Failed&to&initialize&mapreduce.shuffle&&
java.lang.IllegalArgumentException:&The&ServiceName:&mapreduce.shuffle&set&in&yarn.nodemanager.aux-services&is&invalid.The&valid&service&name&should&only&contain&a-zA-Z0-9_&and&can&not&start&with&numbers&&
&&&&at&mon.base.Preconditions.checkArgument(Preconditions.java:88)&&
&&&&at&org.apache.hadoop.yarn.server.nodemanager.containermanager.AuxServices.serviceInit(AuxServices.java:98)&&
&&&&at&org.apache.hadoop.service.AbstractService.init(AbstractService.java:163)&&
&&&&at&org.apache.positeService.serviceInit(CompositeService.java:107)&&
&&&&at&org.apache.hadoop.yarn.server.nodemanager.containermanager.ContainerManagerImpl.serviceInit(ContainerManagerImpl.java:221)&&
&&&&at&org.apache.hadoop.service.AbstractService.init(AbstractService.java:163)&&
&&&&at&org.apache.positeService.serviceInit(CompositeService.java:107)&&
&&&&at&org.apache.hadoop.yarn.server.nodemanager.NodeManager.serviceInit(NodeManager.java:188)&&
&&&&at&org.apache.hadoop.service.AbstractService.init(AbstractService.java:163)&&
&&&&at&org.apache.hadoop.yarn.server.nodemanager.NodeManager.initAndStartNodeManager(NodeManager.java:357)&&
&&&&at&org.apache.hadoop.yarn.server.nodemanager.NodeManager.main(NodeManager.java:405)&&
&01:02:17,235&INFO&org.apache.hadoop.service.AbstractService:&Service&org.apache.hadoop.yarn.server.nodemanager.containermanager.AuxServices&failed&in&state&INITED;&cause:&java.lang.IllegalArgumentException:&The&ServiceName:&mapreduce.shuffle&set&in&yarn.nodemanager.aux-services&is&invalid.The&valid&service&name&should&only&contain&a-zA-Z0-9_&and&can&not&start&with&numbers&&
java.lang.IllegalArgumentException:&The&ServiceName:&mapreduce.shuffle&set&in&yarn.nodemanager.aux-services&is&invalid&strong&.&span&style="font-size:14color:#ff0000;"&The&valid&service&name&should&only&contain&a-zA-Z0-9_&and&can&not&start&with&numbers&/span&&/strong&&&
/************************************************************&&
SHUTDOWN_MSG:&Shutting&down&NodeManager&at&Slave1.Hadoop/192.168.1.3&&
************************************************************/&&
二、问题解决
发现yarn-site.xml配置不符合要求。修改如下:
原来错误的配置:
修改后正确配置:
从新启集群,问题解决。
阅读(...) 评论()博客访问: 78703
博文数量: 102
注册时间:
认证徽章:
忽然有一天踏入hadoop大门,立志做一个牛A与牛C中间徘徊的人!
http://blog.itpub.net//viewspace-1987808/
IT168企业级官微
微信号:IT168qiye
系统架构师大会
微信号:SACC2013
分类: Hadoop
Hadoop2.7实战v1.0之动态添加DataNode和NodeManager节点(不修改dfs.replication)【终极版】
0.添加大文件到hdfs系统中去,是为了后期的动态添加datanode的机器,datanode机器的数据量不均衡,为了模拟均衡实验
[root@sht-sgmhadoopnn-01 ~]# hadoop fs -put /root/oracle-j2sdk1.7-1.7.0+update67-1.x86_64.rpm /testdir
[root@sht-sgmhadoopnn-01 ~]# hadoop fs -put /root/012_HDFS.avi /testdir
[root@sht-sgmhadoopnn-01 ~]# hadoop fs -put /root/016_Hadoop.avi /testdir
###3个datanode节点数据量和数据块相等
1.修改系统hostname(通过hostname和/etc/sysconfig/network进行修改)
[root@sht-sgmhadoopdn-04 ~]# hostname
sht-sgmhadoopdn-04.telenav.cn
[root@sht-sgmhadoopdn-04 ~]# more /etc/sysconfig/network
NETWORKING=yes
HOSTNAME=sht-sgmhadoopdn-04.telenav.cn
GATEWAY=172.16.101.1
2.修改hosts文件,将集群所有节点hosts配置进去(集群所有节点保持hosts文件统一)
[root@sht-sgmhadoopdn-04 ~]# more /etc/hosts
localhost localhost.localdomain localhost4 localhost4.localdomain4
localhost localhost.localdomain localhost6 localhost6.localdomain6
172.16.101.54
sht-sgmhadoopcm-01.telenav.cn
sht-sgmhadoopcm-01
172.16.101.55
sht-sgmhadoopnn-01.telenav.cn
sht-sgmhadoopnn-01
172.16.101.56
sht-sgmhadoopnn-02.telenav.cn
sht-sgmhadoopnn-02
172.16.101.58
sht-sgmhadoopdn-01.telenav.cn
sht-sgmhadoopdn-01
172.16.101.59
sht-sgmhadoopdn-02.telenav.cn
sht-sgmhadoopdn-02
172.16.101.60
sht-sgmhadoopdn-03.telenav.cn
sht-sgmhadoopdn-03
172.16.101.66
sht-sgmhadoopdn-04.telenav.cn
sht-sgmhadoopdn-04
[root@sht-sgmhadoopdn-04 ~]#
##修改集群的其他节点hosts文件
3.查看是否有.ssh文件夹,删除.ssh,重新配置
[root@sht-sgmhadoopdn-04 ~]# ls -l -a
total 138948
drwxr-x---. 7 root root 4096 Feb 1 17:06 .
dr-xr-xr-x. 25 root root 4096 Feb 9 09:34 ..
drwxr-x---. 2 root root 4096 Dec 31 15:29 .ssh
[root@sht-sgmhadoopdn-04 ~]# rm -rf .ssh
[root@sht-sgmhadoopdn-04 ~]# ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa):
Created directory '/root/.ssh'.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
2e:24:52:bf:9d:c4:b8:d8:d6:7a:45:47:7b:cc:54:d0 root@sht-sgmhadoopdn-04.telenav.cn
4.设置NameNode(两台HA均需要)到DataNode的免密码登录(ssh-copy-id命令实现,可以免去cp *.pub文件后的权限修改)
###其实最好将集群的每台都互相配置信任,包括新加的机器(我采取这个)
5.修改主节点slave文件,添加新增节点的ip信息,这里添加的是hostname:sht-sgmhadoopdn-04(集群重启时使用)
[root@sht-sgmhadoopnn-01 ~]# cd /hadoop/hadoop-2.7.2/etc/hadoop
[root@sht-sgmhadoopnn-01 hadoop]# vi slaves
sht-sgmhadoopdn-01
sht-sgmhadoopdn-02
sht-sgmhadoopdn-03
sht-sgmhadoopdn-04
"slaves" 4L, 76C written
[root@sht-sgmhadoopnn-01 hadoop]# scp slaves root@sht-sgmhadoopnn-02:/hadoop/hadoop-2.7.2/etc/hadoop
slaves 100% 76 0.1KB/s 00:00
[root@sht-sgmhadoopnn-01 hadoop]#
###我觉得这里应该将slaves文件scp到standbyNameNode即可,当然我倾向scp到其他所有节点(standbyNameNode,other DataNode);
毕竟假如集群重启了,active节点机器变为standby节点,standby节点机器变为active节点,那么假如slaves文件没有改变的话,那么执行start-dfs.sh脚本的话,那么新加的datanode节点就起不来!
6.新增的datanode 节点安装hadoop软件
[root@sht-sgmhadoopdn-04 ~]# cd /tmp
[root@sht-sgmhadoopdn-04 tmp]# wget https://www.apache.org/dist/hadoop/core/hadoop-2.7.2/hadoop-2.7.2.tar.gz --no-check-certificate
[root@sht-sgmhadoopnn-04 tmp]# tar -xvf hadoop-2.7.2.tar.gz
[root@sht-sgmhadoopdn-04 tmp]# mv hadoop-2.7.2 /hadoop/hadoop-2.7.2
[root@sht-sgmhadoopdn-04 tmp]# cd /hadoop/hadoop-2.7.2/
[root@sht-sgmhadoopdn-04 hadoop-2.7.2]# ll
drwxr-xr-x 2
4096 Jan 26 08:20 bin
drwxr-xr-x 3
4096 Jan 26 08:20 etc
drwxr-xr-x 2
4096 Jan 26 08:20 include
drwxr-xr-x 3
4096 Jan 26 08:20 lib
drwxr-xr-x 2
4096 Jan 26 08:20 libexec
-rw-r--r-- 1
15429 Jan 26 08:20 LICENSE.txt
-rw-r--r-- 1
101 Jan 26 08:20 NOTICE.txt
-rw-r--r-- 1
1366 Jan 26 08:20 README.txt
drwxr-xr-x 2
4096 Jan 26 08:20 sbin
drwxr-xr-x 4
4096 Jan 26 08:20 share
[root@sht-sgmhadoopdn-04 hadoop-2.7.2]#
7.将hadoop的配置文件scp到新的节点上
[root@sht-sgmhadoopnn-01 ~]# cd /hadoop/hadoop-2.7.2/etc/hadoop/
[root@sht-sgmhadoopnn-01 hadoop]# scp * root@sht-sgmhadoopdn-04:/hadoop/hadoop-2.7.2/etc/hadoop/
8.在新节点上启动datanode进程和nodemanager进程之前,必须检查$HADOOP_HOME/data/目录是否存在?假如存在,就直接先删除该目录的所有的文件
原因是机器有可能第二次添加为数据节点,清除数据文件等
[root@sht-sgmhadoopnn-04 ~]# cd /hadoop/hadoop-2.7.2/data/
[root@sht-sgmhadoopnn-04 data]# rm -rf *
【启动datanode进程】
9.在新增的节点上,启动datanode进程
[root@sht-sgmhadoopdn-04 hadoop]# cd ../../sbin
[root@sht-sgmhadoopdn-04 sbin]# ./hadoop-daemon.sh start datanode
starting datanode, logging to /hadoop/hadoop-2.7.2/logs/hadoop-root-datanode-sht-sgmhadoopdn-04.telenav.cn.out
然后在namenode通过hdfs dfsadmin -report或者web
v& [root@sht-sgmhadoopdn-01 bin]# ./hdfs dfsadmin –report
###负载不均衡, sht-sgmhadoopdn-04的数据块0,Used的24kb
&&&&&&@假如sht-sgmhadoopdn-04的datanode进程已经起来了,那么web界面datanode就是不显示sht-sgmhadoopdn-04这一行数据,先执行./hadoop-daemon.sh stop datanode命令关闭当前进程;
&&&&& @然后再要检查是否设置了dfs.hosts,dfs.hosts.exclude参数,那么就注释这两个参数,然后执行hdfs dfsadmin -refreshNodes,刷新一下配置,然后有可能出现下面这幅图1,Dead状态;
&&&&& @最后只要再执行./hadoop-daemon.sh start datanode,刷新web就行,图2, 继续执行。
【启动nodemanager进程】
10.在新增的节点上,启动nodemanager进程
由于Hadoop 2.X引入了YARN框架,所以对于每个计算节点都可以通过NodeManager进行管理,同理启动NodeManager进程后,即可将其加入集群
在新增节点,运行sbin/yarn-daemon.sh start nodemanager即可
在ResourceManager,通过yarn node -list查看集群情况
[root@sht-sgmhadoopdn-04 sbin]# ./yarn-daemon.sh start nodemanager
starting nodemanager, logging to /hadoop/hadoop-2.7.2/logs/yarn-root-nodemanager-sht-sgmhadoopdn-04.telenav.cn.out
&[root@sht-sgmhadoopdn-04 sbin]# jps
14508 DataNode
15517 NodeManager
[root@sht-sgmhadoopdn-04 sbin]# cd ../bin
&[root@sht-sgmhadoopdn-04 bin]# ./yarn node -list
16/03/05 19:00:04 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
Total Nodes:4
&&&&&&&&&Node-Id Node-State Node-Http-Address Number-of-Running-Containers
sht-sgmhadoopdn-04.telenav.cn:54705 RUNNING sht-sgmhadoopdn-04.telenav.cn:23999 0
sht-sgmhadoopdn-03.telenav.cn:7573 RUNNING sht-sgmhadoopdn-03.telenav.cn:23999 0
sht-sgmhadoopdn-02.telenav.cn:38316 RUNNING sht-sgmhadoopdn-02.telenav.cn:23999 0
sht-sgmhadoopdn-01.telenav.cn:43903 RUNNING sht-sgmhadoopdn-01.telenav.cn:23999 0
11.最后还需要对hdfs负载设置均衡,因为默认的数据传输带宽比较低,可以设置为64M,即hdfs dfsadmin -setBalancerBandwidth 即可
[root@sht-sgmhadoopnn-01 ~]# cd /hadoop/hadoop-2.7.2/bin
[root@sht-sgmhadoopdn-01 bin]# ./hdfs dfsadmin -setBalancerBandwidth
Balancer bandwidth is set to
for sht-sgmhadoopnn-01/172.16.101.55:8020
Balancer bandwidth is set to
for sht-sgmhadoopnn-02/172.16.101.56:8020
12.默认balancer的threshold为10%,即各个节点与集群总的存储使用率相差不超过10%,我们可将其设置为5%;然后启动Balancer,sbin/start-balancer.sh -threshold 5,等待集群自均衡完成即可。
[root@sht-sgmhadoopdn-01 bin]# cd ../sbin
starting balancer, logging to /hadoop/hadoop-2.7.2/logs/hadoop-root-balancer-sht-sgmhadoopnn-01.telenav.cn.out
[root@sht-sgmhadoopnn-01 sbin]# ./start-balancer.sh -threshold 5
starting balancer, logging to /hadoop/hadoop-2.7.2/logs/hadoop-root-balancer-sht-sgmhadoopnn-01.telenav.cn.out
###运行这个命令start-balancer.sh -threshold 5和使用hdfs balancer是一样的
#### Usage: hdfs balancer
[root@sht-sgmhadoopnn-01 bin]# ./hdfs balancer -threshold 5
16/03/05 18:57:33 INFO balancer.Balancer: Using a threshold of 1.0
16/03/05 18:57:33 INFO balancer.Balancer: namenodes = [hdfs://mycluster]
16/03/05 18:57:33 INFO balancer.Balancer: parameters = Balancer.Parameters[BalancingPolicy.Node, threshold=1.0, max idle iteration = 5, number of nodes to be excluded = 0, number of nodes to be included = 0]
Time Stamp Iteration# Bytes Already Moved Bytes Left To Move Bytes Being Moved
16/03/05 18:57:34 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
16/03/05 18:57:35 INFO net.NetworkTopology: Adding a new node: /default-rack/172.16.101.58:50010
16/03/05 18:57:35 INFO net.NetworkTopology: Adding a new node: /default-rack/172.16.101.60:50010
16/03/05 18:57:35 INFO net.NetworkTopology: Adding a new node: /default-rack/172.16.101.66:50010
16/03/05 18:57:35 INFO net.NetworkTopology: Adding a new node: /default-rack/172.16.101.59:50010
16/03/05 18:57:35 INFO balancer.Balancer: 0 over-utilized: []
16/03/05 18:57:35 INFO balancer.Balancer: 0 underutilized: []
The cluster is balanced. Exiting...
Mar 5, 2016 6:57:35 PM 0 0 B 0 B -1 B
Mar 5, 2016 6:57:35 PM Balancing took 2.66 seconds
A.&&&&& 为什么我执行该命令hdfs balancer -threshold 5平衡数据命令没有反应呢?
群总存储使用率:&&&&&&&&&& 1.74%
sht-sgmhadoopdn-01:&& 1.74%
sht-sgmhadoopdn-02:&& 1.74%
sht-sgmhadoopdn-03:&& 1.74%
sht-sgmhadoopdn-04:&&&& 0%
执行-threshold& 5, 表示每一个 datanode 存储使用率和集群总存储使用率的差值都应该小于这个阀值5%;
假如超过5%,会执行数据平衡操作。
B.&&&&& 怎样判断执行命令是否会生效,数据平衡操作?
if& (群总存储使用率& — 每一台datanode 存储使用率) & -threshold& 5
&&&&& #会执行数据平衡
&&&&& #该命令不生效
C.&&&&& the threshold &range of [1.0, 100.0],所以最小只能设置 -threshold &1
13. 执行命令hdfs
balancer -threshold 1
[root@sht-sgmhadoopnn-01 hadoop]# hdfs balancer -threshold 1
……………..
……………..
16/03/08 16:08:09 INFO net.NetworkTopology: Adding a new node: /default-rack/172.16.101.59:50010
16/03/08 16:08:09 INFO net.NetworkTopology: Adding a new node:
/default-rack/172.16.101.58:50010
16/03/08 16:08:09 INFO net.NetworkTopology: Adding a new node:
/default-rack/172.16.101.66:50010
16/03/08 16:08:09 INFO net.NetworkTopology: Adding a new node:
/default-rack/172.16.101.60:50010
16/03/08 16:08:09 INFO balancer.Balancer: 0 over-utilized: []
16/03/08 16:08:09 INFO balancer.Balancer: 0 underutilized: []
The cluster is balanced. Exiting...
Mar 8, :09 PM&&&& &&&&&&&1&&&&&&&&&&& 382.22 MB&&&&&&&&&&&&&&&& 0 B&&&&&&&&&&&&&& -1 B
Mar 8, :09 PM&& Balancing took 6.7001 minutes
###新增数据节点的411.7M
14.问题:在active
namenode上成功执行数据平衡命令,namenode的状态发生的failover&
&&&&&&&&&&&&&&&&&&&&& sht-sgmhadoopnn-01
:active—&standby
&&&&&&&&&&&&&&&&&&&&& sht-sgmhadoopnn-02
:standby—&active,发生了failover操作.
揣测:在active节点上操作数据平衡命令,可能cpu等资源不够用了,就发生了failover,建议在新的数据节点datanode上操作.
[root@sht-sgmhadoopnn-01 hadoop]# hdfs haadmin -failover nn2 nn1
Failover to NameNode at sht-sgmhadoopnn-01/172.16.101.55:8020 successful
[root@sht-sgmhadoopnn-01 hadoop]# hdfs haadmin -getServiceState nn1
[root@sht-sgmhadoopnn-01 hadoop]# hdfs haadmin -getServiceState nn2
&[root@sht-sgmhadoopnn-01 hadoop]#
阅读(901) | 评论(0) | 转发(0) |
相关热门文章
给主人留下些什么吧!~~
请登录后评论。3187人阅读
大数据(12)
在hadoop启动的时候,会出现各种各样的问题,NameNode,JobTracker等各个模块都会有莫名奇妙的问题出现,在这里对hdfs的问题进行一下简单的记录。
注:问题无先后次序,可能这次没遇到下次又遇到,所以统一记录在次
一:HDFS问题
1:HDFS initialized but not 'healthy' yet, waiting...
这个日志会在启动hadoop的时候在JobTracker的log日志文件中出现,在这里就是hdfs出现问题,导致DataNode无法启动,这里唯一的解决方式就是把所有的NameNode管理的路径下的文件删除然后重新执行namenode -format,而删除的地方主要有存放临时数据的tmp路径,存放数据的data路径还有name路径,全部删除之后重新format次问题就解决了
2:在执行hadoop程序的时候出现Name node is in safe mode
这个异常一般就直接会在IDE的控制台输出,这个错误的主要导致原因是,datanode不停在丢失数据,所以此时namenode就强制本身进入safe mode模式,在该模式下对数据只可以进行读操作而不能进行写操作。解决此异常很简单,直接执行命令让namenode离开次模式就可以了。./hadoop dfsadmin-safemode leave
3:原来hadoop一直可以正常启动,有天在启动之后查看namenode的log发现如下in_use.lock (Permission denied)错误日志:
INFO namenode.FSNamesystem: isAccessTokenEnabled=false&accessKeyUpdateInterval=0 min(s), accessTokenLifetime=0 min(s)
&& 1INFO metrics.FSNamesystemMetrics: Initializing
&& FSNamesystemMetrics using context
&& object:org.apache.hadoop.metrics.spi.NoEmitMetricsContext
ERROR namenode.FSNamesystem: FSNamesystem initialization&failed.&java.io.FileNotFoundException:&&/var/lib/hadoop-0.20/cache/hadoop/dfs/name/in_use.lock (Permission denied)
&& at java.io.RandomAccessFile.open(Native Method)
&& at java.io.RandomAccessFile.&init&(RandomAccessFile.java:216)
&& org.apache.hadoop.mon.Storage$StorageDirectory.tryLock(Storage.java:614)
&& org.apache.hadoop.mon.Storage$StorageDirectory.lock(Storage.java:591)
&& org.apache.hadoop.mon.Storage$StorageDirectory.analyzeStorage(Storage.java:449)
&& org.apache.hadoop.hdfs.server.namenode.FSImage.recoverTransitionRead(FSImage.java:304)
&& org.apache.hadoop.hdfs.server.namenode.FSDirectory.loadFSImage(FSDirectory.java:110)
&& org.apache.hadoop.hdfs.server.namenode.FSNamesystem.initialize(FSNamesystem.java:372)
&& org.apache.hadoop.hdfs.server.namenode.FSNamesystem.&init&(FSNamesystem.java:335)
&& org.apache.hadoop.hdfs.server.namenode.NameNode.initialize(NameNode.java:271)
&& org.apache.hadoop.hdfs.server.namenode.NameNode.&init&(NameNode.java:467)
&& org.apache.hadoop.hdfs.server.namenode.NameNode.createNameNode(NameNode.java:1330)
&& org.apache.hadoop.hdfs.server.namenode.NameNode.main(NameNode.java:1339)
这有两种场景出现,
& 1):在原来正常的时候,有一次突然使用了原来不同的用户启动了一次hadoop。这种场景会产生一个in_use.lock 文件夹在你设置的目录中,这时候可以删除这个文件夹直接,然后重新启动
& 2):在格式化hadoop的时候和当期启动的用户不是同一个,也会导致该问题。这个时候可以使用格式化hadoop的那个用户重新启动hadoop。也可以解决此错误。
该问题的参考地址:
4:namenode 异常
14:10:08,946 INFO org.apache.hadoop.mon.Storage: Cannot access storage directory /var/lib/hadoop/cache/hadoop/dfs/name
14:10:08,947 ERROR org.apache.hadoop.hdfs.server.namenode.FSNamesystem: FSNamesystem initialization failed.
org.apache.hadoop.mon.InconsistentFSStateException: Directory /var/lib/hadoop/cache/hadoop/dfs/name is in an inconsistent state: storage directory does not exist or is not accessible.
at org.apache.hadoop.hdfs.server.namenode.FSImage.recoverTransitionRead(FSImage.java:316)
at org.apache.hadoop.hdfs.server.namenode.FSDirectory.loadFSImage(FSDirectory.java:104)
at org.apache.hadoop.hdfs.server.namenode.FSNamesystem.initialize(FSNamesystem.java:427)
at org.apache.hadoop.hdfs.server.namenode.FSNamesystem.&init&(FSNamesystem.java:388)
at org.apache.hadoop.hdfs.server.namenode.NameNode.initialize(NameNode.java:277)
at org.apache.hadoop.hdfs.server.namenode.NameNode.&init&(NameNode.java:497)
at org.apache.hadoop.hdfs.server.namenode.NameNode.createNameNode(NameNode.java:1298)
at org.apache.hadoop.hdfs.server.namenode.NameNode.main(NameNode.java:1307)
14:10:08,948 ERROR org.apache.hadoop.hdfs.server.namenode.NameNode: org.apache.hadoop.mon.InconsistentFSStateException: Directory /var/lib/hadoop/cache/hadoop/dfs/name is in an inconsistent state: storage directory does not exist or is not accessible.
at org.apache.hadoop.hdfs.server.namenode.FSImage.recoverTransitionRead(FSImage.java:316)
at org.apache.hadoop.hdfs.server.namenode.FSDirectory.loadFSImage(FSDirectory.java:104)
at org.apache.hadoop.hdfs.server.namenode.FSNamesystem.initialize(FSNamesystem.java:427)
at org.apache.hadoop.hdfs.server.namenode.FSNamesystem.&init&(FSNamesystem.java:388)
at org.apache.hadoop.hdfs.server.namenode.NameNode.initialize(NameNode.java:277)
at org.apache.hadoop.hdfs.server.namenode.NameNode.&init&(NameNode.java:497)
at org.apache.hadoop.hdfs.server.namenode.NameNode.createNameNode(NameNode.java:1298)
at org.apache.hadoop.hdfs.server.namenode.NameNode.main(NameNode.java:1307)
5:格式化HDFS,NameNode时候遇到不能创建文件的问题
&FATAL namenode.NameNode: Exception in namenode join
java.io.IOException: Cannot create directory /home/hadoop/YarnRun/name1/current
& & & & & &at org.apache.hadoop.mon.Storage$StorageDirectory.clearDirectory(Storage.java:301)
& & & & & &at org.apache.hadoop.hdfs.server.namenode.NNStorage.format(NNStorage.java:523)
& & & & & at org.apache.hadoop.hdfs.server.namenode.NNStorage.format(NNStorage.java:544)
& & & & & at org.apache.hadoop.hdfs.server.namenode.FSImage.format(FSImage.java:147)
& & & & & at org.apache.hadoop.hdfs.server.namenode.NameNode.format(NameNode.java:837)
& & & & & at org.apache.hadoop.hdfs.server.namenode.NameNode.createNameNode(NameNode.java:1213)
& & & & & at org.apache.hadoop.hdfs.server.namenode.NameNode.main(NameNode.java:1320)
这是因为权限不够,有两种权限。一个是用户的问题,启动hadoop的用户与文件归属的用户不是同一个用户,这时候需要设定为同一个用户才可以;
第二种是虽然启动hadoop的用户与文件归属的用户是同一个,但是文件的读写权限不够,这时候通过chmod修改文件的权限。
6:格式化HDFS,NameNode时候遇到文件不能重命名的问题
ERROR namenode.FSImage: Unable to save image for /home/hadoop/YarnRun/name1
java.io.IOException: Could not rename temporary file /home/hadoop/YarnRun/name1/current/fsimage_0000000.md5.tmp to /home/hadoop/YarnRun/name1/current/fsimage_0000000.md5
at org.apache.hadoop.hdfs.util.AtomicFileOutputStream.close(AtomicFileOutputStream.java:77)
at org.apache.hadoop.hdfs.util.MD5FileUtils.saveMD5File(MD5FileUtils.java:145)
at org.apache.hadoop.hdfs.server.namenode.FSImage.saveFSImage(FSImage.java:855)
at org.apache.hadoop.hdfs.server.namenode.FSImage$FSImageSaver.run(FSImage.java:882)
at java.lang.Thread.run(Thread.java:662)
14/02/19 17:16:53 ERROR common.Storage: Error reported on storage directory Storage Directory /home/hadoop/YarnRun/name1
14/02/19 17:16:53 WARN common.Stordfs.namenode.name.dirage: About to remove corresponding storage: /home/hadoop/YarnRun/name1
这是一个低级错误,在定义dfs.namenode.name.dir属性中的value的时候定义了两个文件夹,但是都命名成为了name1,导致格式化的时候错误。解决方法很简单把其中的一个修改为name2就解决了。
7:在部署集群YARN的时候,遇到问题namenode Incompatible clusterIDs
这是因为你在运行YARN集群的时候,再次格式化了NameNode导致。在格式化NameNode的时候会生成一个集群的唯一ID,在所有的DataNode节点上你设置的数据文件记录中会有个VERSION文件记录了当期的集群ID,当启动DataNode的时候会以当前的VERSION与NameNode中的集群ID做比较如果不同那么就会报出错误,启动DataNode失败。
解决办法也有两个,第一个就是当你格式化NameNode的时候,把所有数据节点上的文件都删除,这样DataNode启动的时候会重现到NameNode拉取所需要的数据;
第二种是修改你数据节点上数据文件存放位置中的VERSION文件,让该文件中的clusterIDs与NameNode中的ID是一致的。VERSION文件内容示例:
1 #Tue Mar 18 14:25:10 CST 2014
2 storageID=DS--192.168.100.5-3732616
3 clusterID=CID-8ac-4ec2-b518-8ba90e3fd9eb
5 storageType=DATA_NODE
6 layoutVersion=-47
二:MapReduce问题
1:hadoop /tmp/mapred/ could only be replicated to 0 nodes, instead of 1
启动了集群之后发现namenode起来了,但是各个slave节点的datanode却都没起起来。去看namenode日志发现错误日志:
INFO&org.apache.hadoop.ipc.Server:&IPC&Server&handler&1&on&9000,&call&addBlock(/opt/hadoop/tmp/mapred/,&DFSClient_)&from&127.0.0.1:2278:&error:&java.io.IOException:&File&/opt/hadoop/tmp/mapred/&could&only&be&replicated&to&0&nodes,&instead&of&1&&java.io.IOException:&File&/opt/hadoop/tmp/mapred/&could&only&be&replicated&to&0&nodes,&instead&of&1&&&&&&at&org.apache.hadoop.hdfs.server.namenode.FSNamesystem.getAdditionalBlock(FSNamesystem.java:1271) &&&&&&at&org.apache.hadoop.hdfs.server.namenode.NameNode.addBlock(NameNode.java:422) &&&&&&at&sun.reflect.NativeMethodAccessorImpl.invoke0(Native&Method) &&&&&&at&sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) &&&&&&at&sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) &&&&&&at&java.lang.reflect.Method.invoke(Method.java:597) &&&&&&at&org.apache.hadoop.ipc.RPC$Server.call(RPC.java:508) &&at&org.apache.hadoop.ipc.Server$Handler$1.run(Server.java:959) &&at&org.apache.hadoop.ipc.Server$Handler$1.run(Server.java:955) &&at&java.security.AccessController.doPrivileged(Native&Method) &&at&javax.security.auth.Subject.doAs(Subject.java:396) &&at&org.apache.hadoop.ipc.Server$Handler.run(Server.java:953) &
具体原因还不是很清楚,当防火墙不关闭的时候可能出现,但是当异常宕掉整个系统再重启的时候也会出现。解决办法是master和slave同时重新格式化
2:ERROR mapred.JvmManager: Caught Throwable in JVMRunner.&Aborting TaskTracker.&
java.lang.OutOfMemoryError: unable to create new native thread
在运行任务的过程中,计算突然停止,去计算节点查看TaskTracker日志,发现在计算的过程中抛出以上错误,经查证是因为你的作业打开的文件个数超过系统设置一个进程可以打开的文件的个数的上限。更改/etc/security/limits.conf的配置加入如下配置
hadoop soft nproc 10000
hadoop hard nproc 64000
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:128694次
积分:1956
积分:1956
排名:第14077名
原创:65篇
评论:12条
(1)(2)(2)(1)(1)(1)(1)(1)(1)(1)(1)(1)(1)(1)(1)(2)(2)(6)(2)(1)(4)(8)(5)(7)(12)(4)}

我要回帖

更多关于 hdfs datanode 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信