Hadoop 文档

General

Common

HDFS

MapReduce

MapReduce REST APIs

YARN

YARN REST APIs

YARN Service

Submarine

Hadoop Compatible File Systems

Auth

Tools

Reference

Configuration

总览

脱机图像查看器是一种工具,可将hdfs fsimage文件的内容转储为人类可读的格式,并提供只读WebHDFS API,以允许脱机分析和检查Hadoop群集的名称空间。该工具能够相对快速地处理非常大的图像文件。该工具处理Hadoop 2.4及更高版本随附的布局格式。如果要处理较旧的布局格式,则可以使用Hadoop 2.3的Offline Image Viewer或oiv_legacy Command。如果该工具无法处理图像文件,它将干净地退出。Offline Image Viewer不需要运行Hadoop集群;它的操作完全脱机。

脱机图像查看器提供了几个输出处理器:

  1. Web是默认的输出处理器。它启动一个HTTP服务器,该服务器公开只读的WebHDFS API。用户可以使用HTTP REST API以交互方式调查名称空间。它不支持安全模式,也不支持HTTPS。

  2. XML创建fsimage的XML文档,并在fsimage中包含所有信息。该处理器的输出适合使用XML工具进行自动处理和分析。由于XML语法的冗长性,该处理器还将生成最大量的输出。

  3. FileDistribution是用于分析名称空间映像中文件大小的工具。为了运行该工具,应通过指定maxSize和一个步骤来定义整数范围[0,maxSize]。整数范围分为大小为段的段:[0,s [1],…,s [n-1],maxSize],处理器计算系统中每个段中有多少文件[s [i] -1],s [i])。请注意,大于maxSize的文件始终属于最后一段。默认情况下,输出文件的格式设置为制表符,分隔两列表:Size和NumFiles。其中,“大小”表示该段的开始,而“ numFiles”是该大小属于该段的图像文件数量。通过指定选项-format,将以易于理解的方式格式化输出文件,而不是“大小”列中显示的字节数。此外,

  4. 带分隔符(实验):生成一个文本文件,其中包含inode和inode-under-construction共同的所有元素,并由定界符分隔。缺省分隔符为\ t,尽管可以通过-delimiter参数更改。

  5. ReverseXML(实验性):这与XML处理器相反。它从XML文件重建fsimage。使用此处理器,可以轻松创建fsimage进行测试,并在损坏时手动编辑fsimage。

用法

网络处理器

Web处理器启动HTTP服务器,该服务器公开只读的WebHDFS API。用户可以通过-addr选项指定要监听的地址(默认为localhost:5978)。

   bash $ bin / hdfs oiv -i fsimage
   2007年4月14日13:25:14信息offlineImageViewer.WebImageViewer:WebImageViewer
   开始。收听/127.0.0.1:5978。按Ctrl + C停止查看器。

用户可以通过以下shell命令访问查看器并获取fsimage的信息:

   bash $ bin / hdfs dfs -ls webhdfs://127.0.0.1:5978 /
   找到2项
   drwxrwx-*-根超级组0 2014-03-26 20:16 webhdfs://127.0.0.1:5978 / tmp
   drwxr-xr-x-根超级组0 2014-03-31 14:08 webhdfs://127.0.0.1:5978 / user

要获取所有文件和目录的信息,只需使用以下命令:

   bash $ bin / hdfs dfs -ls -R webhdfs://127.0.0.1:5978 /

用户还可以通过HTTP REST API获得JSON格式的FileStatuses。

   bash $ curl -i http://127.0.0.1:5978/webhdfs/v1/?op=liststatus
   HTTP / 1.1 200 OK
   内容类型:application / json
   内容长度:252

   {“ FileStatuses”:{“ FileStatus”:[
   {“ fileId”:16386,“ accessTime”:0,“ replication”:0,“ owner”:“ theuser”,“ length”:0,“ permission”:“ 755”,“ blockSize”:0,“ modificationTime” :1392772497282,“类型”:“目录”,“组”:“超组”,“ childrenNum”:1,“ pathSuffix”:“用户”}
   ]}}

