ruby—长时间运行的etl进程—后台作业、spark、hadoop

watbbzwu  于 2021-05-29  发布在  Hadoop
关注(0)|答案(1)|浏览(695)

我在应用程序中有一个场景:;
必须从多个源加载数据(超过10个)
主要的来源是http/jsonweb服务和一些ftp
必须处理这些数据并将其放入中央数据库(postgresql)
当前的实现是在ruby中使用后台作业完成的。但我看到了以下问题;
非常高的内存使用率
作业有时会卡住而没有任何错误报告
水平缩放很难设置
在这种情况下,spark或hadoop可以提供任何帮助或更好的选择。
请详细说明一些好的理由。
更新:根据评论,我需要进一步阐述。下面是我为什么想到spark或hadoop的要点。
如果我们扩展正在运行的作业的并发性,这也会增加db服务器上的繁重负载。不过,我已经读到,spark和hadoop即使在db端也要面对如此沉重的负载。
我们不能运行比cpu物理内核更多的后台进程(正如ruby和sidekiq社区所建议的那样)
ruby中的并发实际上依赖于gil,而gil实际上并不支持真正的并发。因此,每个作业都可以获取单个中心数据源,如果该数据源卡在io调用中,则该数据源将被锁定。
所有这些都被认为是hadoop和spark内置体系结构的一部分。所以我想用线条来研究这些工具。

rsaldnfx

rsaldnfx1#

在我看来,我想尝试一下pentaho数据集成器(pdi)(或talend)。
它们是用来解决像你这样的问题的可视化工具。还有一个免费的版本可以从sourceforge下载(只需解压缩并按下spoon.bat按钮)。
他们可以从ftp和http(以及其他)获取数据,解码json,编写postgres之类的数据库。pdi有一个免费的插件,可以开箱即用地运行ruby代码,因此可以节省启动开发时间。
pdi还有现成的spark和hadoop接口,因此如果您需要更金属的解决方案,您可以在稍后阶段透明地实现hadoop/sparkle服务器。
pdi是为繁重的数据负载而构建的,它让您可以控制并发和远程服务器。

相关问题