我使用 scrapy-redis 开发了一个分布式爬虫,并分别部署在 4 个 docker 中,抓取程序中的 pipeline 负责连接 hadoop 并将数据追加到 hadoop 中,但因为是分布式的存在,必定会造成同一时刻有多个 client 操作同一个 file,就违反了 hadoop 的 lease 机制,从而造成数据入库失败,大家有什么办法解决吗

1 vveexx Dec 24, 2019 和楼主的场景类似,我们走了 kafka,多生产者,单个消费者 |
2 hdbzsgm Dec 24, 2019 简单场景 随便用个单点 redis 做锁喽 |
4 F281M6Dh8DXpD1g2 Dec 24, 2019 没这么复杂,每个爬虫自己写自己的文件最后合起来处理就行了 |
6 Leiothrix Dec 24, 2019 用 redis 实现一个简单的分布式进程锁可解,用 lua 脚本保证操作原子性 |