(TOC)
一、HDFS体系组成概述
这是一个分布式文件系统,适用于于一次写入多次读取的场景。包含以下角色:
<代码> NameNode (nn): 存储文件的元数据,如文件名,文件目录结构,文件属性等,以及每个文件的块列表和块所在的DataNode等。以及响应客户端对hdfs的读写操作,如创建目录,上传文件等。还有保存读写日志。 DataNode (dn): 在本地文件系统中存储文件块数据,以及块数据的校验和 SecondaryNameNode (snn): 用来监控HDFS状态的辅助后台程序,每隔一段时间获取HDFS元数据的快照,相当于对NameNode进行备份。代码>
二,HDFS-NameNode
主要职责是管理hdfs的所有节点。
1,响应客户端对hdfs的请求,如增删改查。
2,管理和维护hdfs的元数据信息以及日志(非日志日志)
NameNode会在core-site.xml中指定的hadoop.tmp。dir的目录中创建目录:dfs/名称/O旅嫖颐强纯凑飧瞿柯嫉慕峁埂?/p>
<代码类="语言python "> (root@bigdata121 tmp) #树dfs/的名字 dfs/名称 ├──当前 │├──edits_0000000000000000001 - 0000000000000000002 │├──edits_0000000000000000003 - 0000000000000000004 │├──edits_0000000000000000005 - 0000000000000000006 │├──edits_0000000000000000007 - 0000000000000000008 │├──edits_0000000000000000009 - 0000000000000000009 │├──edits_0000000000000000010 - 0000000000000000011 │├──edits_0000000000000000012 - 0000000000000000013 │├──edits_0000000000000000014 - 0000000000000000015 │├──edits_0000000000000000016 - 0000000000000000017 │├──edits_0000000000000000018 - 0000000000000000019 │├──edits_0000000000000000020 - 0000000000000000021 │├──edits_0000000000000000022 - 0000000000000000024 │├──edits_0000000000000000025 - 0000000000000000026 │├──edits_inprogress_0000000000000000027 │├──fsimage_0000000000000000024 │├──fsimage_0000000000000000024.md5 │├──fsimage_0000000000000000026 │├──fsimage_0000000000000000026.md5 │├──seen_txid │└──版本 └──in_use.lock 代码>
各个文件目录的作用如下:
当前1,
主要存放hdfs的存储的数据的元信息和日志。
(1)编辑文件
是一个二进制文件,主要记录对hdfs的增删改操作的信息,类似于MySQL的二进制日志。其中edits_inprogress_xxxxx表示是最新编辑的日志,是目前正在使用的。
可以使用命令查看编辑文件的内容:
<代码类="语言python ">//格式:hdfs项目我输入文件- o输出文件(xml格式) (root@bigdata121电流)# hdfs项目我edits_inprogress_0000000000000000038 - o/tmp/edits_inprogess.xml (当前root@bigdata121) #猫/tmp/edits_inprogess.xml & lt; ?xml version=" 1.0 " encoding=" utf - 8 " ?比; & lt; EDITS> & lt; EDITS_VERSION> -63 & lt;/EDITS_VERSION> & lt; RECORD> & lt; OPCODE> OP_START_LOG_SEGMENT表示操作的类别,这里是表示日志开始记录 & lt; DATA> & lt; TXID> 38 & lt;/TXID>类似于操作的ID,是唯一的 & lt;/DATA> & lt;/RECORD> & lt;/EDITS> & lt; RECORD> & lt; OPCODE> OP_ADD_BLOCK//像这个就表示上传文件的操作 & lt; DATA> & lt; TXID> 34 & lt;/TXID> & lt; PATH>/jdk-8u144-linux-x64.tar.gz._COPYING_ & lt; BLOCK> & lt; BLOCK_ID> 1073741825 & lt;/BLOCK_ID> & lt; NUM_BYTES> 134217728 & lt;/NUM_BYTES> & lt; GENSTAMP> 1001 & lt;/GENSTAMP> & lt;/BLOCK> & lt; BLOCK> & lt; BLOCK_ID> 1073741826 & lt;/BLOCK_ID> & lt; NUM_BYTES> 0 & lt;/NUM_BYTES> & lt; GENSTAMP> 1002 & lt;/GENSTAMP> & lt;/BLOCK> & lt; RPC_CLIENTID> & lt;/RPC_CLIENTID> & lt; RPC_CALLID> 2 & lt;/RPC_CALLID> & lt;/DATA> & lt;/RECORD> 代码>
(2) fsimage文件
hdfs中的数据的元数据文件。记录hdfs文件系统中各个数据块的信息,但并不是最新的。需要定时将编辑文件合并到这里,才是最新的。可以使用命令查看fsimage文件的内容:
<代码>//格式:hdfs oiv - p输出格式我输入文件- o输出文件 (当前root@bigdata121) # hdfs oiv XML -我fsimage_0000000000000000037 - o - p/tmp/fsimage37.xml (当前root@bigdata121) #猫/tmp/fsimage37.xml & lt; ?xml version=" 1.0 " ?比; & lt; fsimage> & lt; version> & lt; layoutVersion> -63 & lt;/layoutVersion> & lt; onDiskVersion> 1 & lt;/onDiskVersion> & lt; oivRevision> 17 e75c2a11685af3e043aa5e604dc831e5b14674二,hdfs体系架构