hadoop 的 lease 机制

2019-12-24 12:14:02 +08:00
 deepall
我使用 scrapy-redis 开发了一个分布式爬虫,并分别部署在 4 个 docker 中,抓取程序中的 pipeline 负责连接 hadoop 并将数据追加到 hadoop 中,但因为是分布式的存在,必定会造成同一时刻有多个 client 操作同一个 file,就违反了 hadoop 的 lease 机制,从而造成数据入库失败,大家有什么办法解决吗
2688 次点击
所在节点    Python
6 条回复
vveexx
2019-12-24 12:57:15 +08:00
和楼主的场景类似,我们走了 kafka,多生产者,单个消费者
hdbzsgm
2019-12-24 12:59:38 +08:00
简单场景 随便用个单点 redis 做锁喽
deepall
2019-12-24 13:21:05 +08:00
@vveexx @hdbzsgm 谢了两位,我还担心我说的无法理解,多个生产者,单个消费者,精辟
liprais
2019-12-24 13:22:24 +08:00
没这么复杂,每个爬虫自己写自己的文件最后合起来处理就行了
deepall
2019-12-24 13:26:52 +08:00
@liprais 你是这个意思吗,爬虫来一条数据,写入文件,最后在某个固定时间点 upload 到 hadoop 上
Leiothrix
2019-12-24 14:33:35 +08:00
用 redis 实现一个简单的分布式进程锁可解,用 lua 脚本保证操作原子性

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/631810

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX