Python处理hadoop中海量小文件的思路总结

1、如果不考虑性能问题,该问题解决起来很简单。

2、如果文件数量很多,且分布在不同的文件夹,用生成器扫描文件夹以及子文件夹中所有的文件,使得遍历获取文件不成为瓶颈。

3、虽然需求设定的时候,小文件都是大概11k左右,但是考虑程序的代码可扩展性,我假设这些小文件中可能存在某个大文件,为了避免该大文件造成阻塞,我设计成将每个文件传给一个独立进程处理,处理大文件进程一直被占用,但是处理小文件的进程处理完该小文件后,可以继续处理其他小文件。

4、如果有200个进程,其中有一个进程处理大文件被阻塞,而其他所有小文件都已经被处理了,导致整体任务完成实际被延迟,而且199个进程一直处于空闲状态,计算资源没有得到很好的利用。

5、分两步走,第一步所有进程仅仅将文件按规定大小拆分,然后放在队列中。

6、所有的进程参与队列中的内容处理。

7、文件句柄不可以序列化,因此不能在进程间传递,将文件路径在进程间传递。

8、开启进程池

9、进程池中的进程优先处理文件拆分,放入队列中这个动作。

10、处理完毕后,所有进程资源处理队列中的任务。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值