设为首页 收藏本站
查看: 920|回复: 0

[经验分享] Hadoop之HDFS的edits和fsimage查看器

[复制链接]

尚未签到

发表于 2018-10-29 11:36:00 | 显示全部楼层 |阅读模式
  在hadoop中edits和fsimage是两个至关重要的文件,其中edits负责保存自最新检查点后命名空间的变化,起着日志的作用,而fsimage则保存了最新的检查点信息。这个两个文件中的内容使用普通文本编辑器是无法直接查看的,幸运的是hadoop为此准备了专门的工具用于查看文件的内容,这些工具分别为oev和oiv,可以使用hdfs调用执行。
  1、OEV
  oev是offline edits viewer(离线edits查看器)的缩写,该工具只操作文件因而并不需要hadoop集群处于运行状态。该工具提供了几个输出处理器,用于将输入文件转换为相关格式的输出文件,可以使用参数-p指定。目前支持的输出格式有binary(hadoop使用的二进制格式)、xml(在不使用参数p时的默认输出格式)和stats(输出edits文件的统计信息)。该工具支持的输入格式为binary和xml,其中的xml文件为该工具使用xml处理器的输出文件。由于没有与stats格式对应的输入文件,所以一旦输出为stats格式将不可以再转换为原有格式。比如输入格式为bianry,输出格式为xml,可以通过将输入文件指定为原来的输出文件,将输出文件指定为原来的输入文件实现binary和xml的转换,而stats则不可以。该工具的具体使用语法为:
Usage: bin/hdfs oev [OPTIONS] -i INPUT_FILE -o OUTPUT_FILE  
Parse a Hadoop edits log file INPUT_FILE and save results
  
in OUTPUT_FILE.
  
Required command line arguments:
  
-i,--inputFile    edits file to process, xml (case insensitive) extension means XML format, any other filename means binary format
  
-o,--outputFile   Name of output file. If the specified file exists, it will be overwritten, format of the file is determined by -p option
  
Optional command line arguments:
  
-p,--processor    Select which type of processor to apply against image file, currently supported processors are: binary (native binary format that Hadoop uses), xml (default, XML format), stats (prints statistics about edits file)
  
-h,--help            Display usage information and exit
  
-f,--fix-txids         Renumber the transaction IDs in the input,so that there are no gaps or invalid transaction IDs.
  
-r,--recover          When reading binary edit logs, use recovery mode.  This will give you the chance to skip corrupt parts of the edit log.
  
-v,--verbose         More verbose output, prints the input and output filenames, for processors that write to a file, also output to screen. On large image files this will dramatically increase processing time (default is false).
  该工具使用的示例及输出文件的部分文件内容如下:
$ hdfs oev -i edits_0000000000000000081-0000000000000000089 -o edits.xml  

  

  
  -56
  
  
  
    OP_DELETE
  
   
  
      88
  
      0
  
      /user/hive/test
  
      1413794973949
  
      a52277d8-a855-41ee-9ca2-a5d0bc7d298a
  
      3
  
   
  
  
  

  在输出文件中,每个RECORD记录了一次操作,在该示例中执行的是删除操作。当edits文件破损进而导致hadoop集群出现问题时,保存edits文件中正确的部分是可能的,可以通过将原有的bianry文件转换为xml文件,并手动编辑xml文件然后转回bianry文件来实现。最常见的edits文件破损情况是丢失关闭记录的部分(OPCODE为-1),关闭记录如下所示。如果在xml文件中没有关闭记录,可以在最后正确的记录后面添加关闭记录,关闭记录后面的记录都将被忽略。
  
    -1
  
   
  
   
  

  2、OIV
  oiv是offline image viewer的缩写,用于将fsimage文件的内容转储到指定文件中以便于阅读,该工具还提供了只读的WebHDFS API以允许离线分析和检查hadoop集群的命名空间。oiv在处理非常大的fsimage文件时是相当快的,如果该工具不能够处理fsimage,它会直接退出。该工具不具备向后兼容性,比如使用hadoop-2.4版本的oiv不能处理hadoop-2.3版本的fsimage,只能使用hadoop-2.3版本的oiv。同oev一样,就像它的名称所提示的(offline),oiv也不需要hadoop集群处于运行状态。oiv具体语法可以通过在命令行输入hdfs oiv查看。
  oiv支持三种输出处理器,分别为Ls、XML和FileDistribution,通过选项-p指定。Ls是默认的处理器,该处理器的输出与lsr命令的输出极其相似,以相同的顺序输出相同的字段,比如目录或文件的标志、权限、副本数量、所有者、组、文件大小、修改日期和全路径等。与lsr不同的是,该处理器的输出包含根路径/,另一个重要的不同是该处理器的输出不是按照目录名称和内容排序的,而是按照在fsimage中的顺序显示。除非命名空间包含较少的信息,否则不太可能直接比较该处理器和lsr命令的输出。Ls使用INode块中的信息计算文件大小并忽略-skipBlocks选项。示例如下:
