错误记录与分析

错误1:java.net.BindException: Port in use: localhost:0

  1. datanode节点启动时报错
  2. 日志信息如下:
  3. Exiting with status : java.net.BindException: Port in use: localhost:
  4. 解决:在/etc/hosts文件开头添加如下内容
  5. :: localhost
  6. 127.0.0.1 localhost

错误2:datanode节点磁盘空间爆满,导致datanode启动不能启动

  1. 解决:
  2. 、查看数据
  3. hadoop fs -du -h /user/data/hadoop
  4. 、删除最旧的数据
  5. hadoop fs -rm -r -skipTrash /user/hadoop/data/-* 删除一个月的
  6.  
  7. 注:这里只是举一个样例,当空间不足的时候,就删掉某一数据。但是,通常情况下,在配置部署集群的时候,都会配置磁盘预留10%的容量。
  8.  
  9. 还有一种情况:当某一块磁盘容量100%的时候,datanode节点不能启动。这种解决方法就是删除这块磁盘下的某些不重要的数据,比如日志文件。删除以后可以正常启动,接着执行balancer就可以。

错误3:java.io.IOException: Premature EOF from inputStream

  1. 报错信息如下:
  2.  
  3. -- ::, INFO org.apache.hadoop.hdfs.server.datanode.DataNode: Exception for BP--x.x.x.x-:blk_1100079604_26351635
  4. java.io.IOException: Premature EOF from inputStream
  5.  
  6. 从错误来看,是由于文件被提前关闭,导致io错误。发生这种情况通常是在客户端读写hdfs上的文件时发生的。
  7.  
  8. 解决:
  9. 1、修改hdfs-site.xml(每个节点都要改):
  10. dfs.datanode.max.transfer.threads 值修改为8192。这个是datanode同时处理请求的任务上限,总默认值是 4096,该参数取值范围[1 to 8192]。
  11. 2、修改操作系统打开文件数。
    当然也有可能是其他问题导致的。

错误4:org.apache.hadoop.net.ConnectTimeoutException: 60000 millis timeout while waiting for channel to be ready for connect

  1. k_1087564514_13888513 received exception org.apache.hadoop.net.ConnectTimeoutException: millis timeout while waiting for channel to be ready for connect. ch : java.nio.channels.SocketChannel[connection-pending remote=/58.240.56.125:]
  2. // :: WARN balancer.Dispatcher: Failed to move blk_1087564434_13888433 with size= from x.x.x.x::DISK to y.y.y.y::DISK through x.x.x.x:: block move is failed: opReplaceBlock BP--x.x.x.x-:blk_1087564434_13888433 received exception org.apache.hadoop.net.ConnectTimeoutException: millis timeout while waiting for channel to be ready for connect. ch : java.nio.channels.SocketChannel[connection-pending remote=/x.x.x.x:]
  3.  
  4. hadoop客户端连接超时问题
  5. 解决
  6. 修改hdfs-site.xml文件,添加
  7. hdfs客户端的读写超时时间
  8. dfs.client.socket-timeout(默认60000)
  9.  
  10. dfs.datanode.socket.write.timeout(默认80000)
  11.  
  12. dfs.datanode.handler.count=

错误5:All datanodes 58.240.56.122:50010 are bad. Aborting.

  1. 这个问题的原因不确定,可能会有多种情况导致。
    1、查看当前系统的最大打开文件数量是否受限制;ulimt -n
  2.  
  3. 我这边系统的最大文件数量已经被设置为65535,但依然在hbase的日志里面大量的报这个错误。最后发现是由于datanode服务器压力过大导致,最后通过调整hbaseregionserverheap大小降低服务器的压力。(一共两台datanode 0.0)
  4.  
  5. 可能还要其他原因导致,这边暂时没有分析出来,期待以后补上了。

错误5:AttemptID:attempt_1547604600777_0101_r_000085_0 Timed out after 600 secs 或者 Too Many fetch failures.Failing the attempt

  1. reduce任务失败,最终导致整个作业失败。
  2. 问题分析:这个是由于某个reduce任务重试4次后,job失败,原因就是因为超时。mapreduce.task.timeout参数对应的超时时间是600s。这意味着,如果mapreduce方法在600秒内没有返回或者输出内容,
  3. NM将认为相应的mapreduce已经死亡。 并向AM汇报错误。AM会杀死此次尝试,并在其他节点上重新执行它。
  4. 可能导致的原因:
  5. ()、跑reduce任务的datanode节点压力大,可以使用topiostartsar等命令查看系统资源使用情况。也有可能datanode挂掉。
  6. ()、网络问题,网络IO过大。
  7. ()、程序死循环。
    (4)、数据倾斜。
  8. 解决:
  9. 检查网络问题、datanode节点是否资源不足。

错误6:java.io.IOException: Broken pipe

  1. 原因分析
  2.  
  3. ().当访问某个服务突然服务器挂了,就会产生Broken pipe;
  4.  
  5. ().客户端读取超时关闭了连接,这时服务器往客户端再写数据就发生了broken pipe异常!

