HDFS文件上传下载
HDFS(Hadoop分布式文件系统)是Hadoop生态系统的核心组件之一,用于存储和管理大规模数据集。HDFS的设计目标是支持高吞吐量的数据访问,适合处理大数据应用场景。本文将详细介绍如何在HDFS中上传和下载文件,帮助初学者快速掌握这一基本操作。
1. HDFS文件系统简介
HDFS是一个分布式文件系统,它将大文件分割成多个块(默认大小为128MB或256MB),并将这些块存储在不同的节点上。HDFS具有高容错性,能够自动处理节点故障,并支持数据的并行处理。
2. HDFS文件上传
2.1 使用HDFS命令行工具上传文件
HDFS提供了一个命令行工具 hdfs dfs
,可以用来与HDFS进行交互。以下是将本地文件上传到HDFS的基本命令:
hdfs dfs -put <本地文件路径> <HDFS目标路径>
示例:
假设我们有一个本地文件 example.txt
,我们希望将其上传到HDFS的 /user/hadoop/input
目录下:
hdfs dfs -put /path/to/local/example.txt /user/hadoop/input
输出:
如果上传成功,命令行不会有任何输出。你可以使用以下命令来确认文件是否已上传:
hdfs dfs -ls /user/hadoop/input
输出示例:
Found 1 items
-rw-r--r-- 1 hadoop supergroup 52 2023-10-01 12:34 /user/hadoop/input/example.txt
2.2 使用Java API上传文件
除了命令行工具,你还可以使用Hadoop的Java API来上传文件。以下是一个简单的Java代码示例:
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;
import java.io.IOException;
public class HDFSUpload {
public static void main(String[] args) {
String localFilePath = "/path/to/local/example.txt";
String hdfsFilePath = "/user/hadoop/input/example.txt";
Configuration conf = new Configuration();
conf.set("fs.defaultFS", "hdfs://localhost:9000");
try (FileSystem fs = FileSystem.get(conf)) {
fs.copyFromLocalFile(new Path(localFilePath), new Path(hdfsFilePath));
System.out.println("文件上传成功!");
} catch (IOException e) {
e.printStackTrace();
}
}
}
运行结果:
如果代码运行成功,控制台将输出 文件上传成功!
。