[hadoop@hadoop current]$ hdfs oiv -i fsimage_0000000000000000115 -o fsimage.ls  
[hadoop@hadoop current]$ cat fsimage.ls
  
drwxr-xr-x  -   hadoop supergroup 1412832662162          0 /
  
drwxr-xr-x  -   hadoop supergroup 1413795010372          0 /user
  
drwxr-xr-x  -   hadoop supergroup 1414032848858          0 /user/hadoop
  
drwxr-xr-x  -   hadoop supergroup 1411626881217          0 /user/hadoop/input
  
drwxr-xr-x  -   hadoop supergroup 1413770138964          0 /user/hadoop/output
  XML处理器输出fsimage的xml文档,包含了fsimage中的所有信息,比如inodeid等。该处理器的输出支持XML工具的自动化处理和分析,由于XML语法格式的冗长,该处理器的输出也最大。示例如下:
[hadoop@hadoop current]$ hdfs oiv -i fsimage_0000000000000000115 -p XML -o fsimage.xml  
[hadoop@hadoop current]$ cat fsimage.xml
  

  

  
   
  
        1000
  
        1004
  
        0
  
        1073741828
  
        115
  
   
  
   
  
        16418
  
        
  
            16385
  
            DIRECTORY
  
            
  
            1412832662162
  
            hadoop:supergroup:rwxr-xr-x
  
            9223372036854775807
  
            -1
  
        
  
        
  
            16386
  
            DIRECTORY
  
            user
  
            1413795010372
  
            hadoop:supergroup:rwxr-xr-x
  
            -1
  
            -1
  
        
  
        
  

  FileDistribution是分析命名空间中文件大小的工具。为了运行该工具需要通过指定最大文件大小和段数定义一个整数范围[0,maxSize],该整数范围根据段数分割为若干段[0, s[1], ..., s[n-1], maxSize],处理器计算有多少文件落入每个段中([s[i-1], s),大于maxSize的文件总是落入最后的段中,即s[n-1], maxSize。输出文件被格式化为由tab分隔的包含Size列和NumFiles列的表,其中Size表示段的起始,NumFiles表示文件大小落入该段的文件数量。在使用FileDistribution处理器时还需要指定该处理器的参数maxSize和step,若未指定默认为0。示例如下:
[hadoop@hadoop current]$ hdfs oiv -i fsimage_0000000000000000115 -o fsimage.fd -p FileDistribution maxSize 1000 step 5  
[hadoop@hadoop current]$ cat fsimage.fd
  
Processed 0 inodes.
  
Size    NumFiles
  
2097152 2
  
totalFiles = 2
  
totalDirectories = 11
  
totalBlocks = 2
  
totalSpace = 4112
  
maxFileSize = 1366



运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-627954-1-1.html 上篇帖子: Hadoop之HDFS回收站 下篇帖子: Hadoop之HDFS的HA与QJM
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表