让我们假设我有一个包含33000
行的文本文件,其中每一行都是一个URL
,指向一个可访问的1 GB
.gz
文件,可通过该文件下载HTTPS
。让我们假设我有一个由Hadoop 2.6.0
个节点组成的20
集群。如何将所有文件加载到HDFS
中的最快但又简单优雅的并行方法是什么?
到目前为止,我能够想到的最佳方法是一个bash脚本,它将通过SSH
连接到运行一系列wget
管道到{的所有其他节点{1}} HDFS
个命令。但在这种情况下,我害怕并发。
答案 0 :(得分:0)
您可以使用Java多线程执行程序服务。示例示例here
您可以使用URL读取文本文件。读取10行,然后使用java多线程开始并行下载它们。您可以将线程数定义为任意数字而不是10。
您可以使用多线程下载文件,然后使用java HDFA API将其置于HDFS中