在探索[Nifi,Gobblin等]的各种工具时,我发现Databricks正在推广使用Spark进行数据摄取/加入。
我们在YARN上运行了一个基于spark [scala]的应用程序。到目前为止,我们正在开发一个hadoop和spark集群,我们首先在HDFS中手动放置所需的数据文件,然后再运行我们的spark作业。 现在,当我们计划为客户端提供应用程序时,我们期望任何类型和数量的文件[主要是csv,jason,xml等]来自任何数据源[ftp,sftp,任何关系和nosql数据库]的巨大规模[从GB到PB]。
记住这一点,在将数据推送到HDFS之前,我们正在寻找可用于数据加入和数据健全的选项。
我们根据优先级寻找的选项: 1)用于数据摄取和健全的Spark:由于我们的应用程序已编写并在spark集群上运行,因此我们计划将其用于数据提取和健全性任务。 我们有点担心Spark对许多数据源/文件类型/等的支持。此外,我们不确定我们是否尝试从任何FTP / SFTP复制数据然后所有工作人员将并行地在HDFS上写入数据?使用它时有任何限制吗?在此数据副本时,Spark是否维护了任何审计跟踪?
2)群集模式下的Nifi:Nifi有多好用于此目的?它可以用于任何数据源和任何大小的文件吗?将维持审计线索? Nifi我们能处理这么大的文件吗?如果我们尝试复制GB-PB数据并在将数据推送到HDFS之前在数据之上执行某些完整性,那么需要多大的集群?
3)集群模式中的Gobblin:想听到与Nifi类似的答案吗?
4)如果有任何其他良好的选择可用于此目的,涉及较少的基础设施/成本和更好的表现?
对上述工具和技术的任何指导/指示/比较将不胜感激。
最诚挚的问候, 布佩希
答案 0 :(得分:0)
在做了某些R& D并考虑到使用NIFI或地精将需要更多的基础设施成本这一事实。我已经开始测试Spark的数据加载。
到目前为止,我已尝试使用Spark作业将数据[存在于远程临时区域/节点]导入到我的HDFS中,并且我可以通过将所有远程位置安装到我的所有spark集群工作节点来实现。这样做使得该位置成为这些工作人员的本地位置,因此火花作业正常运行并且数据被加载到我的HDFS。
由于我的整个项目将在Spark上进行,因此将数据保存在spark上不会给我带来任何额外费用。到目前为止,我的情况很好。因此,我建议其他人,如果你已经有火花集群和hadoop集群并运行,那么而不是增加额外的成本[成本可能是一个主要的约束]去为数据入职的火花工作。