Web处理器现在支持以下操作:

XML处理器

XML处理器用于转储fsimage中的所有内容。用户可以通过-i和-o命令行指定输入和输出文件。

   bash $ bin / hdfs oiv -p XML -i fsimage -o fsimage.xml

这将创建一个名为fsimage.xml的文件,其中包含fsimage中的所有信息。对于非常大的图像文件,此过程可能需要几分钟。

将脱机图像查看器与XML处理器一起应用将产生以下输出:

   <?xml version =“ 1.0”?>
   <fsimage>
   <名称部分>
     <genstampV1> 1000 </ genstampV1>
     <genstampV2> 1002 </ genstampV2>
     <genstampV1Limit> 0 </ genstampV1Limit>
     <lastAllocatedBlockId> 1073741826 </ lastAllocatedBlockId>
     <txid> 37 </ txid>
   </ NameSection>
   <INodeSection>
     <lastInodeId> 16400 </ lastInodeId>
     <inode>
       <id> 16385 </ id>
       <type>目录</ type>
       <name> </ name>
       <mtime> 1392772497282 </ mtime>
       <permission>用户:supergroup:rwxr-xr-x </ permission>
       <nsquota> 9223372036854775807 </ nsquota>
       <dsquota> -1 </ dsquota>
     </ inode>
   ...剩余的输出被省略...

ReverseXML处理器

ReverseXML处理器与XML处理器相反。用户可以通过-i和-o命令行指定输入XML文件和输出fsimage文件。

   bash $ bin / hdfs oiv -p ReverseXML -i fsimage.xml -o fsimage

这将从XML文件重建fsimage。

文件分发处理器

FileDistribution处理器可以分析名称空间映像中的文件大小。用户可以通过-maxSize和-step命令行以字节为单位指定maxSize(默认情况下为128GB)和step(默认情况下为2MB)。

   bash $ bin / hdfs oiv -p FileDistribution -maxSize maxSize -step size -i fsimage -o输出

处理器将计算出系统中每个段中有多少个文件。输出文件的格式为制表符分隔的两列表,显示为以下输出:

   大小NumFiles
   4 1
   12 1
   16 1
   20 1
   totalFiles = 4
   totalDirectories = 2
   totalBlocks = 4
   totalSpace = 48
   maxFileSize = 21

为了使输出结果更具可读性,用户可以另外指定-format选项。

   bash $ bin / hdfs oiv -p FileDistribution -maxSize maxSize -step size -format -i fsimage -o输出

这将导致以下输出:

   大小范围NumFiles
   (0 B,4 B] 1
   (8 B,12 B] 1
   (12 B,16 B] 1
   (16 B,21 B] 1
   totalFiles = 4
   totalDirectories = 2
   totalBlocks = 4
   totalSpace = 48
   maxFileSize = 21

定界处理器

定界处理器生成fsimage的文本表示形式,每个元素都由定界符字符串分隔(默认情况下为\ t)。用户可以通过-delimiter选项指定新的分隔符字符串。

   bash $ bin / hdfs oiv -p分隔-定界符delimiterString -i fsimage -o输出

此外,用户可以通过以下命令指定一个临时目录来缓存中间结果:

   bash $ bin / hdfs oiv -p分隔的-定界符delimiterString -t临时目录-i fsimage -o输出

如果未设置,则定界处理器将在输出文本之前在内存中构造名称空间。该处理器的输出结果应类似于以下输出:

   路径复制修改时间AccessTime PreferredBlockSize BlocksCount FileSize NSQUOTA DSQUOTA权限UserName GroupName
   / 0 2017-02-13 10:39 1970-01-01 08:00 0 0 0 9223372036854775807 -1 drwxr-xr-x根超组
   / dir0 0 2017-02-13 10:39 1970-01-01 08:00 0 0 0 -1 -1 drwxr-xr-x根超组
   / dir0 / file0 1 2017-02-13 10:39 2017-02-13 10:39 134217728 1 1 0 0 -rw-r--r--根超级组
   / dir0 / file1 1 2017-02-13 10:39 2017-02-13 10:39 134217728 1 1 0 0 -rw-r--r--根超级组
   / dir0 / file2 1 2017-02-13 10:39 2017-02-13 10:39 134217728 1 1 0 0 -rw-r--r--根超级组