错误7:java.net.SocketTimeoutException: 60000 millis timeout while waiting for channel to be ready for read. ch

  1. 解决:打开core-site.xml文件
  2. 添加:ipc.ping.interval=

错误8:ssh连接问题:shell request failed on channel 0

  1. 分析:操作系统进程数量太小,导致连接失败
  2. 解决:修改操作系统最大进程数量
    ulimit -u 查看最大进程数量。

错误9:The accepted epoch, d is less than the current epoch, 5e4

  1. zookeeper启动报错
  2. 解决:进入到zookeeper数据目录下的version-2目录,把acceptedEpoch文件里面的值改成currentEpoch里面的值,也就是上述的5e4.

错误10:namenode报错,the directory item limit is exceed: limit=1048576

  1. 调整hadoop单个目录下的文件数量:
  2. namenode日志里面可能存在如下错误:
  3. the directory item limit is exceed: limit=
  4. hadoop单个目录下文件超1048576个,默认limit限制数为1048576,所以要调大limit限制数
  5. 调整:
  6. 参数:dfs.namenode.fs-limits.max-directory-items
  7. 值: 注:值范围 ~
  8.  
  9. 将配置文件推送至hadoop集群所有节点
  10. 重启hadoop服务

错误11:journalnode报错,org.apache.hadoop.hdfs.qjournal.client.QuorumJournalManager: Waited 96275 ms (timeout=20000 ms) for a response for sendEdits. No responses yet.

  1. 调节journalnode 的写入超时时间,默认20000(20s)
  2. namenode日志文件可能存在的错误:
  3. org.apache.hadoop.hdfs.qjournal.client.QuorumJournalManager: Waited ms (timeout= ms) for a response for sendEdits. No responses yet.
  4. 参数:dfs.qjournal.write-txns.timeout.ms
  5. 值:(200s)

错误12:java.io.IOException: Can't scan a pre-transactional edit log.

  1. 由于数据磁盘爆满,达到100%,导致journalnode宕掉,在启动journalnode以后,查看日志,提示Can't scan a pre-transactional edit log,这个时候namenode已经是不能正常启动了。
  2.  
  3. java.io.IOException: Can't scan a pre-transactional edit log.
  4. at org.apache.hadoop.hdfs.server.namenode.FSEditLogOp$LegacyReader.scanOp(FSEditLogOp.java:)
  5. at org.apache.hadoop.hdfs.server.namenode.EditLogFileInputStream.scanNextOp(EditLogFileInputStream.java:)
  6. at org.apache.hadoop.hdfs.server.namenode.EditLogFileInputStream.scanEditLog(EditLogFileInputStream.java:)
  7. at org.apache.hadoop.hdfs.server.namenode.FileJournalManager$EditLogFile.scanLog(FileJournalManager.java:)
  8. at org.apache.hadoop.hdfs.qjournal.server.Journal.scanStorageForLatestEdits(Journal.java:)
  9. at org.apache.hadoop.hdfs.qjournal.server.Journal.<init>(Journal.java:)
  10. at org.apache.hadoop.hdfs.qjournal.server.JournalNode.getOrCreateJournal(JournalNode.java:)
  11. at org.apache.hadoop.hdfs.qjournal.server.JournalNode.getOrCreateJournal(JournalNode.java:)
  12. at org.apache.hadoop.hdfs.qjournal.server.JournalNodeRpcServer.getEditLogManifest(JournalNodeRpcServer.java:)
  13. at
  14.  
  15. 解决办法:
  16.  
  17. 、删除数据磁盘的一些无用的数据,让磁盘有一定的空间,只要空间>0k,journalnode就可以正常启动,我这边就是某一块盘一点磁盘空间都没有,可用空间0k。导致在启动journalnode的时候提示磁盘空间不足,说到底,还是集群在规划的时候没有预留磁盘空间导致的,给差评。
  18.  
  19. 、报上述的 Can't scan a pre-transactional edit log 错误,就是由于journalnode维护的eidts文件损坏,这个时候,看一下journalnode几台节点,哪一台是好的,先删除损坏的journalnode的数据文件,然后把这台好的journalnode文件拷贝到其他的节点。
  20.  
  21. 、修改拷贝过来的数据文件的权限
  22.  
  23. 、重启journalnode。

错误13:启动hadoop进程提示ssh 22端口不能连接

  1. 分析:由于在生产环境下,ssh的端口被修改成220,不是使用的默认端口,但是hadoop在启动相应进程的时候,使用的ssh默认端口
  2.  
  3. 解决:
  4.  
  5. 、命令行(临时),这种方式会导致关闭当前终端,该值失效。
  6.  
  7. export HADOOP_SSH_OPTS="-p 220"
  8. 、永久修改:把上述的命令添加到hadoophadoop-env.sh文件,添加以后就可以正常启动hadoop进程。

