目录
简介
HDFS(Hadoop Distributed File System)是Apache Hadoop框架中的一个分布式文件系统。它被设计用于存储和处理大规模数据集,并能够在具有大量节点的集群上高效地进行数据访问和处理。
上传文件
// 导入 Hadoop 配置类
import org.apache.hadoop.conf.Configuration;
// 导入 Hadoop 文件系统类
import org.apache.hadoop.fs.FileSystem;
// 导入 Hadoop 路径类
import org.apache.hadoop.fs.Path;
// 导入 Java 标准库中的 IOException 类
import java.io.IOException;
public class UploadHdfsFile {
public static void main(String[] args) {
// 创建 Hadoop 配置对象
Configuration conf = new Configuration();
// 设置 Hadoop 默认文件系统为HDFS,指定主机和端口号
conf.set("fs.defaultFS", "hdfs://master:9000");
// 定义本地文件路径
String localFilePath = "/home/hadoop/WorkSpace/hdfs/data/poetry.txt";
// 定义 HDFS 文件路径
String hdfsFilePath = "/data/";
try (FileSystem fs = FileSystem.get(conf)) {
// 创建本地路径对象
Path localPath = new Path(localFilePath);
// 创建 HDFS 路径对象
Path hdfsPath = new Path(hdfsFilePath);
// 使用 Hadoop 文件系统对象将本地文件复制到 HDFS
fs.copyFromLocalFile(false, localPath, hdfsPath);
// 打印上传成功消息
System.out.println("文件上传成功!");
} catch (IOException e) {
// 打印上传失败消息及异常信息
System.err.println("文件上传失败:" + e.getMessage());
}
}
}
下载文件
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;
import java.io.IOException;
public class DownloadHdfsFile {
public static void main(String[] args) {
// 创建 Hadoop 配置对象
Configuration conf = new Configuration();
// 设置 Hadoop 默认文件系统为 HDFS,指定主机和端口号
conf.set("fs.defaultFS", "hdfs://master:9000");
// 定义 HDFS 文件路径
String hdfsFilePath = "/data/poetry.txt";
// 定义本地文件路径
String localFilePath = "/home/hadoop/桌面/";
try (FileSystem fs = FileSystem.get(conf)) {
// 创建 HDFS 路径对象
Path hdfsPath = new Path(hdfsFilePath);
// 创建本地路径对象
Path localPath = new Path(localFilePath);
// 使用 Hadoop 文件系统对象将 HDFS 文件复制到本地
fs.copyToLocalFile(false, hdfsPath, localPath);
// 打印下载成功消息
System.out.println("文件下载成功!");
} catch (IOException e) {
// 打印下载失败消息及异常信息
System.err.println("文件下载失败:" + e.getMessage());
}
}
}
查看文件
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;
// 导入 Hadoop 文件系统数据输入流类
import org.apache.hadoop.fs.FSDataInputStream;
import java.io.IOException;
public class ReadHdfsFile {
public static void main(String[] args) {
// 创建 Hadoop 配置对象
Configuration conf = new Configuration();
// 设置 Hadoop 默认文件系统为 HDFS,指定主机和端口号
conf.set("fs.defaultFS", "hdfs://master:9000");
// 定义 HDFS 文件路径
String hdfsFilePath = "/data/poetry.txt";
try (FileSystem fs = FileSystem.get(conf)) {
// 创建 HDFS 路径对象
Path hdfsPath = new Path(hdfsFilePath);
if (!fs.exists(hdfsPath)) {
// 如果文件不存在,打印错误消息并返回
System.err.println("文件不存在:" + hdfsFilePath);
return;
}
// 打开 HDFS 文件输入流
FSDataInputStream inputStream = fs.open(hdfsPath);
byte[] buffer = new byte[4096];
int bytesRead = -1;
// 读取文件内容并输出到控制台
while ((bytesRead = inputStream.read(buffer)) > 0) {
System.out.write(buffer, 0, bytesRead);
}
// 关闭输入流
inputStream.close();
} catch (IOException e) {
// 打印读取文件失败消息及异常信息
System.err.println("读取文件失败:" + e.getMessage());
}
}
}