文章目录

  • checkpoint周期
  • NameNode故障处理
  • NameNode故障处理第一种方式详细步骤
  • NameNode故障处理第二种方式详细步骤
  • DataName工作机制
  • HDFS之集群安全模式
  • NameNode启动
  • DataNode启动
  • 如何判断退出了安全模式
  • HDFS安全模式基本语法
  • Hadoop归档技术
  • Hadoop归档案例
  • HDFS的可靠性具体表现!


checkpoint周期

<!-- 定时一小时 -->
<property>
	<name>dfs.namenode.checkpoint.period</name>
	<value>3600</value>
</property>
<!-- 一分钟检查一次操作次数,当操作次数达到1百万时,SecondaryNameNode执行一次 -->
<property>
	<name>dfs.namenode.checkpoint.txns</name>
	<value>1000000</value>
<description>操作动作次数</description>
</property>
<property>
	<name>dfs.namenode.checkpoint.check.period</name>
	<value>60</value>
<description> 1分钟检查一次操作次数</description>
</property >

NameNode故障处理

  1. NameNode故障后,HDFS集群就无法正常工作,因为HDFS文件系统的元数据需要由NameNode来管理维护并与Client交互,如果元数据出现损坏和丢失同样会导致NameNode无法正常工作进而HDFS文件系统无法正常对外提供服务
  2. NameNode故障后,可以采用如下两种方法恢复数据:
  1. 第一种:将SecondaryNameNode中数据拷贝到NameNode存储数据的目录;
  2. 第二种:使用-importCheckpoint选项启动NameNode守护进程,从而将SecondaryNameNode中数据拷贝到NameNode目录中。

NameNode故障处理第一种方式详细步骤

  1. kill -9 NameNode进程
  2. 删除NameNode存储的数据(data/tmp/dfs/name)
  3. 拷贝SecondaryNameNode中数据到原NameNode存储数据目录
  4. 重新启动NameNode

NameNode故障处理第二种方式详细步骤

  1. 修改hdfs-site.xml中的
<property>
  <name>dfs.namenode.checkpoint.period</name>
  <value>120</value>
</property>

<property>
  <name>dfs.namenode.name.dir</name>
  <value>Hadoop位置+/data/tmp/dfs/name</value>
</property>
  1. kill -9 NameNode进程
  2. 删除NameNode存储的数据(data/tmp/dfs/name)
  3. 如果SecondaryNameNode不和NameNode在一个主机节点上,需要将SecondaryNameNode存储数据的目录拷贝到NameNode存储数据的平级目录,并删除in_use.lock文件
  4. 导入检查点数据(等待一会ctrl+c结束掉)
bin/hdfs namenode -importCheckpoint
  1. 启动NameNode

DataName工作机制

  1. 一个数据块在DataNode上以文件形式存储在磁盘上,包括两个文件,一个是数据本身,一个是元数据包括数据块的长度,块数据的校验和,以及时间戳。
  2. DataNode启动后向NameNode注册,通过后,周期性(1小时)的向NameNode上报所有的块信息。
  3. 心跳是每3秒一次,心跳返回结果带有NameNode给该DataNode的命令如复制块数据到另一台机器,或删除某个数据块。如果超过10分钟没有收到某个DataNode的心跳,则认为该节点不可用。
  4. 集群运行中可以安全加入和退出一些机器。

HDFS之集群安全模式

NameNode启动

  1. NameNode启动时,首先将镜像文件Fsimage载入内存中,并执行编辑日志Edits中的各项操作,一i但在内存中成功建立文件系统元数据的映像,则创建一个新的Fsimage文件和一个空的编辑日志Edits文件。此时NameNode开始监听DataNode请求。这个过程中NameNode一直运行在安全模式,即NameNode的文件系统对于客户端来说是只读的。

DataNode启动

  1. 系统中的数据块的位置并不是由NameNode维护的,而是以块列表的形式存储在DataNode中,在系统的正常操作期间,NameNode会在内存中保留所有Block块位置的映射信息,在安全模式下,各个DataNode会向NameNode发送最新的块列表信息,NameNode了解到足够多的块位置信息后,即可高效运行文件系统。

