【Hadoop】运维记录

1. namenode 被重新格式化,datanode数据版本与namenode不一致

ERROR org.apache.hadoop.hdfs.server.datanode.DataNode: java.io.IOException: Incompatible namespaceIDs in /home/hadoop/tmp/dfs/data: namenode namespaceID = 39895076; datanode namespaceID = 1030326122 
  1. 删除datanode所有文件
  2. 修改datanode dfs/data/current/VERSION与namenode相同

2. 常规数据交换量过大,导致通信故障datanode无法连接namenode 任务数据交换量过大,导致tasktracker与jobtracker通信故障

ERROR org.apache.hadoop.hdfs.server.datanode.DataNode: DatanodeRegistration(192.168.2.19:50010, storageID=DS-1082898260-202.106.199.39-50010-1348575582644, infoPort=50075, ipcPort=50020):DataXceiveServer: Exiting due to:java.lang.OutOfMemoryError: Java heap space
(注:上面这个ERROR并不一定全会发生,有时会出现无ERROR出现datanode就关闭的情况)
ERROR org.apache.hadoop.mapred.TaskTracker: Caught exception: java.io.IOException: Call to hadoopmaster/192.168.1.43:9001 failed on local exception: java.io.IOException: Connection reset by peer 
  1. 增大带宽
  2. 配置机架感知脚本topology.script.file.name
  3. 关闭均衡器

3. 磁盘损坏

ERROR org.apache.hadoop.hdfs.server.datanode.DataNode: org.apache.hadoop.util.DiskChecker$DiskError
Exception: Invalid value for volsFailed : 3 , Volumes tolerated : 0

关机换硬盘,2台以内服务器损坏无需关心数据丢失,hadoop存储策略以服务器为单位,不以硬盘为单位,或者把磁盘的容忍数调大

4. 主机名转换错误,datanode无法启动

INFO org.apache.hadoop.hdfs.server.datanode.DataNode: dnRegistration = DatanodeRegistration(bt-199-039.bta.net.cn:50010, storageID=, infoPort=50075, ipcPort=50020) 

设置hostname和/etc/sysconfig/network,然后重启datanode

5. 之前用错误账户启动hadoop,dfs存储所使用的本地文件夹被变更用户和组,导致文件夹不可写。datanode无法启动

INFO org.apache.hadoop.hdfs.server.datanode.DataNode: writeBlock blk_-8336485569098955809_2093928 received exception java.io.IOException: Permission denied 

切换高权限用户,将dfs存储的本地文件夹chown -R成hadoop本身用户和组,重启datanode

6. 启动hbase的regionserver的时候报 No space left on device df -h 磁盘空间都很充足 df -i 发现是根目录下文件数太多

