Hadoop 权威指南学习笔记(九)

                                               管理 Hadoop

dfs.name.dir 属性描述了一组目录,VERSION文件包含:
namespaceID=134368441
cTime=0
storageType=NAME_NODE
layoutVersion=-18

 

属性 namespaceID 是文件系统的唯一标识符,是在文件系统首次格式化时设置的。cTime 属性标记了 namenode 存储系统的创建时间,
属性 layoutVer sion 是一个负整数,描述 HDFS 永久性数据结构(也称布局)的版本,但是这个版本号与 Hadoop 发布包的版本号无关。只要布局变更,版本号便会递减(例如,版本号 -18 之后是 -19) HDFS 也需要升级。
 
文件系统客户端执行写操作时(例如创建或移动文件) ,这些操作首先被记录到编辑日志中。 namenode 在内存中维护文件系统的元数据,当编辑日志被修改时,相关元数据信息也同步更新。内存中的元数据可支持客户端的读请求。
fsimage 文件是文件系统元数据的一个永久性检查点。并非每一个写操作都会更新这个文件,因为 fsimage 是一个大型文件(甚至可高达几个G,如果频繁地执行写操作,会使系统运行极为缓慢。但这个特性根本不会降低系统的恢复能力,因为如namenode 发生故障,可以先把 fsimage 文件载入到内存重构新近的元数据,再执行编辑日志中记录的各项操作。

 

文件系统映像和编辑日志

          文件系统客户端执行写操作时(例如创建或移动文件) ,这些操作首先被记录到编辑日志中。 namenode 在内存中维护文件系统的元数据,当编辑日志被修改时,相关
元数据信息也同步更新。在每次执行写操作之后,且在向客户端发送成功代码之前,编辑日志都需要更新和同步。
fsimage 文件是文件系统元数据的一个永久性检查点 并非每一个写操作都会更新这个文件,因为 fsimage 是一个大型文件(甚至可高达几个G,如果频繁地执行写操作,会使系统运行极为缓慢。但这个特性根本不会降低系统的恢复能力, 因为如果namenode 发生故障,可以先把 fsimage 文件载入到内存重构新近的元数据,再执行编辑日志中记录的各项操作。事实上, namenode 在启动阶段正是这样做的。
随着时间增长,edits(编辑日志)会越来越大,namenode重启会比较耗时,解决方案如下: 运行辅助 namenode ,为主 namenode 内存中的文件系统元数据创建检查点。
 
1. 辅助 namenode 请求主 namenode 停止使用 edits 文件,暂时将新的写操作记录到一个新文件中。
2. 辅助 namenode 从主 namenode 获取 fsimage , edits 文件(采用 HTTP GET)
3. 辅助 namenode fsimage 文件载入内存,逐一执行 edits 文件中的操作,创建新的 fsimage 文件。
4. 辅助 namenode 将新的 fs image 文件发送回主 namenode( 使用 HTTP POST)
5. namenode 用从辅助 namenode 接收的 fsimage 文件替换旧的 fsimage 文件,用步骤1 所产生的 edits 文件替换旧的 edits 文件。同时,还更新 fstime 文件来记录检查点执行的时间。
 
创建检查点的触发条件受两个配置参数控制。通常情况下,辅助 namenode 每隔一小时(由 fs.checkpoint.period 属性设置,以秒为单位)创建检查点;此外,当编辑日志的大小达到 64 MB( fs.checkpoint.size 属性设置,以字节为单位) 时,也会创建检查点。系统每隔五分钟检查一次编辑日志的大小。
namespaceID datanode 首次访问 namenode 的时候从 namenode  处获取的。各个 datanode storageID 都不相同(但对于存储目录来说是相同的), namenode 可用这个属性来识别 datanode storageType 表明这个目录是 datanode 的存储目录。
 
如果 dfs data dir 属性指定了不同磁盘上的多个目录,那么数据块会以"轮转  (round-robin) 的方式写到各个目录中。 同一个 datanode 上的每个磁盘的块不会重复,不同 datanode 之间的块才可能重复。
当目录中数据块的数量增加到一 定规模时, datanode 会创建1 个子目录来存放新的数据块及其元数据信息。当前目录已经存储 64 个(通过 dfs.datanode numblocks 属性设置)数据块肘,就创建一个子目录。 终极目标是 设计1 高扇出的树,即使文件系统中的块非常多,也只需要访问少数几个目录级别就可获取数据。
 

安全模式

     系统中数据块的位置并不是由 namenode 维护的,而是以块列表的形式存储在 datanode 中。在系统的正常操作期间. namenode 内存中保留所有块位置的映射信息,
   但如果 namenode 没有检查到足够多的 datanode ,则需要将块复制到其他 datanode ,而在大多数情况这都是不必要的。

      在安全模式 ,各个 datanode 会向 namenode 检查块列表信息 (即向 namenode 发送块列表的最新情况)。namenode 了解到足够多的块位置信息之 后,即可高效运行文件系统。但如果 namenode 没有检查到足够多的 datanode ,则需要将块复制到其他 datanode。如果满足"最小复本条件" (minimal replication condition) , namenode 会在 30秒钟之后就退出安全模式。所谓的最小复本条件指的是在整个文件系统中有 99.9% 的块满足最小复本级别。

工具

1. dfsadmin工具:朝招HDFS状态信息,在HDFS上执行管理操作
2. fsck工具:fsck检查HDFS文件中的健康状况,可以对文件块进行管理(复制,删除,移动,修复)
3.datanode块扫描器,各个 datanode 运行一个块扫描器,定期检测本节点上的所有块,从而在客户端读到坏块之前及时地检测和修复坏块,默认情况下,块扫描器每隔三周(即 504 小时)就会检测块,以应对可能的磁盘故障。
4.均衡器: 均衡器 (balancer) 程序是 Hadoop 守护进程,它将块从忙碌的 datanode 移到相对 空闲的 datanode , 它不断移动块,直 到集群达到均衡,即每个 datanode 的使用率(该节点上已使用的空间与空间容量之 间的比率)和集群的使用率(集群中已使用的空间与集群的空间容量之间的比率)非 常接近,差距不超过给定的阀值。
% start-ba l ance r .sh 进行启动 。 -threshold 参数指定阈值(节点使用率和集群使用率之间的差距)(百分比格式),以判定集群是否均衡。这个标记是可选 的,若不使用,默认阑值是 10% 。在任何时刻,集群中都只运行一个均衡器。为了降低集群负荷、避免干扰其他用户,均衡器被设计为在后台运行。在不同节点之间复制数据的带宽也是受限的。默认值是很小的 MB/s ,可以通过 hdfs-s ite.xml文件中的 dfs.balance.bandwidthPerSec 属性指定(单位是字节)。
 

监控

1.日志:设置日志级别、获取堆栈跟踪

2. 度量:HDFS MapReduce 守护进程收集的事件和度量相关的信息,这些信息统称为 "度量" (metric)

3. JAVA的管理扩展

维护

1. 日常管理

元数据维护,方法一是直接保存这些元数据文件的副本 方法二是整合到 namenode 上正在使用的文件中。最直接的元数据备份方提是利用脚本文件定期将辅助 namenode

previous. checkpoint 子目录打包,再放到其他站点。
 
数据备份:Hadoop 中存储着海量数据,判断哪些数据需要备份以及在哪里备份就极具挑战性。 关键点在于为数据划分不同优先级。最高优先级是指那些无陆重新产生的数据,这些数据对业务非常关键。同理,能够重新产生的数据和一次性数据商业价值有限,所以优先级最低,无需备份。 distcp 是一个理想的备份工具
 
委任新节点:
 
 
解除旧节点:
         用户将拟退出的若干 datanode 告知 namenode ,方可在这些 datanode 停机之前将块复制到其他 datanode,
若要解除一个节点,则 主节点需要出现在 ex cl ude 文件。对于 HDFS 来说,文件名称由 dfs.hosts.exclude 属性控制 对于 MapReduce 来说,文件名称由 mapred.hosts.exclude 属性控制

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值