zoukankan      html  css  js  c++  java
  • Hadoop学习之小文件及其处理方式

    小文件定义:

    小文件是远小于hdfs块大小的文件,在hdfs上任何一个文件都有对应的元数据信息

    小文件的坏处:

    1、小文件太多,响应的元数据就会多,占用空间太多且namenode维护起来不方便

    2、小文件太多,启动的MapTask就会过,增加开销

    处理小文件的方式:

    一、Har归档

    HDFS存档文件对内还是一个独立文件,对NameNode而言却是一个整体,减少NameNode的内存

    1、归档:

    hadoop archive -archiveName <归档文件名.har>  -p <源文件路径> <目标地址>

    2、查看归档文件

    hadoop fs -ls -R har://<har文件>

    3、解归档

    hadoop fs -cp har://<要解归档的小文件> <目标路径>

    二、CombineTextInputFormat

    1、将默认的TextInputFormat替换为CombineTextInputFormat类

    2、自定义虚拟存储切片最大值

    三、Sequence File(自定义InputFormat实现类)

    1、Swquence File由一系列的二进制k/v组成,如果key文件名,value为文件内容,则可以将小文件合并成一个大文件

    2、因为设置了不可切片,最终所有文件都封装到了value中

    四、开启JVM重用

    1、一个Map运行在一个JVM上,开启重用的话,该Map在JVM上运行完毕后,JVM会继续运行其他Map

    2、对于大量小文件Job,可以开启JVM重用会减少45%运行时间

    3、mapreduce.job.jvm.numtasks的值在10-20之间。

  • 相关阅读:
    (C#基础) byte[] 之初始化, 赋值,转换。
    System.IO.IOException: The handle is invalid.
    .NET 自动内存管理(垃圾收集GC)
    Inconsistent accessibility
    有用的网址
    dw添加emmet
    行内标签,怎么取消两个标签中间的距离
    2016.6.2近日学习计划
    HTML5 input placeholder 颜色修改示例
    加入收藏和设为首页
  • 原文地址:https://www.cnblogs.com/atBruce/p/12387583.html
Copyright © 2011-2022 走看看