大量 zip 压缩包,每一个都很小, 10M 以内,如何利用 MapReduce 实现快速解压呢? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
dhairoot
V2EX    Hadoop

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

  •  1
     
  •   dhairoot 2018-11-15 09:32:11 +08:00 5858 次点击
    这是一个创建于 2589 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

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


    如果是后者。。。
    dhairoot
        17
    dhairoot  
    OP
       2018-11-15 15:01:32 +08:00 via Android
    @est hdfs 上和本地上的文件是一样的
    dhairoot
        18
    dhairoot  
    OP
       2018-11-15 15:03:02 +08:00 via Android
    @dawncold 我现在测试在本地多线程解压,但是因为都是小文件,每秒 io 次数很多,但是读写速度只能达到 10mb/s
    mmtromsb456
        19
    mmtromsb456  
       2018-11-15 16:01:36 +08:00   1
    要考虑磁盘的 IOPS 吧..小文件多线程并发解压应该算个低队列深度 IO.你先确认下 IOPS 到达你的 SSD 瓶颈没有.而不是看读写速度
    20015jjw
        20
    20015jjw  
       2018-11-15 16:02:15 +08:00 via Android
    为啥要 mapreduce.~
    est
        21
    est  
       2018-11-15 16:07:09 +08:00
    @dhairoot 完全不一样。hdfs 的 io 成本很高。解压效率应该不是瓶颈。。纯粹是你小文件 open() 的瓶颈。
    atomstar
        22
    atomstar  
       2018-11-15 16:07:09 +08:00
    处理 zip 里面的数据可以用 mr,但是就解压 zip,为什么要和 mr 扯上关系呢
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2852 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 28ms UTC 14:30 PVG 22:30 LAX 06:30 JFK 09:30
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86