gpt4 book ai didi

hadoop - 从远程位置(某个远程机器上的本地文件系统)拉取一个文件到 Hadoop HDFS

转载 作者:可可西里 更新时间:2023-11-01 15:05:47 25 4
gpt4 key购买 nike

我在不属于 Hadoop(或 HDFS)数据中心的机器(比如 A)中有文件。所以机器 A 位于远离 HDFS 数据中心的位置。

是否有脚本或命令或程序或工具可以在连接到 Hadoop(数据中心的一部分)的机器上运行并将文件从机器 A 直接拉入 HDFS?如果是,最好和最快的方法是什么?

我知道有很多方法,比如 WebHDFS、Talend,但它们需要从机器 A 运行,要求是避免这种情况并在数据中心的机器上运行它。

最佳答案

有两种方法可以实现:

  1. 可以使用scp拉取数据并存放到一个临时位置,然后复制到hdfs,删除临时存放的数据。

  2. 如果您不想将其保留为两步过程,您可以编写一个程序从远程机器读取文件,然后直接将其写入 HDFS。

    This question连同评论和答案将在阅读文件时派上用场,同时,您可以使用以下代码片段写入 HDFS。

    outFile = <Path to the the file including name of the new file> //e.g. hdfs://localhost:<port>/foo/bar/baz.txt

    FileSystem hdfs =FileSystem.get(new URI("hdfs://<NameNode Host>:<port>"), new Configuration());
    Path newFilePath=new Path(outFile);
    FSDataOutputStream out = hdfs.create(outFile);

    // put in a while loop here which would read until EOF and write to the file using below statement
    out.write(buffer);

    让缓冲区 = 50 * 1024,如果你有足够的 IO 容量取决于处理器,或者你可以使用更小的值,如 10 * 1024 或其他值

关于hadoop - 从远程位置(某个远程机器上的本地文件系统)拉取一个文件到 Hadoop HDFS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28274739/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com