V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
dhairoot
V2EX  ›  Hadoop

大量 zip 压缩包,每一个都很小, 10M 以内,如何利用 MapReduce 实现快速解压呢?

  •  1
     
  •   dhairoot · Nov 15, 2018 · 6087 views
    This topic created in 2734 days ago, the information mentioned may be changed or developed.

    大量 zip 压缩包,每一个都很小,10M 以内,如何利用 MapReduce 实现快速解压呢?

    22 replies    2018-11-15 16:07:09 +08:00
    ym1ng
        1
    ym1ng  
       Nov 15, 2018
    自己写 InputFormat (别问我怎么写有没有资料啥的,逃~
    dhairoot
        2
    dhairoot  
    OP
       Nov 15, 2018
    @ym1ng 自己实现了解压工作,但是现在的问题是速度异常慢
    dhairoot
        3
    dhairoot  
    OP
       Nov 15, 2018
    @ym1ng 我是参考这个博主写的代码实现解压的,http://cutler.io/2012/07/hadoop-processing-zip-files-in-mapreduce/
    Vamposine
        4
    Vamposine  
       Nov 15, 2018 via iPhone   ❤️ 1
    你这个瓶颈是磁盘 io 吧
    dawncold
        5
    dawncold  
       Nov 15, 2018
    如果你只是想解压这些 zip 文件的话,多开几个进程或者线程,和 CPU 个数差不多,一个个解压就挺快吧?当然如果有很多资源可用,确实可以搞分布式解压,就行 mapreduce 一样?
    dhairoot
        6
    dhairoot  
    OP
       Nov 15, 2018
    @Vamposine 但是目前解压速度远远没到磁盘 io 的瓶颈
    Valyrian
        7
    Valyrian  
       Nov 15, 2018
    多开几个进程同时解
    为什么要扯到 mapreduce 上去
    Ediacaran
        8
    Ediacaran  
       Nov 15, 2018
    线程池足够了把
    dhairoot
        9
    dhairoot  
    OP
       Nov 15, 2018
    @dawncold 现在的情况是总共有 16T 文件,通过手动的把文件分开放在不同电脑上,开多线程去解压就已经非常耗时了,所以才想通过上传到 hdfs,利用 MapReduce 解压,。但是目前发现解压速度太慢了,完全不知道因为什么。
    dawncold
        10
    dawncold  
       Nov 15, 2018
    @dhairoot 这个不好说呢,分布式解压也得看你有多少资源可以被用起来,是有闲置的资源吗,还是解压速度已经够好了只是达不到心理预期?
    AnyISalIn
        11
    AnyISalIn  
       Nov 15, 2018
    MapReduce 肯定没有本地多线程解压快的
    hearfish
        12
    hearfish  
       Nov 15, 2018
    不同压缩格式的解压速度是不一样的,先看看你的压缩格式能支持多快的速度吧
    meisky6666
        13
    meisky6666  
       Nov 15, 2018
    应该用 c 语言来写
    surfire91
        14
    surfire91  
       Nov 15, 2018
    这个没必要 MapReduce 吧,你这个全是小任务,就多进程 /线程来好了,效率肯定比 MapReduce 高。
    cyhulk
        15
    cyhulk  
       Nov 15, 2018
    forkjoinpool
    est
        16
    est  
       Nov 15, 2018
    你是说 hdfs 上有大量 zip 文件,还是说你本地硬盘上有很多小 zip 文件想用 mapreduce 加速?


    如果是后者。。。
    dhairoot
        17
    dhairoot  
    OP
       Nov 15, 2018 via Android
    @est hdfs 上和本地上的文件是一样的
    dhairoot
        18
    dhairoot  
    OP
       Nov 15, 2018 via Android
    @dawncold 我现在测试在本地多线程解压,但是因为都是小文件,每秒 io 次数很多,但是读写速度只能达到 10mb/s
    mmtromsb456
        19
    mmtromsb456  
       Nov 15, 2018   ❤️ 1
    要考虑磁盘的 IOPS 吧..小文件多线程并发解压应该算个低队列深度 IO.你先确认下 IOPS 到达你的 SSD 瓶颈没有.而不是看读写速度
    20015jjw
        20
    20015jjw  
       Nov 15, 2018 via Android
    为啥要 mapreduce.~
    est
        21
    est  
       Nov 15, 2018
    @dhairoot 完全不一样。hdfs 的 io 成本很高。解压效率应该不是瓶颈。。纯粹是你小文件 open() 的瓶颈。
    atomstar
        22
    atomstar  
       Nov 15, 2018
    处理 zip 里面的数据可以用 mr,但是就解压 zip,为什么要和 mr 扯上关系呢
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   1390 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 71ms · UTC 17:08 · PVG 01:08 · LAX 10:08 · JFK 13:08
    ♥ Do have faith in what you're doing.