如何判断退出了安全模式

  1. 如果满足了最小副本条件,NameNode会在30秒后退出安全模式,所谓的最小副本条件即在整合HDFS文件系统中99.9%的块满足最小副本级别(默认值:dfs.replication.min=1)
  2. 启动一个刚刚格式化的HDFS集群时,因为系统中还没有任何块,所以NameNode不会进入安全模式。

HDFS安全模式基本语法

  1. 集群处于安全模式时,不能执行重要操作(写操作)。集群启动完成后,自动退出安全模式。
  2. bin/hdfs dfsadmin -safemode get (功能描述:查看安全模式状态)
  3. bin/hdfs dfsadmin -safemode enter (功能描述:进入安全模式状态)
  4. bin/hdfs dfsadmin -safemode leave (功能描述:离开安全模式状态)
  5. bin/hdfs dfsadmin -safemode wait (功能描述:等待安全模式状态)

Hadoop归档技术

  1. Hadoop归档技术主要解决HDFS集群存在大量小文件的问题!
  2. 由于大量小文件会占用NameNode的内存,因此对于HDFS来说存储大量小文件造成NameNode内存资源的浪费!
  3. Hadoop存档文件HAR文件,是一个更高效的文件存档工具,HAR文件是由一组文件通过archive工具创建而来,在减少了NameNode的内存使用的同时,可以对文件进行透明的访问
  4. 通俗来说就是HAR文件对NameNode来说是一个文件减少了内存的浪费,对于实际操作处理文件依然是一个一个独立的文件。

Hadoop归档案例

  1. 启动YARN集群:start-yarn.sh
  2. 把/user/code/input目录里面的所有文件归档成一个叫input.har的归档文件,并把归档后文件
    存储到/user/code/output路径下。
[root@linux121 hadoop-2.9.2]$ bin/hadoop archive -archiveName input.har –p
/user/code/input /user/code/output
  1. 查看归档
[root@linux121 hadoop-2.9.2]$ hadoop fs -lsr har:///user/code/output/input.har
  1. 解归档文件
[root@linux121 hadoop-2.9.2]$ hadoop fs -cp har:/// user/code/output/input.har/* /user/code

HDFS的可靠性具体表现!

  1. HDFS 的可靠性有:冗余副本策略,机架策略,心跳机制,安全模式,效验和,回收站,元数据保护,快照机制。
  2. 冗余副本策略:可以在 hdfs-site.xml 中设置复制因子指定副本数量,所有数据块都可副本DataNode 启动时,遍历本地文件系统,产生一份 HDFS 数据块和本地文件的对应关系列表(blockreport) 汇报给 Namenode
  3. 机架策略:HDFS 的"机架感知",通过节点之间发送一个数据包,来感应它们是否在同一个机架。一般在本机架放一个副本,在其他机架再存放一个副本,这样可以防止机架失效时丢失数据,也可以提高带宽利用率
  4. 心跳机制:NameNode 周期性从 DataNode 接受心跳信息和块报告,NameNode 根据块报告验证元数据,没有按时发送心跳的 DataNode 会被标记为宕机,不会再给他任何 I/O 请求。如果 DataNode 失效造成副本数量下降,并且低于预先设定的值,NameNode 会检测出这些数据库,并在合适的时机重新复制。引发重新复制的原因还包括数据副本本身损坏,磁盘错误,复制因子被增大等
  5. 安全模式:NameNode 启动时会先经过一个 “安全模式” 阶段,安全模式阶段不会产生数据写,在此阶段 NameNode 收集各个 DataNode 的报告, 当数据块达到最小副本数以上时,会被认为是"安全"的,在一定比例(可设置) 的数据块被确定为"安全" 后 ,在过若干时间,安全模式结束(30s左右),当检测到副本数不足的数据块时,该块会被复制,直到达到最小副本数。
  6. 效验和:在文件创立时,每个数据块都产生效验和,效验和会作为单独一个隐藏文件保存在命名空间下,客户端获取数据时可以检查效验和是否相同,从而发现数据块是否损坏,如果正在读取的数据块损坏,则可以继续读取其他副本。
  7. 回收站:删除文件时,其实是放入回收站 /trash,回收站里的文件是可以快速恢复的,可以设置一个时间值,当回收站里文件的存放时间超过了这个值,就被彻底删除,并且释放占用的数据块。
  8. 元数据保护:映像文件和事物日志是 NameNode 的核心数据.可以配置为拥有多个副本,副本会降低 NameNode 的处理速度,但增加安全性。