前面四节已经向大家介绍完,EMR集群的概括和搭建以及集群内的一些操作,在实际的生产过程中,又会出现各式各样的故障。接着就为大家介绍一些常见的故障已经解决方法。
NameNode主要负责存储元数据。从架构设计上看,元数据大致分为两个层次:Namespace管理层,负责管理文件系统中的树状目录结构以及文件与数据块的映射关系;块管理层:负责管理文件系统中文件的物理块与实际存储位置的映射关系BlockMap。
两种状态:standby和active
Active:对外负责读写操作
Standby:维护edits和fsimage文件
查看namenode的状态:
在HA集群:hdfs haadmin -getServiceState 节点名
切换namenode状态:hdfs haadmin -failover nn2 nn1
进入安全模式,整个集群是只读状态。当机器发生重启;进程发生重启;丢块过多;NameNode磁盘不足。
如何判断一个集群进入了安全模式???
使用Hadoop用户执行命令:hdfs dfsadmin -safemode get
如何重启NameNode节点?
hadoop安装目录/sbin/Hadoop-daemon.sh stop namenode
NameNode重启过程:
先加载fsimage、edits;也有可能会做一次checkpoint,接着做一次blockreport,就是说datanode会分批次把块上报给namenode(注意这个批次也是有阈值的),namenode会一直等待块的上报,知道所有的块达到99%的最小副本数。
Namenode推出安全模式的条件:
当99.9%的块达到最小副本数的时候;DataNode存活的数量达到配置数量的时候
指定节点离开/进入安全模式
hdfs dfsadmin -safemode -fs 节点ip:端口号 leave/enter
长期处于安全模式的优化措施
1、blockreport阶段耗时太长
2、重置文件current:前提是安全模式再执行。
hdfs dfsadmin -saveNamespace
注意:如果是HA(高可用),可以选择不重置,但是如果standby节点长期故障,必须这样处理。
如果是非HA集群,必须重置,而且处于安全模式的时候集群不能使用。
DataNode主要提供真实文件数据的存储服务。
文件块(block):最基本的存储单位。对于文件内容而言,一个文件的长度大小是size,那么从文件的0偏移开始,按照固定的大小,顺序对文件进行划分并编号,划分好的每一个块称一个Block。
HDFS默认Block大小是128MB,以一个256MB文件,共有256/128=2个Block. 不同于普通文件系统的是,HDFS中,如果一个文件小于一个数据块的大小,并不占用整个数据块存储空间。
Replication。多副本。默认是三个。(hdfs-site.xml的dfs.replication属性)
1、DataNode和NameNode通信导致DataNode的状态为dead
web ui有显示。心跳参数在hdfs-size.xml中,dfs.heartbeat.interval和dfs.namenode.heartbeat.recheck-interval
2、DataNode掉盘
会影响hdfs的读写、有hbase也会影响。先挂盘,在格式化,创建对象的目录,如果家的是/data盘,logs目录,将目录的owner改为hadoop用户
数据块丢失:EMR集群中的组件都是属于hadoop用户的,处理zookeeper。
查看是否丢失块:
hadoop用户执行 hdfs dfsadmin -report
确认丢块: hdfs fsck /路径
解决办法:先删除损坏块上的信息,重新上传。
hdfs fsck /路径 -delete
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。