-3

在探索 [Nifi、Gobblin 等] 等各种工具时,我观察到 Databricks 现在正在推广使用 Spark 进行数据摄取/载入。

我们有一个在 YARN 上运行的基于 spark[scala] 的应用程序。到目前为止,我们正在开发一个 hadoop 和 spark 集群,我们首先手动将所需的数据文件放在 HDFS 中,然后再运行我们的 spark 作业。现在,当我们计划使我们的应用程序可用于客户端时,我们期望来自任何数据源 [ftp、sftp、任何关系和 nosql 数据库] 的任何类型和数量的文件 [主要是 csv、jason、xml 等] 巨大的大小[范围从 GB 到 PB]。

牢记这一点,我们正在寻找在将数据推送到 HDFS 之前可用于数据载入和数据完整性的选项。

我们根据优先级寻找的选项: 1) Spark 用于数据摄取和健全性:由于我们的应用程序是编写并在 Spark 集群上运行的,我们计划也将其用于数据摄取和健全性任务。我们有点担心 Spark 对许多数据源/文件类型/等的支持。此外,我们不确定如果我们尝试从任何 FTP/SFTP 复制数据,那么所有工作人员都会在 HDFS 上并行写入数据吗?使用时有什么限制吗?在此数据复制期间,Spark 是否维护任何审计跟踪?

2)集群模式下的Nifi:为此目的Nifi有多好?它可以用于任何数据源和任何大小的文件吗?是否会维护审计跟踪?Nifi 我们能处理这么大的文件吗?如果我们尝试复制 GB - PB 的数据并在将数据推送到 HDFS 之前在该数据之上执行一定的健全性,需要多大的集群?

3) 集群模式下的 Gobblin:想听到与 Nifi 类似的答案吗?

4)如果有任何其他好的选择可用于此目的,涉及较少的基础设施/成本和更好的性能?

对于上述工具和技术的任何指导/指针/比较将不胜感激。

最好的问候, 布佩什

4

1 回答 1

0

在做了一定的研发之后,考虑到使用 NIFI 或 goblin 会需要更多的基础设施成本。我已经开始测试 Spark 的数据载入。

到目前为止,我已经尝试使用 Spark 作业将数据 [存在于远程暂存区域/节点] 导入我的 HDFS,我可以通过使用我的所有 spark 集群工作节点安装该远程位置来做到这一点。这样做使该位置对这些工作人员来说是本地的,因此 spark 作业可以正常运行,并且数据已载入我的 HDFS。

由于我的整个项目都将在 Spark 上进行,因此将数据载入部分保留在 Spark 上对我来说不会花费任何额外费用。到目前为止,我进展顺利。因此,我也会向其他人建议,如果您已经启动并运行了 spark 集群和 hadoop 集群,那么不要增加额外的成本[成本可能是主要限制],而是选择 spark 工作来载入数据。

于 2017-06-29T09:22:30.653 回答