ubuntu

Ubuntu HDFS如何进行数据传输

小樊
41
2025-11-02 22:46:05
栏目: 智能运维

Ubuntu环境下HDFS数据传输的常用方法

1. 基础Shell命令传输(最常用)

HDFS提供hdfs dfshadoop fs命令(纯HDFS环境可互换),支持本地与HDFS间的基本文件操作,适用于小规模数据迁移。

2. 大规模数据传输(distcp命令)

对于TB/PB级数据,distcp(Distributed Copy)是Hadoop内置的并行复制工具,支持跨集群、断点续传,大幅提升传输效率。

3. 移动而非复制传输(节省空间)

若无需保留本地文件,可使用moveFromLocal命令,将本地文件直接移动到HDFS,本地文件会被自动删除,适合释放本地存储的场景。 示例:hdfs dfs -moveFromLocal /home/ubuntu/local_file.txt /user/ubuntu/hdfs_destination/

4. 编程实现数据传输(Java API)

通过Hadoop Java API可实现定制化数据传输,适合集成到大数据应用中。需配置Hadoop环境(core-site.xmlhdfs-site.xml),使用FileSystem类的copyFromLocalFile方法。 示例代码:

import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;

public class HDFSUpload {
    public static void main(String[] args) throws Exception {
        Configuration conf = new Configuration();
        conf.set("fs.defaultFS", "hdfs://localhost:9000"); // 设置HDFS地址
        FileSystem fs = FileSystem.get(conf); // 获取HDFS文件系统对象
        Path localPath = new Path("/home/ubuntu/local_file.txt"); // 本地文件路径
        Path hdfsPath = new Path("/user/ubuntu/hdfs_destination/"); // HDFS目标路径
        fs.copyFromLocalFile(localPath, hdfsPath); // 执行上传
        fs.close(); // 关闭资源
        System.out.println("文件上传成功!");
    }
}

编译运行前需将Hadoop jar包添加到classpath,确保程序能访问HDFS。

注意事项

0
看了该问题的人还看了