在探索各种工具(如[nifi、gobblin等]时,我发现databricks现在正在推广使用spark进行数据接收/加载。
我们有一个基于spark[scala]的应用程序运行在yarn上。到目前为止,我们正在开发一个hadoop和spark集群,在这个集群中,我们首先在hdfs中手动放置所需的数据文件,然后再运行spark作业。现在,当我们计划将我们的应用程序提供给客户机时,我们期望任何类型和数量的文件[主要是csv、jason、xml等]都可以从任何数据源[ftp、sftp、任何关系数据库和nosql数据库]获得,这些数据源的大小从gb到pb不等。
记住这一点,我们正在寻找在将数据推入hdfs之前可以用于数据加载和数据健全的选项。
我们正在寻找基于优先级的选项:1)spark用于数据摄取和健全:由于我们的应用程序是在spark cluster上编写和运行的,所以我们也计划将其用于数据摄取和健全任务。我们有点担心spark对许多数据源/文件类型等的支持。此外,我们不确定如果我们尝试从任何ftp/sftp复制数据,那么所有工作人员是否会并行地在hdfs上写入数据?使用时有什么限制吗?spark在复制此数据时是否保留了任何审计跟踪?
2) 集群模式下的nifi:nifi在这方面有多好?它可以用于任何数据源和任何大小的文件吗?是否会保留审计线索?我们能处理这么大的文件吗?如果我们试图复制gb-pb的数据,并在将数据推送到hdfs之前对该数据执行某些处理,那么需要多大的集群?
3) 集群模式下的gobblin:希望听到与nifi类似的答案吗?
4) 如果有任何其他好的选择可用于此目的,涉及较少的基础设施/成本和更好的性能?
如对上述工具和技术有任何指导/指导/比较,将不胜感激。
祝你好运,布比什
1条答案
按热度按时间yhxst69z1#
在做了一定的研发之后,考虑到使用nifi或goblin将需要更多的基础设施成本。我已经开始测试spark的登机数据。
到目前为止,我已经尝试使用spark job将数据[存在于远程暂存区域/节点]导入到hdfs中,并且我能够通过将该远程位置与所有spark集群工作节点挂载在一起来实现这一点。这样做使得那个位置对于那些工人来说是本地的,因此spark作业可以正常运行,并且数据也被载入到我的hdfs中。
因为我的整个项目将在spark上进行,所以在spark上保留登机部分的数据不会对我产生任何额外的成本。到目前为止,我进展顺利。因此,我也建议其他人,如果您已经启动并运行了spark cluster和hadoop cluster,那么与其增加额外的成本(成本可能是一个主要的限制),不如使用spark job来获取数据。