hdfs 版本号_HDFS具体内容详解

本文详细介绍了Hadoop分布式文件系统HDFS的结构、工作机制,包括NameNode、Secondary NameNode的角色与操作流程,以及DataNode的作用。内容涵盖了HDFS的元数据管理、文件写入和读取步骤、版本号解析、安全模式操作、多目录配置、优缺点和实际应用。同时,还探讨了如何处理硬件故障和保证数据完整性,以及通过HDFS的API进行文件上传和下载。
摘要由CSDN通过智能技术生成

第三章 分布式文件系统HDFS

3.1 HDFS简介

HDFS(Hadoop Distributed File System)是Hadoop项目的核心子项目,是分布式计算中数据存储管理的基础,是基于流数据模式访问和处理超大文件的需求而开发的,可以运行于廉价的商用服务器上。它所具有的高容错、高可靠性、高可扩展性、高获得性、高吞吐率等特征,为海量数据提供了不怕故障的存储。

3.2 HDFS 结构和工作机制

HDFS集群包括,NameNode和DataNode以及Secondary Namenode。

3.2.1 NameNode和SecondaryNameNode的作用

NameNode负责管理整个文件系统的元数据,以及每一个路径(文件)所对应的数据块信息,主要三个功能,分别是

(1) 管理元数据

(2) 维护目录树

(3) 响应客户请求

Secondary NameNode用来监控HDFS状态的辅助后台程序,每隔一段时间获取HDFS元数据的快照。

3.2.2 NameNode和Secondary NameNode工作机制

1.镜像文件和编辑日志文件

1)第一阶段:namenode启动

(1)第一次启动namenode格式化后,创建fsimage和edits文件。如果不是第一次启动,直接加载编辑日志(edits)和镜像文件(fsimage)到内存

(2)客户端对元数据进行增删改的请求

(3)namenode记录操作日志,更新滚动日志

(4)namenode在内存中对数据进行增删改查

2)第二阶段:Secondary NameNode工作

(1)Secondary NameNode询问namenode是否需要checkpoint。直接带回namenode是否检查结果。

(2)Secondary NameNode请求执行checkpoint。

(3)namenode滚动正在写的edits日志

(4)将滚动前的编辑日志和镜像文件拷贝到Secondary NameNode

(5)Secondary NameNode加载编辑日志和镜像文件到内存,并合并。

(6)生成新的镜像文件fsimage.chkpoint

(7)拷贝fsimage.chkpoint到namenode

(8)namenode将fsimage.chkpoint重新命名成fsimage

3)chkpoint检查时间参数设置

(1)通常情况下,SecondaryNameNode每隔一小时执行一次。

在hadoop的配置文件下/opt/module/hadoop-2.8.4/etc/confs路径下[hdfs-default.xml]

dfs.namenode.checkpoint.period

3600

(2)一分钟检查一次操作次数,当操作次数达到1百万时,SecondaryNameNode执行一次。

dfs.namenode.checkpoint.txns

1000000

操作动作次数

dfs.namenode.checkpoint.check.period

60

1分钟检查一次操作次数

2.镜像文件和编辑日志文件

1)概念

namenode被格式化之后,将在/opt/module/hadoop-2.8.4/data/dfs/name/current目录中产生如下文件,注只能在NameNode所在的节点才能找到此文件

可以执行find . -name edits* 来查找文件

edits_0000000000000000000

fsimage_0000000000000000000.md5

seen_txid

VERSION

(1)Fsimage文件:HDFS文件系统元数据的一个永久性的检查点,其中包含HDFS文件系统的所有目录和文件idnode的序列化信息。

(2)Edits文件:存放HDFS文件系统的所有更新操作的路径,文件系统客户端执行的所有写操作首先会被记录到edits文件中。

(3)seen_txid文件保存的是一个数字,就是最后一个edits_的数字

(4)每次Namenode启动的时候都会将fsimage文件读入内存,并从00001开始到seen_txid中记录的数字依次执行每个edits里面的更新操作,保证内存中的元数据信息是最新的、同步的,可以看成Namenode启动的时候就将fsimage和edits文件进行了合并。

2)oiv查看fsimage文件

(1)查看oiv和oev命令

[jareny@bigdata111 current]$ hdfs

oiv                  apply the offline fsimage viewer to an fsimage

oev                  apply the offline edits viewer to an edits file

(2)基本语法

hdfs oiv -p 文件类型 -i镜像文件 -o 转换后文件输出路径

(3)案例实操

[jareny@bigdata111 current]$ pwd

/opt/module/hadoop-2.8.4/data/dfs/name/current

[jareny@bigdata111 current]$ hdfs oiv -p XML -i fsimage_0000000000000000316 -o /opt/fsimage.xml

[jareny@bigdata111 current]$ cat /opt/module/hadoop-2.8.4/fsimage.xml

将显示的xml文件内容拷贝到IDEA中创建的xml文件中,并格式化。

3)oev查看edits文件

(1)基本语法

hdfs oev -p 文件类型 -i编辑日志 -o 转换后文件输出路径

-p –processor    指定转换类型: binary (二进制格式), xml (默认,XML格式),stats

-i –inputFile      输入edits文件,如果是xml后缀,表示XML格式,其他表示二进制

-o –outputFile  输出文件,如果存在,则会覆盖

(2)案例实操

[jareny@bigdata111 current]$ hdfs oev -p XML -i edits_0000000000000000135-0000000000000000135 -o /opt/module/hadoop-2.8.4/edits.xml -p stats

[jareny@bigdata111 current]$ cat /opt/module/hadoop-2.8.4/edits.xml

每个RECORD记录了一次操作,比如图中的

OP_ADD代表添加文件操作、OP_MKDIR代表创建目录操作。里面还记录了

文件路径(PATH)

修改时间(MTIME)

添加时间(ATIME)

客户端名称(CLIENT_NAME)

客户端地址(CLIENT_MACHINE)

权限(PERMISSION_STATUS)等非常有用的信息

将显示的xml文件内容拷贝到IDEA中创建的xml文件中,并格式化。

3.滚动编辑日志

正常情况HDFS文件系统有更新操作时,就会滚动编辑日志。也可以用命令强制滚动编辑日志。

1)滚动编辑日志(前提必须启动集群)

[jareny@bigdata111 current]$ hdfs dfsadmin -rollEdits

举例:原文件名edits_inprogress_000000000000

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值