我有一堆二进制文件压缩成*gz格式。这些是在远程节点上生成的,必须传输到位于数据中心服务器之一的hdfs。我正在探索用flume发送文件的方法;我探讨了使用假脱机目录配置执行此操作的选项,但显然,这只适用于文件的目录位于同一hdfs节点上的本地情况。如何解决这个问题有什么建议吗?
olqngx591#
这种情况没有现成的解决方案。但你可以试试这些解决方法:您可以为此创建自己的源代码实现(通过使用flume sdk)。例如,这个项目似乎能够通过ssh连接到远程dir并将其用作源。您可以创建一个定制的计划脚本,定期将远程文件复制到本地spool目录中,然后将其用作flume代理的spoolingdir源。您可以尝试创建另一个脚本来读取远程数据,然后将其写入其输出,并在exec源代码中使用这样的脚本。您可以在数据所在的机器上找到您的flume(和代理)(请参阅flume的spool dir是否可以在远程机器中?)。
11dmarpk2#
为什么不运行两个不同的flume代理,一个在远程机器上,另一个在日期节点上。远程计算机上的代理可以读取假脱机目录并将其发送到avro sink。数据节点上的代理可以读取avro源并将数据转储到hdfs。
2条答案
按热度按时间olqngx591#
这种情况没有现成的解决方案。但你可以试试这些解决方法:
您可以为此创建自己的源代码实现(通过使用flume sdk)。例如,这个项目似乎能够通过ssh连接到远程dir并将其用作源。
您可以创建一个定制的计划脚本,定期将远程文件复制到本地spool目录中,然后将其用作flume代理的spoolingdir源。
您可以尝试创建另一个脚本来读取远程数据,然后将其写入其输出,并在exec源代码中使用这样的脚本。
您可以在数据所在的机器上找到您的flume(和代理)(请参阅flume的spool dir是否可以在远程机器中?)。
11dmarpk2#
为什么不运行两个不同的flume代理,一个在远程机器上,另一个在日期节点上。远程计算机上的代理可以读取假脱机目录并将其发送到avro sink。数据节点上的代理可以读取avro源并将数据转储到hdfs。