选件

描述
-i | --inputFile 输入文件 指定输入的fsimage文件(如果使用ReverseXML处理器,则为XML文件)进行处理。需要。
-o | --outputFile 输出文件 如果指定的输出处理器生成一个文件名,则指定输出文件名。如果指定的文件已经存在,它将被静默覆盖。(默认情况下输出到stdout)如果输入文件是XML文件,它还将创建一个<outputFile> .md5。
-p | - 处理器处理器 指定要应用于图像文件的图像处理器。当前有效的选项是Web(默认),XMLDelimitedFileDistributionReverseXML
-addr 地址 指定要监听的地址(主机:端口)。(预设为localhost:5978)。该选项与Web处理器一起使用。
-maxSize 大小 指定要分析的文件大小的范围[0,maxSize](以字节为单位)(默认为128GB)。此选项与FileDistribution处理器一起使用。
指定分布的粒度(以字节为单位)(默认为2MB)。此选项与FileDistribution处理器一起使用。
-格式 以易于阅读的方式而不是多个字节来格式化输出结果。(默认情况下为false)。此选项与FileDistribution处理器一起使用。
-定界符 arg 与定界处理器一起使用的定界字符串。
-t | --temp 临时目录 使用临时目录缓存中间结果以生成定界输出。如果未设置,则定界处理器在输出文本之前在内存中构造名称空间。
-h | - 帮帮我 显示工具用法和帮助信息,然后退出。

分析结果

脱机图像查看器使收集有关hdfs名称空间的大量数据变得容易。然后,此信息可用于探索文件系统使用模式或查找与任意条件匹配的特定文件,以及其他类型的名称空间分析。

oiv_legacy命令

由于基于ProtocolBuffer的fsimage(HDFS-5698)引入了内部布局更改,因此OfflineImageViewer消耗了过多的内存,并失去了某些功能,例如缩进处理器。如果要在没有大量内存的情况下进行处理或使用这些处理器,则可以使用oiv_legacy命令(与Hadoop 2.3中的oiv相同)。

用法

  1. dfs.namenode.legacy-oiv-image.dir设置为适当的目录,以使备用NameNode或SecondaryNameNode在检查点期间以旧的fsimage格式保存其名称空间。

  2. 使用oiv_legacy命令将旧格式设置为fsimage。

    bash $ bin / hdfs oiv_legacy -i fsimage_old -o输出
    

选件

描述
-i | --inputFile 输入文件 指定要处理的输入fsimage文件。需要。
-o | --outputFile 输出文件 如果指定的输出处理器生成一个文件名,则指定输出文件名。如果指定的文件已经存在,它将被静默覆盖。需要。
-p | - 处理器处理器 指定要应用于图像文件的图像处理器。有效选项包括Ls(默认值),XML,Delimited,Indented,FileDistribution和NameDistribution。
-maxSize 大小 指定要分析的文件大小的范围[0,maxSize](以字节为单位)(默认为128GB)。此选项与FileDistribution处理器一起使用。
指定分布的粒度(以字节为单位)(默认为2MB)。此选项与FileDistribution处理器一起使用。
-格式 以易于阅读的方式而不是多个字节来格式化输出结果。(默认情况下为false)。此选项与FileDistribution处理器一起使用。
-跳过块 不要枚举文件中的单个块。这样可以节省处理时间并在文件很大的名称空间上节省文件空间。Ls处理器读取这些块以正确确定文件大小,并忽略此选项。
-printToScreen 将处理器的输出通过管道传输到控制台以及指定的文件。在极大的名称空间上,这可能会使处理时间增加一个数量级。
-定界符 arg 与Delimited处理器结合使用时,将默认制表符分隔符替换为arg指定的字符串。
-h | - 帮帮我 显示工具用法和帮助信息,然后退出。