for i in ./*; do echo $i; find $i| wc -l; done
查询出哪些目录下的文件数比较多,进行删除(当时判断是hdfs下文件数太多,删除,恢复)

7. hadoop查看目录OOM

hadoop fs -ls /apps/cal/normal/output/201602
Exception in thread "main" java.lang.OutOfMemoryError: GC overhead limit exceeded
        at java.util.Arrays.copyOfRange(Arrays.java:2694)
        at java.lang.String.<init>(String.java:203)
        at java.lang.String.substring(String.java:1877)
        at org.apache.hadoop.fs.Path.getName(Path.java:339)
        at org.apache.hadoop.fs.shell.PathData.getS

通过分析日志java.lang.OutOfMemoryError: GC overhead limit exceeded应该是返回列表太大导致jvm内存暴掉。
A) 通过which hadoop查看执行的文件:
[root@jfcal08 conf]# which hadoop
/usr/bin/hadoop
B) 通过vi /usr/bin/hadoop查看执行的文件,查看执行命令时都会去调用/etc/hadoop/conf/hadoop-env.sh文件;
C) 修改vi /etc/hadoop/conf/hadoop-env.sh
//The maximum amount of heap to use, in MB. Default is 1000.
//export HADOOP_HEAPSIZE=“1024”
export HADOOP_HEAPSIZE=“8192”
D) 问题解决。
E) 经过修改HADOOP_HEAPSIZE大小,多次验证,1.5G大小,可以显示55W文件。因此建议一个目录下最好不要超过30W文件数。否则客户端口默认显示有问题。
问题总结
本案例主要是由于文件数量太大,导致java堆栈暴掉,通过扩大堆栈大小可以解决问题,但是建议在设备存放一个目录下的文件要进行限制,可以细化多个目录存放。单个目录下最好不要超过30W文件数。

8. 双Active NameNode (fecing)

异常的Job在短时间内创建和删除大量文件,引起NN节点频繁更新内存的数据结构从而导致RPC的处理时间变长,CallQueue里面的RpcCall堆积,甚至严重的情况下打满CallQueue,导致NameNode响应变慢,甚至无响应,ZKFC的HealthMonitor监控自己的NN异常时,则会断开与ZooKeeper的链接,从而释放锁,另外一个NN上的ZKFC进行抢锁进行Standby到Active状态的切换。这是一般引起的切换的流程

一次namenode挂 触发主备切换 查看挂掉的namenode日志

WARN org.apache.hadoop.hdfs.qjournal.client.QuorumJournalManager: Remote journal 134.130.131.136:8485 failed to write txns 683242228-683242228. Will try to write to this JN again after the next log roll.
org.apache.hadoop.ipc.RemoteException(java.io.IOException): IPC's epoch 64 is less than the last promised epoch 65

FATAL org.apache.hadoop.hdfs.server.namenode.FSEditLog: Error: flush failed for required journal (JournalAndStream(mgr=QJM to [134.130.131.134:8485, 134.130.131.135:8485, 134.130.131.136:8485], stream=QuorumOutputStream starting at txid 683242228))
org.apache.hadoop.hdfs.qjournal.client.QuorumException: Got too many exceptions to achieve quorum size 2/3. 3 exceptions thrown:
134.130.131.136:8485: IPC's epoch 64 is less than the last promised epoch 65

【问题现象】Active NameNode日志出现异常,C’s epoch [X] is less than the last promised epoch [X+1],出现短期的双Active
【HDFS机制】该问题属于hdfs对于脑裂的异常保护,属于正常行为,不影响业务。
1)ZKFC1对NameNode1(Active)进行健康检查,因为长时间监控不到NN1的回复,认为该NameNode1不健康,主动释放zk中的ActiveStandbyElectorLock,此时NN1还是active(因为zkfc与NameNode1连接异常,不能将其shutdown)。
2)ZKFC2在zk中竞争到ActiveStandbyElectorLock,将NameNode2(原来的Standby)变成Active,同时会更新JN中的epoch使其+1。
3)NameNode1(原先的Active)再次去操作JournalNode的editlog时发现自己的epoch比JN的epoch小1,促使自己重启,成为Standby NameNode。
NN1 log:
【解决办法】
可以在core-site.xml文件中修改ha.health-monitor.rpc-timeout.ms参数值,来扩大zkfc监控检查超时时间。

ha.health-monitor.rpc-timeout.ms
180000

在这里插入图片描述
在这里插入图片描述
namenode 一台进入安全模式(active) 然后又自动恢复(当时在删除hdfs的回收站的数据)
在这里插入图片描述

9. kerberos问题

备机备份数据时
root@jfbh2n03 krb5kdc]# /usr/sbin/kprop -f /var/kerberos/krb5kdc/slave_datatrans ‘jfbh2n04.dcs.com’
/usr/sbin/kprop: Server rejected authentication (during sendauth exchange) while authenticating to server
Generic remote error: Key table entry not found

解决方法:更新所有keytab
/etc/krb5.keytab 试试登录 不行就重建

10. kerberos票据过期问题

1.修改krb5.conf为90d
2.修改kdc.conf为500d
3.modprinc -maxlife 90days krbtgt/DCS.COM@DCS.COM
4.modprinc -maxlife 90days 目标princ
5.重启krb5kdc
6.重新kinit klist

11. guava本地缓存局限性

无法支持分布式
重启服务缓存丢失

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
好的,我会尽力回答你关于hadoop系统运维的问题。 Hadoop是一个分布式计算框架,它的运维工作需要考虑到很多方面,包括硬件、网络、软件等等。以下是一些常见的Hadoop系统运维问题及其解决方法: 1. 如何监控Hadoop集群的健康状况? 答:可以使用Hadoop自带的Metrics系统来监控集群的健康状况。Metrics系统会收集各个组件的性能指标,并将其汇总到一个统一的界面上,方便管理员查看。此外,还可以使用第三方监控工具,如Ganglia、Nagios等。 2. 如何优化Hadoop集群的性能? 答:可以从以下几个方面入手进行优化: - 调整Hadoop配置参数,如调整数据块大小、副本数等; - 优化硬件配置,如增加内存、CPU等; - 使用更快的网络设备,如升级网卡、使用InfiniBand等; - 使用更快的存储设备,如使用SSD代替HDD。 3. 如何备份Hadoop集群中的数据? 答:可以使用Hadoop自带的备份工具——DistCp来备份数据。DistCp可以将一个Hadoop集群中的数据复制到另一个Hadoop集群中,也可以将数据备份到本地磁盘或其他存储设备中。 4. 如何升级Hadoop集群? 答:升级Hadoop集群需要注意以下几点: - 仔细阅读官方文档,了解升级过程中需要注意的事项; - 在测试环境中进行升级测试,确保升级过程不会影响生产环境; - 逐个升级各个组件,确保每个组件都能够正常工作; - 在升级过程中备份数据,以防数据丢失。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

我的浪漫与极端

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值