Hadoop 是否有将web资源下载到hdfs的命令?
我想写一个程序,将web资源推送到hadoop上。我使用hadoop 2.2.0,发现“put”不是这样工作的:Hadoop 是否有将web资源下载到hdfs的命令?,hadoop,hdfs,Hadoop,Hdfs,我想写一个程序,将web资源推送到hadoop上。我使用hadoop 2.2.0,发现“put”不是这样工作的: hadoop fs -put http://localhost/test.log hdfs://localhost:9000/log/ 有没有办法将文件放入hdfs,而不先下载 PS:假设我没有hadoop服务器和web资源服务器的Permission。我认为你可以使用linux管道和curl下载文件并将其存储到hdfs中我认为你可以使用linux管道和curl下载文件并将其存储
hadoop fs -put http://localhost/test.log hdfs://localhost:9000/log/
有没有办法将文件放入hdfs,而不先下载
PS:假设我没有hadoop服务器和web资源服务器的Permission。我认为你可以使用linux管道和curl下载文件并将其存储到hdfs中我认为你可以使用linux管道和curl下载文件并将其存储到hdfs中通过使用curl,我们可以将数据存储到hdfs中。看看下面使用Java的示例
public static void main(String[] args) throws IOException {
URL url = new URL("http://example.com/feed/csv/month");
HttpURLConnection conn = (HttpURLConnection)url.openConnection();
conn.connect();
InputStream connStream = conn.getInputStream();
FileSystem hdfs = FileSystem.get(new Configuration());
FSDataOutputStream outStream = hdfs.create(new Path(args[0], "month.txt"));
IOUtils.copy(connStream, outStream);
outStream.close();
connStream.close();
conn.disconnect();
}
通过使用curl,我们可以将数据存储到HDFS中。看看下面使用Java的示例
public static void main(String[] args) throws IOException {
URL url = new URL("http://example.com/feed/csv/month");
HttpURLConnection conn = (HttpURLConnection)url.openConnection();
conn.connect();
InputStream connStream = conn.getInputStream();
FileSystem hdfs = FileSystem.get(new Configuration());
FSDataOutputStream outStream = hdfs.create(new Path(args[0], "month.txt"));
IOUtils.copy(connStream, outStream);
outStream.close();
connStream.close();
conn.disconnect();
}
按照Jigar的建议对文件进行管道化处理:
curl http://stackoverflow.com/questions/22188311/is-there-a-command-for-downloading-a-web-resource-to-hdfs | hadoop fs -appendToFile - question.html
从技术上讲,这个用例需要一个唯一的客户端,该客户端作为一个流连接到远程URL,并将其内容泵入HDFS。此命令可以直接从一个HDFS数据节点执行,以避免字节传输到辅助客户端主机。下载时HDFS节点之间的网络通信无论如何都无法避免,因为文件将物理存储在多个节点中 按照Jigar的建议管道化文件:
curl http://stackoverflow.com/questions/22188311/is-there-a-command-for-downloading-a-web-resource-to-hdfs | hadoop fs -appendToFile - question.html
从技术上讲,这个用例需要一个唯一的客户端,该客户端作为一个流连接到远程URL,并将其内容泵入HDFS。此命令可以直接从一个HDFS数据节点执行,以避免字节传输到辅助客户端主机。下载时HDFS节点之间的网络通信无论如何都无法避免,因为文件将物理存储在多个节点中 我不希望文件通过我的客户端传递..有解决方案吗?我认为绕过hadoop客户端可能不可能,因为它将负责将文件写入不同的数据节点。我不希望文件通过我的客户端传递..有解决方案吗?我认为绕过hadoop客户端可能不可能,因为它将负责将文件写入不同的数据节点。