错误14:Unable to fence NameNode at master/172.17.0.11:8020

  1. 解决:
  2. 提示未找到fuster程序,导致无法进行fence,所以可以通过如下命令来安装,Psmisc软件包中包含了fuster程序
  3. #apt-get update
  4. # apt-get install psmisc

hadoop错误记录部分总结的更多相关文章

  1. Ambari搭建hadoop错误记录

    1.ResourceManager启动失败 错误如下 2019-03-24 19:57:00,607 - Error while executing command 'start': Tracebac ...

  2. kerberos 配置错误记录

    服务端错误记录: 1.服务端在创建数据库的时候报如下错误: # kdb5_util -s -r HADOOP.HOME 错误提示:kdb5_util: Improper format of Kerbe ...

  3. uploadify插件Http Error(302)错误记录(MVC)

    由于项目(asp.net MVC)需要做一个附件上传的功能,使用的是jQuery的Uploadify插件的2.1.0版本,上传文件到自己项目指定的文件夹下面.做完之后,在谷歌上测试是正确的,在火狐上报 ...

  4. 开发错误记录8:Unable to instantiate application com

    开发错误记录8:Unable to instantiate application com.android.tools.fd.runtime.BootstrapApplication 这是因为在And ...

  5. PHP 错误与异常 笔记与总结(5)配置文件中与错误日志相关的选项 && 将错误记录到指定的文件中

    [记录错误(生产环境)] php.ini: ① 开启 / 关闭 错误日志功能 log_errors = On ② 设置 log_errors 的最大字节数 log_errors_max_len = 其 ...

  6. 安装nagios出现的两个错误记录

    最近在安装nagios,出现几个错误记录: 一 检查nagios配置的时候出现错误如下: Warning: Duplicate definition found for host 'kelly' (c ...

  7. hadoop 错误处理机制

    hadoop 错误处理机制 1.硬件故障 硬件故障是指jobtracker故障或TaskTracker 故障 jobtracker是单点,若发生故障,目前hadoop 还无法处理,唯有选择最牢靠的硬件 ...

  8. [置顶] 利用Global.asax的Application_Error实现错误记录,错误日志

    利用Global.asax的Application_Error实现错误记录 错误日志 void Application_Error(object sender, EventArgs e) { // 在 ...

  9. streamsets 错误记录处理

    我们可以在stage 级别,或者piepline 级别进行error 处理配置 pipeline的错误记录处理 discard(丢踢) send response to Origin pipeline ...

随机推荐

  1. 视频质量评估 之 VMAF

    VMAF 方法: 基本想法: 面对不同特征的源内容.失真类型,以及扭曲程度,每个基本指标各有优劣.通过使用机器学习算法(支持向量机(Support Vector Machine,SVM)回归因子)将基 ...

  2. JavaScript之变量

    var a; // 声明变量a,变量:值可以改变的,相当于数学x,y,z... a=10; // 将10赋值给a var test; var Test; /* 变量命名规则: 1.不能以数字开头 2. ...

  3. PHP 中使用ajax时一些常见错误总结整理

    这篇文章主要介绍了PHP 中使用ajax时一些常见错误总结整理的相关资料,需要的朋友可以参考下 PHP作为后端时,前端js使用ajax技术进行相互信息传送时,经常会出错误,对于新手来说有些手足无措.总 ...

  4. Django Redis配置

    Django Redis配置 # Django默认不支持redis,需要第三方插件来支持 pipenv install django-redis pipenv install hiredis # 不是 ...

  5. 【填坑】Ubuntu安装vsftpd

    1.安装vsftpdsudo apt-get install vsftpd 安装完毕后或许会自动生成一个帐户"ftp",/home下也会增加一个文件夹.如果没有生成这个用户的话可以 ...

  6. net 与或非

    && op1 && op2 当op1和op2都是true时,返回true :如果op1的值是false,则不运算右边的操作数 || op1 || op2 当op1和op ...

  7. Win10 C盘 系统和保留 占用空间 非常大

    Win10 C盘 系统和保留 占用空间 非常大今天在写代码的时候,突然发现Redis起不来了,一看原因,是因为C盘空间不足.然后,我看了下C盘,发现...一个叫系统和保留的东西,居然占了110G的空间 ...

  8. kubernetes集群的认证、授权、准入控制

    一.kubernetes集群安全架构 用户使用kubectl.客户机或通过REST请求访问API.可以授权用户和Kubernetes服务帐户进行API访问.当一个请求到达API时,它会经历几个阶段,如 ...

  9. mac中git使用

    配置用户名及邮箱在使用Git提交前,必须配置用户名和邮箱,这些信息会永久保存到历史记录中.git config --global user.name "xxxxxx"git con ...

  10. C++(三十六) — 等号操作符重载、&&,||不可重载

    1.等号操作符重载,实现深拷贝 //等号运算符重载 // obj3=obj1;//原始的是浅拷贝,现在要重载为深拷贝 Name& operator=(Name &obj1) { //1 ...