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