Shuffle Error: Exceeded MAX_FAILED_UNIQUE_FETCHES; bailing-out
这是reduce预处理阶段shuffle时获取已完成的map的输出失败次数超过上限造成的,上限默认为5。引起此问题的方式可能会有很多种,比如网络连接不正常,连接超时,带宽较差以及端口阻塞等。。。通常框架内网络情况较好是不会出现此错误的。
另一种说法:程序里面需要打开多个文件,进行分析,系统一般默认数量是1024,(用ulimit -a可以看到)对于正常使用是够了,但是对于程序来讲,就太少了。
修改2个文件。
/etc/security/limits.conf
vi /etc/security/limits.conf
加上:
soft nofile 102400
hard nofile 409600
$cd /etc/pam.d/
$sudo vi login
添加 session required /lib/security/pam_limits.so
Too many fetch-failures
出现这个问题主要是结点间的连通不够全面。
处理速度特别的慢 出现map很快 但是reduce很慢 而且反复出现 reduce=0%
可能是节点的联通不够全面,或者hadoop为各个守护进程(namenode,secondarynamenode,jobtracker,datanode,tasktracker)统一分配的内存并不合适,
结合问题2,然后修改 conf/hadoop-env.sh 中的export HADOOP_HEAPSIZE=4000
如题所示
重新格式化一个新的分布式文件时,需要将NameNode上所配置的dfs.name.dir,这一namenode用来存放NameNode 持久存储名字空间及事务日志的本地文件系统路径删除,同时将各DataNode上的dfs.data.dir的路径 ,用于存放块数据的本地文件系统路径的目录也删除。如本次配置就是在NameNode上删除 /home/hadoop/NameData,在DataNode 上删除 /home/hadoop/DataNode1和/home/hadoop/DataNode2 。
这是因为Hadoop在格式化一个新的分布式文件系统时,每个存储的名字空间都对应了建立时间的那个版本(可以查看/home/hadoop /NameData/current目录下的VERSION文件,上面记录了版本信息),在重新格式化新的分布式系统文件时,最好先删除NameData 目录。必须删除各DataNode的dfs.data.dir。这样才可以使namedode和datanode记录的信息版本对应。
如上所示。
注意:删除是个很危险的动作,不能确认的情况下不能删除!!做好删除的文件等通通备份!!
java.io.IOException: Could not obtain block: blk_194219614024901469_1100 file=/user/hive/warehouse/src_20090724_log/src_20090724_log
检查节点连接情况,恢复连接
java.lang.OutOfMemoryError: Java heap space
Java -Xms1024m -Xmx4096m
一般jvm的最大内存使用应该为总内存大小的一半,假设使用的8G内存,所以设置为4096m,这一值可能依旧不是最优的值。
mapred.child.java.opts
-Xmx800M -server
With the right JVM size in your hadoop-site.xml , you will have to copy this
to all mapred nodes and restart the cluster.
The right number of reduces seems to be 0.95 or 1.75 multiplied by (
mapred.tasktracker.reduce.tasks.maximum
2
The maximum number of reduce tasks that will be run
simultaneously by a task tracker.
1.修改需要新加硬盘的node的dfs.data.dir,用逗号分隔新、旧文件目录
2.重启dfs
0-1246359584298, infoPort=50075, ipcPort=50020):Got exception while serving blk_-5911099437886836280_1292 to /172.16.100.165:
java.net.SocketTimeoutException: 480000 millis timeout while waiting for channel to be ready for write. ch : java.nio.channels.SocketChannel[connected local=/
172.16.100.165:50010 remote=/172.16.100.165:50930]
at org.apache.hadoop.net.SocketIOWithTimeout.waitForIO(SocketIOWithTimeout.java:185)
at org.apache.hadoop.net.SocketOutputStream.waitForWritable(SocketOutputStream.java:159)
at org.apache.hadoop.net.SocketOutputStream.transferToFully(SocketOutputStream.java:198)
at org.apache.hadoop.hdfs.server.datanode.BlockSender.sendChunks(BlockSender.java:293)
at org.apache.hadoop.hdfs.server.datanode.BlockSender.sendBlock(BlockSender.java:387)
at org.apache.hadoop.hdfs.server.datanode.DataXceiver.readBlock(DataXceiver.java:179)
at org.apache.hadoop.hdfs.server.datanode.DataXceiver.run(DataXceiver.java:94)
at java.lang.Thread.run(Thread.java:619)
It seems there are many reasons that it can timeout, the example given in
HADOOP-3831 is a slow reading client.
在hadoop-site.xml中设置dfs.datanode.socket.write.timeout=0试试;
My understanding is that this issue should be fixed in Hadoop 0.19.1 so that
we should leave the standard timeout. However until then this can help
resolve issues like the one you’re seeing.
附带说一下 -refreshNodes 命令的另外三种用途:
Hadoop java.io.IOException: Job failed! at org.apache.hadoop.mapred.JobClient.runJob(JobClient.java:1232) while indexing.
when i use nutch1.0,get this error:
Hadoop java.io.IOException: Job failed! at org.apache.hadoop.mapred.JobClient.runJob(JobClient.java:1232) while indexing.
这个也很好解决:
可以删除conf/log4j.properties,然后可以看到详细的错误报告
我这儿出现的是out of memory
解决办法是在给运行主类org.apache.nutch.crawl.Crawl加上参数:-Xms64m -Xmx512m
你的或许不是这个问题,但是能看到详细的错误报告问题就好解决了
java.io.IOException: Task process exit with nonzero status of 255.
at org.apache.hadoop.mapred.TaskRunner.run(TaskRunner.java:424)
Set mapred.jobtracker.retirejob.interval and mapred.userlog.retain.hours to higher value(增大改值). By default, their values are 24 hours. These might be the reason for failure, though I’m not sure
hadoop 不提供直接的sort by value方法,因为这样会降低mapreduce性能。但可以用组合的办法来实现。
基本思想:
如果一个datanode 出现问题,解决之后需要重新加入cluster而不重启cluster,方法如下:
bin/hadoop-daemon.sh start datanode
bin/hadoop-daemon.sh start jobtracker
bin/hadoop dfsadmin -safemode leave
sudo /etc/init.d/iptables stop
创建表时,hive实际上将表的位置存储在元存储中的sds和dbs表中。所以当提出一个新的集群时,主机有一个新的IP,但是Hive的元存储仍然指向旧集群中的位置。每次打开集群时,都可以修改元存储以使用新的IP进行更新。但更简单和简单的解决方案是只为主机使用弹性IP。
所以要将metastore中的之前出现的namenode地址全部更换为现有的namenode地址。
Your DataNode is started and you can create directories with bin/hadoop dfs -mkdir, but you get an error message when you try to put files into the HDFS (e.g., when you run a command like bin/hadoop dfs -put).
磁盘写满的缘故,可以登陆网页查看hdfs,如果它说已经使用了100%的空间,就需要释放磁盘空间。
Your DataNodes won't start, and you see something like this in logs/*datanode*:
Incompatible namespaceIDs in /tmp/hadoop-ross/dfs/data
Hadoop的命名空间ID发生错误,重新格式化HDFS最简单。
You need to do something like this:
bin/stop-all.sh
rm -Rf /tmp/hadoop-your-username/*
bin/hadoop namenode -format
You can run Hadoop jobs written in Java (like the grep example), but your HadoopStreaming jobs (such as the Python example that fetches web page titles) won't work.
可能只给出了map函数和reduce函数的相对路径。指南中只是指定了相对路径,但如果在真正的集群中运行,则需要绝对路径。
Use absolute paths like this from the tutorial:
bin/hadoop jar contrib/hadoop-0.15.2-streaming.jar \
-mapper $HOME/proj/hadoop/multifetch.py \
-reducer $HOME/proj/hadoop/reducer.py \
-input urls/* \
-output titles
2009-01-08 10:02:40,709 ERROR metadata.Hive (Hive.java:getPartitions(499)) - javax.jdo.JDODataStoreException: Required table missing :
""PARTITIONS"" in Catalog "" Schema "". JPOX requires this table to perform its persistence operations.
Either your MetaData is incorrect, or you need to enable "org.jpox.autoCreateTables"
就是因为在 hive-default.xml 里把 org.jpox.fixedDatastore 设置成 true 了
09/08/31 18:25:45 INFO hdfs.DFSClient: Exception in createBlockOutputStream java.io.IOException:Bad connect ack with firstBadLink 192.168.1.11:50010
> 09/08/31 18:25:45 INFO hdfs.DFSClient: Abandoning block blk_-8575812198227241296_1001
09/08/31 18:25:51 INFO hdfs.DFSClient: Exception in createBlockOutputStream java.io.IOException:
Bad connect ack with firstBadLink 192.168.1.16:50010
09/08/31 18:25:51 INFO hdfs.DFSClient: Abandoning block blk_-2932256218448902464_1001
09/08/31 18:25:57 INFO hdfs.DFSClient: Exception in createBlockOutputStream java.io.IOException:
Bad connect ack with firstBadLink 192.168.1.11:50010
09/08/31 18:25:57 INFO hdfs.DFSClient: Abandoning block blk_-1014449966480421244_1001
09/08/31 18:26:03 INFO hdfs.DFSClient: Exception in createBlockOutputStream java.io.IOException:
Bad connect ack with firstBadLink 192.168.1.16:50010
09/08/31 18:26:03 INFO hdfs.DFSClient: Abandoning block blk_7193173823538206978_1001
09/08/31 18:26:09 WARN hdfs.DFSClient: DataStreamer Exception: java.io.IOException: Unable
to create new block.
at org.apache.hadoop.hdfs.DFSClient D F S O u t p u t S t r e a m . n e x t B l o c k O u t p u t S t r e a m ( D F S C l i e n t . j a v a : 2731 ) a t o r g . a p a c h e . h a d o o p . h d f s . D F S C l i e n t DFSOutputStream.nextBlockOutputStream(DFSClient.java:2731) at org.apache.hadoop.hdfs.DFSClient DFSOutputStream.nextBlockOutputStream(DFSClient.java:2731)atorg.apache.hadoop.hdfs.DFSClientDFSOutputStream.access 2000 ( D F S C l i e n t . j a v a : 1996 ) a t o r g . a p a c h e . h a d o o p . h d f s . D F S C l i e n t 2000(DFSClient.java:1996) at org.apache.hadoop.hdfs.DFSClient 2000(DFSClient.java:1996)atorg.apache.hadoop.hdfs.DFSClientDFSOutputStream$DataStreamer.run(DFSClient.java:2182)09/08/31 18:26:09 WARN hdfs.DFSClient: Error Recovery for block blk_7193173823538206978_1001
bad datanode[2] nodes == null
09/08/31 18:26:09 WARN hdfs.DFSClient: Could not get block locations. Source file “/user/umer/8GB_input”
- Aborting…
put: Bad connect ack with firstBadLink 192.168.1.16:50010
java.io.IOException: All datanodes xxx.xxx.xxx.xxx:xxx are bad. Aborting…
at org.apache.hadoop.dfs.DFSClient$DFSOutputStream.processDatanodeError(DFSClient.java:2158)
at org.apache.hadoop.dfs.DFSClient$DFSOutputStream.access$1400(DFSClient.java:1735)
at org.apache.hadoop.dfs.DFSClient$DFSOutputStream$DataStreamer.run(DFSClient.java:1889)
java.io.IOException: Could not get block locations. Aborting…
at org.apache.hadoop.dfs.DFSClient$DFSOutputStream.processDatanodeError(DFSClient.java:2143)
at org.apache.hadoop.dfs.DFSClient$DFSOutputStream.access$1400(DFSClient.java:1735)
at org.apache.hadoop.dfs.DFSClient$DFSOutputStream$DataStreamer.run(DFSClient.java:1889)
经查明,问题原因是linux机器打开了过多的文件导致。用命令ulimit -n可以发现linux默认的文件打开数目为1024,修改/ect/security/limit.conf,增加hadoop soft 65535
再重新运行程序(最好所有的datanode都修改),问题解决
no tasktracker to stop ,no datanode to stop
原因是hadoop在stop的时候依据的是datanode上的mapred和dfs**进程号**。而默认的进程号保存在/tmp下,linux默认会每隔一段时间(一般是一个月或者7天左右)去删除这个目录下的文件。因此删掉hadoop-hadoop-jobtracker.pid和hadoop- hadoop-namenode.pid两个文件后,namenode自然就找不到datanode上的这两个进程了。
在配置文件中的export HADOOP_PID_DIR可以解决这个问题
Incompatible namespaceIDs in /usr/local/hadoop/dfs/data: namenode namespaceID = 405233244966; datanode namespaceID = 33333244
原因:
在每次执行hadoop namenode -format时,都会为NameNode生成namespaceID,,但是在hadoop.tmp.dir目录下的DataNode还是保留上次的 namespaceID。因为namespaceID的不一致,而导致DataNode无法启动,所以只要在每次执行hadoop namenode -format之前,先删除hadoop.tmp.dir目录就可以启动成功。请注意是删除hadoop.tmp.dir对应的本地目录,而不是HDFS 目录。
2010-02-09 21:37:53,203 INFO org.apache.hadoop.hdfs.server.common.Storage: Storage directory D:\hadoop\run\dfs_name_dir does not exist.
2010-02-09 21:37:53,203 ERROR org.apache.hadoop.hdfs.server.namenode.FSNamesystem: FSNamesystem initialization failed.
org.apache.hadoop.hdfs.server.common.InconsistentFSStateException: Directory D:\hadoop\run\dfs_name_dir is in an inconsistent state: storage directory does not exist or is not accessible.
是因为存储目录D:\hadoop\run\dfs_name_dir不存在,所以只需要手动创建好这个目录即可。
Exception in thread "main" java.lang.NullPointerException
at sun.jvmstat.perfdata.monitor.protocol.local.LocalVmManager.activeVms(LocalVmManager.java:127)
at sun.jvmstat.perfdata.monitor.protocol.local.MonitoredHostProvider.activeVms(MonitoredHostProvider.java:133)
at sun.tools.jps.Jps.main(Jps.java:45)
原因:系统根目录/tmp文件夹被删除了。重新建立/tmp文件夹即可。
bin/hive中出现 unable to create log directory /tmp/…也可能是这个原因
2011-01-05 12:44:42,144 ERROR org.apache.hadoop.mapred.TaskTracker: Can not start task tracker because java.lang.RuntimeException: Not a host:port pair: local
at org.apache.hadoop.net.NetUtils.createSocketAddr(NetUtils.java:136)
at org.apache.hadoop.net.NetUtils.createSocketAddr(NetUtils.java:123)
at org.apache.hadoop.mapred.JobTracker.getAddress(JobTracker.java:1807)
at org.apache.hadoop.mapred.TaskTracker.(TaskTracker.java:905)
at org.apache.hadoop.mapred.TaskTracker.main(TaskTracker.java:2833)
需配置mapred.job.tracker属性,在mapred-site.xml的configuration节点中配置(job-tracker host为jobTracker服务器的ip或域名)
mapred.job.tracker
[job-tracker host]:9001
有时,当你申请到一个HOD集群后马上尝试上传文件到HDFS时,DFSClient会警告NotReplicatedYetException。通常会有一个如下报错信息。
org.apache.hadoop.ipc.RemoteException: java.io.IOException File /root/testdir/hadoop-default.xml could only be replicated to 0 nodes, instead of 1
at org.apache.hadoop.dfs.FSNamesystem.getAdditionalBlock(FSNamesystem.java:1123)
at org.apache.hadoop.dfs.NameNode.addBlock(NameNode.java:330)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
当你向一个DataNodes正在和NameNode联络的集群上传文件的时候,这种现象就会发生。在上传新文件到HDFS之前多等待一段时间就可以解决这个问题,因为这使得足够多的DataNode启动并且联络上了NameNode。(也就是说没有退出安全模式呢)
首先需要定位到哪的数据块丢失,可以通过查看日志进行检查和排除,找到文件块丢失的位置后,如果文件不是很重要可以直接删除,然后重新复制到集群上一份即可,如果删除不了,每一个集群都会有备份,需要恢复备份
具体参考:
https://blog.csdn.net/lukabruce/article/details/86714121
https://blog.csdn.net/chengyuqiang/article/details/79480433
hadoop dfsadmin -report
检测缺失块
hdfs fsck -list-corruptfileblocks
hdfs fsck / | egrep -v ‘^.+$’ | grep -v eplica
1、执行 hadoop job -list 拿到 job-id
2、hadoop job -kill job-id
默认是关闭的,需要手动打开,修改配置 core-site.xml
添加:
fs.trash.interval
1440
fs.trash.checkpoint.interval
1440
如果打开了回收站,hdfs会为每个用户都建一个回收站,用户删除文件时,文件并不是彻底地消失了,而是mv到了/user/用户名/.Trash/这个文件夹下,在一段时间内,用户可以恢复这些已经删除的文件。
如果用户没有主动删除,那么系统会根据用户设置的时间把文件删除掉,用户也可以手动清空回收站,这样删除的文件就再也找不回来了。
JavaAPI:
Trash trash = new Trash(fs, conf);
trash.moveToTrash(new Path("/xxxx"));
Shell: 如果你想直接删除某个文件,而不把其放在回收站,就要用到-skipTrash命令
例如:
hadoop fs -rm -r -skipTrash /test
查看回收站:
hadoop fs -ls /user/hadoop/.Trash/Current
Hadoop HDFS 数据自动平衡脚本使用方法:
在Hadoop中,包含一个start-balancer.sh脚本,通过运行这个工具,启动HDFS数据均衡服务。该工具可以做到热插拔,即无须重启计算机和 Hadoop 服务。HadoopHome/bin目录下的start−balancer.sh脚本就是该任务的启动脚本。启动命令为:
‘Hadoop_home/bin/start-balancer.sh –threshold`
影响Balancer的几个参数:
-threshold
默认设置:10,参数取值范围:0-100
参数含义:判断集群是否平衡的阈值。理论上,该参数设置的越小,整个集群就越平衡
dfs.balance.bandwidthPerSec
默认设置:1048576(1M/S)
参数含义:Balancer运行时允许占用的带宽
定时任务的设置:
可根据集群的数据变化量来进行定时数据均衡的执行
00 22 * * 5 hadoop balancer -Threshold 5 >>/home/zcb/log/balancer_date +"\%Y\%m\%d".log 2>&1
Exception in thread "main" java.io.IOException: Filesystem closed
at org.apache.hadoop.hdfs.DFSClient.checkOpen(DFSClient.java:498)
at org.apache.hadoop.hdfs.DFSClient.getFileInfo(DFSClient.java:1869)
at
org.apache.hadoop.hdfs.DistributedFileSystem$26.doCall(DistributedFileSystem.java:1474)
at
org.apache.hadoop.hdfs.DistributedFileSystem$26.doCall(DistributedFileSystem.java:1470)
at org.apache.hadoop.fs.FileSystemLinkResolver.resolve(FileSystemLinkResolver.java:81)
at
org.apache.hadoop.hdfs.DistributedFileSystem.getFileStatus(DistributedFileSystem.java:1
470)
at org.apache.hadoop.fs.FileSystem.exists(FileSystem.java:1444)
......
客户开发了一个HDFS应用,此应用存在多个线程,需同时往HDFS组件上写数据。在业务运行时,发现有业务线程和HDFS交互时,报如下异常:
......
Exception in thread "main" java.io.IOException: Filesystem closed
at org.apache.hadoop.hdfs.DFSClient.checkOpen(DFSClient.java:498)
at org.apache.hadoop.hdfs.DFSClient.getFileInfo(DFSClient.java:1869)
at
org.apache.hadoop.hdfs.DistributedFileSystem$26.doCall(DistributedFileSystem.java:1474)
at
org.apache.hadoop.hdfs.DistributedFileSystem$26.doCall(DistributedFileSystem.java:1470)
at org.apache.hadoop.fs.FileSystemLinkResolver.resolve(FileSystemLinkResolver.java:81)
at
org.apache.hadoop.hdfs.DistributedFileSystem.getFileStatus(DistributedFileSystem.java:1
470)
at org.apache.hadoop.fs.FileSystem.exists(FileSystem.java:1444)
......
原因分析
经分析,捕捉到异常的业务应用线程确实有建立到HDFS组件连接,并且这个过程中此业务应用线程并没close这个连接实例,连接初始化API示意代码:
FileSystem hdfs1 = FileSystem.get(conf);
再排查此业务应用代码,发现在其他线程中有close连接实例的操作,关闭连接实例的API示意代码:
hdfs1.close();
深入分析发现:多个线程通过HDFS提供API申请并获取到HDFS连接实例,但实际上是同一个连接实例,所以在同一个业务进程内,一旦一个线程close一个HDFS连接实例,其他线程即无法再使用先前所申请的连接实例。
如下是对这个问题的演示DEMO:
......
FileSystem hdfs1 = FileSystem.get(conf);
FileSystem hdfs2 = FileSystem.get(conf);
System.out.println("/user/tester1/spark-core is "
+ hdfs1.exists(new Path("/user/tester1/spark-core")));
System.out.println("/user/tester1/hive-date is "
+ hdfs2.exists(new Path("/user/tester1/hive-date")));
hdfs1.close();
System.out.println("/user/tester1/hive-date is "
+ hdfs2.exists(new Path("/user/tester1/hive-date"))); // 这里会失败,因为上面已经把连
接实例关闭了。
属于HDFS机制,并不是bug。业务应用需根据自己的实际业务场景来确定如何使用HDFS连接。一般建议如下,供参考:
业务进程空间中,统一建立和管理(例如close)一个连接实例,各个线程共用,但不要直接管理此连接实例;
若实在有必要给一个线程单独分配一个连接实例,可以按照HDFS机制,在创建连接实例时,指定不采用缓存中的连接实例,具体API的使用DEMO如下:
c. ......
d. FileSystem hdfs1 = FileSystem.get(conf);
e. conf.setBoolean("fs.hdfs.impl.disable.cache", true);//指定不采用缓存中的连接实例
f. FileSystem hdfs2 = FileSystem.get(conf);
g.
h. System.out.println("/user/tester1/spark-core is "
i. + hdfs1.exists(new Path("/user/tester1/spark-core")));
j. System.out.println("/user/tester1/hive-date is "
k. + hdfs2.exists(new Path("/user/tester1/hive-date")));
l.
m. hdfs1.close();
n. System.out.println("/user/tester1/hive-date is "
+ hdfs2.exists(new Path("/user/tester1/hive-date"))); // 这里不会再抛出问题描述中的异
常。
ERROR org.apache.hadoop.hdfs.server.datanode.DataNode: java.io.IOException: Call to ... failed on local exception: java.net.NoRouteToHostException: No route to host
关闭防火墙
service iptables stop
机器重启后,防火墙还会开启。
INFO hdfs.DFSClient: Exception in createBlockOutputStream java.io.IOException: Bad connect ack with firstBadLink
INFO hdfs.DFSClient: Abandoning block blk_-1300529705803292651_37023
WARN hdfs.DFSClient: DataStreamer Exception: java.io.IOException: Unable to create new block.
关闭防火墙:
service iptables stop
禁用selinux:
编辑 /etc/selinux/config文件,设置“SELINUX=disabled”
ERROR security.UserGroupInformation: PriviledgedActionException as:hadoop cause:java.net.UnknownHostException: hadoop: hadoop: Name or service not known
Exception in thread "main" java.net.UnknownHostException: hadoop: hadoop: Name or service not known
把/etc/hostname文件中的主机名加入到/etc/hosts文件中,问题解决。
Format aborted in /home/hadoop/dfs/name
/home/hadoop/dfs/name 是 dfs.name.dir 配置的本地路径,把这个目录删除, 再格式化就可以了。
首先查看datanode的日志,发现里面没有datanode.log的日志,只有datanode.out,其中几乎没啥有用信息,于是尝试删除记录进程id的文件,在/var/run/LOCALCLUSTER/HADOOP/…datanode.pid,删除该文件后,重新手动启一次datanode,出现如下错误:
hdh215: starting datanode, logging to /mnt/disk1/log/LOCALCLUSTER/SERVICE-HADOOP-retro/hdfs/hadoop-root-datanode-hdh215.out
hdh215: ERROR: transport error 202: bind failed: Address already in use
hdh215: ERROR: JDWP Transport dt_socket failed to initialize, TRANSPORT_INIT(510)
hdh215: JDWP exit error AGENT_ERROR_TRANSPORT_INIT(197): No transports initialized [debugInit.c:750]
又想到报这个错误之前重启的时候(还未修改进程id文件)提示过:
[root@hdh215 sbin]# ./hadoop-daemon.sh start datanode
starting datanode, logging to /mnt/disk1/log/LOCALCLUSTER/SERVICE-HADOOP-retro/hdfs/hadoop-root-datanode-hdh215.out
Listening for transport dt_socket at address: 15005
于是乎看了下谁占用了端口,并kill:
[root@hdh215 sbin]# netstat -tunlp | grep 15005
tcp 0 0 0.0.0.0:15005 0.0.0.0:* LISTEN 35237/java
[root@hdh215 sbin]# kill -9 35237
[root@hdh215 sbin]# netstat -tunlp | grep 15005
jps一下:
2887 -- main class information unavailable
查看这个进程:
[root@hdh215 sbin]# ps -ef |grep 2887
root 2887 1 0 10:44 pts/0 00:00:00 /usr/lib/LOCALCLUSTER/jdk1.8.0_211/bin/java -Dproc_datanode -DclusterId=LOCALCLUSTER -DserviceId=SERVICE-HADOOP-retro -Dhadoop.log.dir=/mnt/disk1/log/LOCALCLUSTER/SERVICE-HADOOP-retro/hdfs -Dhadoop.log.file=hadoop.log -Dhadoop.home.dir=/usr/lib/LOCALCLUSTER/hadoop -Dhadoop.id.str=root -Dhadoop.root.logger=INFO,
console -Djava.library.path=/usr/lib/LOCALCLUSTER/hadoop/lib/native -Dhadoop.policy.file=hadoop-policy.xml -Djava.net.preferIPv4Stack=true -DclusterId=LOCALCLUSTER -DserviceId=SERVICE-HADOOP-retro -DclusterId=LOCALCLUSTER -DserviceId=SERVICE-HADOOP-retro -Dhadoop.log.dir=/mnt/disk1/log/LOCALCLUSTER/SERVICE-HADOOP-retro/hdfs -Dhadoop.log.file=hadoop-root-datanode-hdh215.log -Dhadoop.home.dir=/usr/lib/LOCALCLUSTER/hadoop -Dhadoop.id.str=root -Dhadoop.root.logger=INFO,
RFA -Djava.library.path=/usr/lib/LOCALCLUSTER/hadoop/lib/native -Dhadoop.policy.file=hadoop-policy.xml -Djava.net.preferIPv4Stack=true -server -Xmx4g -Xms2g -Xmn1g -DroleId=SERVICE-HADOOP-retro-DATANODE-0 -Xmx4g -Xms2g -Xmn1g -DroleId=SERVICE-HADOOP-retro-DATANODE-0 -Xmx4g -Xms2g -Xmn1g -DroleId=SERVICE-HADOOP-retro-DATANODE-0 -agentlib:jdwp=transport=dt_socket,server=y,suspend=y,address=15005 -Dhadoop.security.logger=INFO,RFAS org.apache.hadoop.hdfs.server.datanode.DataNode
root 44416 42879 0 10:48 pts/0 00:00:00 grep --color=auto 2887
端口占用导致的,修改下,或者取消远程debug配置
在bin的hdfs文件中,找到该处,并注释。再次重启,即可
强调文本 强调文本
加粗文本 加粗文本
标记文本
删除文本
引用文本
H2O is是液体。
210 运算结果是 1024.