如何在nfs上读取大量大文件并转储到hdfs

kiayqfof  于 2021-06-07  发布在  Kafka
关注(0)|答案(3)|浏览(388)

我正在使用投资银行领域的一些遗留系统,从某种意义上说,从这些系统中提取数据的唯一方法是通过文件导出/导入,这是非常不友好的。大量交易发生,大量交易存储在这些系统中。问题是如何读取nfs上的大量大文件,并将其转储到一个系统上,在这个系统上,spark或samza之类的东西可以进行分析。
回到问题上来。由于遗留系统的性质,我们正在提取数据并转储到文件中。每个文件都有数百GB的大小。
我觉得下一步是阅读这些,然后转储到Kafka或hdfs,甚至Cassandra或hbase。原因是我需要对这些数据进行一些财务分析。我有两个问题:
如何有效地读取位于一台或多台机器上的大量大文件

tzdcorbm

tzdcorbm1#

最简单的方法是zconnector,这是一种ibm产品,用于从大型机到hadoop集群之间的数据摄取。

uinbv5nw

uinbv5nw2#

我设法找到了答案。最大的瓶颈是读取文件本质上是一个串行操作。。这是从磁盘读取数据最有效的方法。因此,对于一个文件,我只能用一个线程从nfs读取它,然后通过它们的api将它发送到hdfs或kafka。
因此,最好的方法是确保数据来源将文件转储到多个nfs文件夹中。从那以后,我可以运行多个进程将数据加载到hdfs或kafka,因为它们是高度并行的。
如何加载?一个好方法是将nfs装载到hadoop基础设施中并使用distcp。还有其他的可能性,一旦我们确定文件可以从大量的nfs中获得,它们就会打开。否则请记住,读取文件是一个串行操作。谢谢。

l0oc07j2

l0oc07j23#

显然,您已经发现大型机擅长编写大量的大型文件。他们也很擅长阅读。但除此之外。。。
ibm最近一直在大力推动z/os上的spark。它是免费的,但如果你想得到支持,你必须为此付出代价。请参见:https://www-03.ibm.com/systems/z/os/zos/apache-spark.html 我的理解是z/os可以与spark集群中的其他机器进行对等。
z/osspark实现附带了一个可以直接从各种大型机源读取数据的部分:sequential、vsam、db2等。它可能允许您绕过整个转储过程,直接从源读取数据。
显然hadoop是用java编写的,所以人们希望它能够在z/os上运行而不会有什么问题。但是,要注意ascii和ebcdic的问题。
关于将hadoop与z/os结合使用的主题,有很多参考文献,包括一篇红色文章:http://www.redbooks.ibm.com/redpapers/pdfs/redp5142.pdf
您会注意到,在那里他们提到了使用co:z工具包,我相信这是免费的。
但是你提到“不友好”。我不确定这是否意味着“我不了解这个环境,因为它看起来不像我以前用过的任何东西”,或者意味着“我的同事不想帮助我”。我将假设后者是一样的,因为前者只是一个学习的机会。不幸的是,要让不友好的人在z/os上创建和运行任何新的东西,您可能会遇到困难。
但最后,最好还是和那些不友好的z/os管理员交朋友,因为他们可能会让你的生活更轻松。
最后,我不知道你打算用这些数据做什么分析。但在某些情况下,将分析过程移到数据中可能比将数据移到分析中更容易/更好。

相关问题