当前位置: 首页 > news >正文

HDFS客户端操作

一、命令行工具操作

HDFS 命令行工具基于 hdfs dfs 命令,语法类似 Linux 文件操作。

1. 文件操作

bash

# 创建目录
hdfs dfs -mkdir /test# 递归创建多级目录
hdfs dfs -mkdir -p /test/data/logs# 上传本地文件到 HDFS
hdfs dfs -put local_file.txt /test/# 从 HDFS 下载文件
hdfs dfs -get /test/local_file.txt ./downloaded.txt# 查看文件内容
hdfs dfs -cat /test/local_file.txt# 追加内容到文件
echo "new line" | hdfs dfs -appendToFile - /test/local_file.txt
2. 目录操作

bash

# 查看目录内容
hdfs dfs -ls /test# 递归查看目录
hdfs dfs -ls -R /test# 删除文件/目录
hdfs dfs -rm /test/file.txt         # 删除文件
hdfs dfs -rm -r /test/data          # 递归删除目录# 移动/重命名
hdfs dfs -mv /test/file.txt /test/new_file.txt  # 重命名
hdfs dfs -mv /test/data /new_location/          # 移动目录
3. 文件状态与权限

bash

# 查看文件状态
hdfs dfs -stat /test/file.txt# 查看文件块信息
hdfs fsck /test/file.txt -files -blocks# 修改权限
hdfs dfs -chmod 755 /test/dir# 修改所有者
hdfs dfs -chown hadoop:hadoop /test/file.txt
4. 数据均衡

bash

# 启动集群数据均衡(按磁盘使用率)
start-balancer.sh -threshold 10  # 阈值10%

二、Java API 操作

通过 HDFS 的 Java API 可以在代码中操作文件系统。

1. 添加依赖(Maven)

xml

<dependency><groupId>org.apache.hadoop</groupId><artifactId>hadoop-client</artifactId><version>3.3.6</version>
</dependency>
2. Java 代码示例

java

import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.*;public class HdfsExample {public static void main(String[] args) throws Exception {// 配置 HDFSConfiguration conf = new Configuration();conf.set("fs.defaultFS", "hdfs://master:9000");FileSystem fs = FileSystem.get(conf);// 创建目录Path dirPath = new Path("/java_api_test");if (!fs.exists(dirPath)) {fs.mkdirs(dirPath);System.out.println("目录创建成功");}// 上传文件Path localPath = new Path("/path/to/local/file.txt");Path hdfsPath = new Path("/java_api_test/file.txt");fs.copyFromLocalFile(localPath, hdfsPath);System.out.println("文件上传成功");// 查看目录内容FileStatus[] statuses = fs.listStatus(dirPath);for (FileStatus status : statuses) {System.out.println(status.getPath());}// 读取文件内容FSDataInputStream in = fs.open(hdfsPath);BufferedReader reader = new BufferedReader(new InputStreamReader(in));String line;while ((line = reader.readLine()) != null) {System.out.println(line);}reader.close();// 删除文件fs.delete(hdfsPath, false);System.out.println("文件已删除");// 关闭连接fs.close();}
}

三、WebHDFS REST API

通过 HTTP 请求操作 HDFS(需启用 dfs.webhdfs.enabled)。

1. 创建目录

bash

curl -i -X PUT "http://master:9870/webhdfs/v1/test_dir?op=MKDIRS"
2. 上传文件

bash

curl -i -L -X PUT "http://master:9870/webhdfs/v1/test_dir/file.txt?op=CREATE&overwrite=true" \-T /path/to/local/file.txt
3. 查看文件

bash

curl -i "http://master:9870/webhdfs/v1/test_dir/file.txt?op=OPEN"
4. 删除文件

bash

curl -i -X DELETE "http://master:9870/webhdfs/v1/test_dir/file.txt?op=DELETE"

四、常见操作场景

1. 查看文件块位置

bash

hdfs fsck /path/to/file -files -blocks -locations
2. 更改文件副本数

bash

hdfs dfs -setrep 5 /path/to/file  # 设置为5个副本
3. 统计目录大小

bash

hdfs dfs -du -h /path/to/dir  # 以人类可读格式显示
4. 检查集群健康状态

bash

hdfs dfsadmin -report

五、注意事项

  1. 权限问题

    • HDFS 遵循 Unix 风格的权限模型(用户、组、其他)。
    • 操作时需确保用户有足够权限。
  2. 路径规范

    • 绝对路径以 / 开头,相对路径相对于用户的 HDFS 主目录(/user/<username>)。
  3. 性能建议

    • 避免频繁创建小文件(会消耗 NameNode 内存)。
    • 大规模数据传输建议使用 distcp 命令。
  4. 安全模式

    • 当集群处于安全模式时,只能读取不能写入。可通过 hdfs dfsadmin -safemode leave 退出。

http://www.xdnf.cn/news/399457.html

相关文章:

  • 堆复习(C语言版)
  • 首屏优化,webpack插件用于给html中js自动添加异步加载属性
  • Linux操作系统从入门到实战(六)Linux开发工具(上)详细介绍什么是软件包管理器,Linux下如何进行软件和软件包的安装、升级与卸载
  • 探索边缘计算:赋能物联网的未来
  • 一.Gitee基本操作
  • 2025年阿里云ACP人工智能高级工程师认证模拟试题(附答案解析)
  • Vue:插值表达
  • 如何在 Bash 中使用 =~ 操作符 ?
  • 单词短语0512
  • C++色彩博弈的史诗:红黑树
  • 关于大语言模型的困惑度(PPL)指标优势与劣势
  • 菊厂0510面试手撕题目解答
  • spdlog日志格式化 标志全指南
  • Java详解LeetCode 热题 100(14):LeetCode 56. 合并区间(Merge Intervals)详解
  • 【网络安全】SQL注入
  • pdf 不是扫描件,但却无法搜索关键词【问题尝试解决未果记录】
  • 用短说社区搭建的沉浸式生活方式分享平台
  • Redis+Caffeine构建高性能二级缓存
  • Python邮件处理(使用imaplib和email库实现自动化邮件处理)
  • Kubernetes控制平面组件:Kubelet详解(一):API接口层介绍
  • 自主添加删除开机启动项
  • tinyint(3)数据类型讲解
  • stm32之BKP备份寄存器和RTC时钟
  • 基于Python的高效批量处理Splunk Session ID并写入MySQL的解决方案
  • Hadoop 的代理用户(Proxy User)​ 功能解释
  • 配置hosts
  • 推理加速新范式:火山引擎高性能分布式 KVCache (EIC)核心技术解读
  • 深入理解Embedding Models(嵌入模型):从原理到实战(下)
  • 【机器人】复现 UniGoal 具身导航 | 通用零样本目标导航 CVPR 2025
  • SpringBoot校园失物招领信息平台