1. 首页 > Hadoop教程 > 正文

大数据教程FG007-HDFS Shell命令操作与管理实战

内容简介:本文详细介绍HDFS Shell命令操作与管理实战,包括文件系统基本操作、目录管理、文件上传下载、权限管理、配额管理等核心内容。风哥教程参考Hadoop官方文档HDFS Commands Guide、HDFS Users Guide等内容。

目录大纲

Part01-基础概念与理论知识
  1.1 HDFS Shell命令概述
  1.2 HDFS文件系统架构
  1.3 HDFS命令分类
Part02-生产环境规划与建议
  2.1 HDFS命令使用规范
  2.2 生产环境权限规划
  2.3 HDFS目录结构设计
Part03-生产环境项目实施方案
  3.1 文件系统基本操作
  3.2 目录管理操作
  3.3 文件上传下载操作
  3.4 权限与配额管理
Part04-生产案例与实战讲解
  4.1 批量文件操作案例
  4.2 HDFS数据迁移案例
  4.3 HDFS故障排查案例
Part05-风哥经验总结与分享
  5.1 HDFS运维最佳实践
  5.2 常见问题解决方案

Part01-基础概念与理论知识

1.1 HDFS Shell命令概述

HDFS Shell命令是Hadoop分布式文件系统的命令行接口,通过hdfs dfs命令可以执行各种文件系统操作。更多视频教程www.fgedu.net.cn HDFS Shell提供了与Linux文件系统类似的操作命令,支持文件的创建、删除、复制、移动等基本操作。

风哥提示:HDFS Shell命令以hdfs dfs开头,后续跟具体的操作命令,与Linux命令高度相似,学习成本低。

1.2 HDFS文件系统架构

HDFS采用主从架构,由NameNode和DataNode组成。学习交流加群风哥微信: itpux-com NameNode管理文件系统的元数据,DataNode存储实际的数据块。

# 查看HDFS集群状态
hdfs dfsadmin -report

Configured Capacity: 540760469504 (503.52 GB)
Present Capacity: 489226530816 (455.52 GB)
DFS Remaining: 489226530816 (455.52 GB)
DFS Used: 0 (0 B)
DFS Used%: 0.00%
Live datanodes (3):
Name: 192.168.1.101:9866 (fgedu01.net.cn)
Name: 192.168.1.102:9866 (fgedu02.net.cn)
Name: 192.168.1.103:9866 (fgedu03.net.cn)

1.3 HDFS命令分类

HDFS命令主要分为以下几类:文件操作命令、目录操作命令、权限管理命令、配额管理命令、快照管理命令等。from bigdata视频:www.itpux.com 每类命令都有其特定的使用场景和参数选项。

Part02-生产环境规划与建议

2.1 HDFS命令使用规范

在生产环境中使用HDFS命令需要遵循一定的规范,确保数据安全和操作可追溯。更多学习教程公众号风哥教程itpux_com 主要规范包括:

生产环境HDFS命令规范:
– 禁止直接使用hdfs用户执行删除操作
– 重要操作必须记录操作日志
– 大文件操作前需评估集群负载
– 定期检查HDFS存储空间使用情况

2.2 生产环境权限规划

HDFS权限管理采用类似Linux的权限模型,包括用户、组、其他三个级别的读写执行权限。学习交流加群风哥QQ113257174 生产环境建议按照业务线划分目录权限。

# 创建业务目录并设置权限
hdfs dfs -mkdir -p /bigdata/warehouse/fgedu
hdfs dfs -chown fgedu:fgedu /bigdata/warehouse/fgedu
hdfs dfs -chmod 755 /bigdata/warehouse/fgedu

# 目录创建成功
# 权限设置完成
# 验证权限
hdfs dfs -ls /bigdata/warehouse/
drwxr-xr-x – fgedu fgedu 0 2024-01-15 10:30 /bigdata/warehouse/fgedu

2.3 HDFS目录结构设计

合理的HDFS目录结构设计对于数据管理至关重要。风哥提示:建议按照数据类型、业务线、时间维度进行目录划分。

推荐目录结构:
/bigdata/warehouse/ – 数据仓库目录
/bigdata/tmp/ – 临时数据目录
/bigdata/archive/ – 归档数据目录
/bigdata/logs/ – 日志数据目录
/bigdata/apps/ – 应用程序目录

Part03-生产环境项目实施方案

3.1 文件系统基本操作

3.1.1 查看文件和目录

# 列出根目录内容
hdfs dfs -ls /

Found 6 items
drwxr-xr-x – hdfs hdfs 0 2024-01-10 08:00 /bigdata
drwxrwxrwx – hdfs hdfs 0 2024-01-10 08:00 /tmp
drwxr-xr-x – hdfs hdfs 0 2024-01-10 08:00 /user
drwxr-xr-x – hdfs hdfs 0 2024-01-10 08:00 /system
drwxr-xr-x – hdfs hdfs 0 2024-01-10 08:00 /apps
drwxr-xr-x – hdfs hdfs 0 2024-01-10 08:00 /warehouse

# 递归列出目录内容
hdfs dfs -ls -R /bigdata/warehouse/fgedu

drwxr-xr-x – fgedu fgedu 0 2024-01-15 10:35 /bigdata/warehouse/fgedu/ods
drwxr-xr-x – fgedu fgedu 0 2024-01-15 10:35 /bigdata/warehouse/fgedu/dwd
drwxr-xr-x – fgedu fgedu 0 2024-01-15 10:35 /bigdata/warehouse/fgedu/dws
drwxr-xr-x – fgedu fgedu 0 2024-01-15 10:35 /bigdata/warehouse/fgedu/ads

3.1.2 创建目录

# 创建单层目录
hdfs dfs -mkdir /bigdata/test
# 创建多层目录
hdfs dfs -mkdir -p /bigdata/test/sub1/sub2

# 创建成功,验证目录
hdfs dfs -ls /bigdata/test
Found 1 items
drwxr-xr-x – root supergroup 0 2024-01-15 10:40 /bigdata/test/sub1

3.1.3 删除文件和目录

# 删除空目录
hdfs dfs -rmdir /bigdata/test/sub1/sub2
# 递归删除目录
hdfs dfs -rm -r /bigdata/test
# 跳过回收站删除
hdfs dfs -rm -r -skipTrash /bigdata/temp_data

Deleted /bigdata/test
Deleted /bigdata/temp_data

3.2 目录管理操作

3.2.1 文件统计信息

# 查看文件大小
hdfs dfs -du -h /bigdata/warehouse/fgedu/ods

1.5 G 4.5 G /bigdata/warehouse/fgedu/ods/user_logs
256 M 768 M /bigdata/warehouse/fgedu/ods/order_data
512 M 1.5 G /bigdata/warehouse/fgedu/ods/product_info

# 统计目录数量
hdfs dfs -count /bigdata/warehouse/fgedu

12 45 5368709120 /bigdata/warehouse/fgedu
# 输出说明:目录数 文件数 总字节数 路径

3.2.2 文件复制和移动

# HDFS内部文件复制
hdfs dfs -cp /bigdata/source/data.parquet /bigdata/backup/data.parquet
# HDFS内部文件移动
hdfs dfs -mv /bigdata/temp/data.parquet /bigdata/warehouse/fgedu/ods/

# 复制成功
# 移动成功,验证文件
hdfs dfs -ls /bigdata/warehouse/fgedu/ods/data.parquet
-rw-r–r– 3 fgedu fgedu 536870912 2024-01-15 11:00 /bigdata/warehouse/fgedu/ods/data.parquet

3.3 文件上传下载操作

3.3.1 从本地上传到HDFS

# 上传单个文件
hdfs dfs -put /bigdata/local_data/user_info.csv /bigdata/warehouse/fgedu/ods/
# 上传目录
hdfs dfs -put /bigdata/local_logs/ /bigdata/logs/
# 追加上传
hdfs dfs -appendToFile /bigdata/local_data/new_data.txt /bigdata/warehouse/fgedu/ods/total_data.txt

# 上传成功
2024-01-15 11:05:00,123 INFO hdfs.DFSClient: Successfully put file /bigdata/local_data/user_info.csv
# 验证上传文件
hdfs dfs -ls /bigdata/warehouse/fgedu/ods/user_info.csv
-rw-r–r– 3 fgedu fgedu 10485760 2024-01-15 11:05 /bigdata/warehouse/fgedu/ods/user_info.csv

3.3.2 从HDFS下载到本地

# 下载单个文件
hdfs dfs -get /bigdata/warehouse/fgedu/ods/user_info.csv /bigdata/local_backup/
# 下载目录
hdfs dfs -get /bigdata/warehouse/fgedu/ods/ /bigdata/local_backup/ods_backup/
# 合并下载多个文件
hdfs dfs -getmerge /bigdata/warehouse/fgedu/ods/part-* /bigdata/local_backup/merged_data.txt

# 下载成功
2024-01-15 11:10:00,456 INFO hdfs.DFSClient: Successfully get file user_info.csv
# 验证本地文件
ls -lh /bigdata/local_backup/user_info.csv
-rw-r–r– 1 root root 10M Jan 15 11:10 /bigdata/local_backup/user_info.csv

3.4 权限与配额管理

3.4.1 权限管理

# 修改文件所有者
hdfs dfs -chown fgedu:fgedu /bigdata/warehouse/fgedu/ods/user_info.csv
# 修改文件权限
hdfs dfs -chmod 750 /bigdata/warehouse/fgedu/ods/user_info.csv
# 递归修改目录权限
hdfs dfs -chown -R fgedu:fgedu /bigdata/warehouse/fgedu

# 权限修改成功
# 验证权限
hdfs dfs -ls /bigdata/warehouse/fgedu/ods/user_info.csv
-rwxr-x— 3 fgedu fgedu 10485760 2024-01-15 11:15 /bigdata/warehouse/fgedu/ods/user_info.csv

3.4.2 配额管理

# 设置目录空间配额(10GB)
hdfs dfsadmin -setSpaceQuota 10G /bigdata/warehouse/fgedu
# 设置目录文件数量配额
hdfs dfsadmin -setQuota 10000 /bigdata/warehouse/fgedu
# 查看配额使用情况
hdfs dfs -count -q /bigdata/warehouse/fgedu

10000 9955 10737418240 5368709120 /bigdata/warehouse/fgedu
# 输出说明:文件数配额 剩余文件数 空间配额 剩余空间 路径

Part04-生产案例与实战讲解

4.1 批量文件操作案例

在生产环境中,经常需要批量处理大量文件。更多视频教程www.fgedu.net.cn 以下是一个批量上传日志文件的实战案例。

# 批量上传脚本
#!/bin/bash
# batch_upload.sh
# from:www.itpux.com.qq113257174.wx:itpux-com
# web: http://www.fgedu.net.cn

LOG_DIR=”/bigdata/local_logs”
HDFS_DIR=”/bigdata/logs”
DATE=$(date +%Y%m%d)

for file in ${LOG_DIR}/*.log; do
filename=$(basename ${file})
hdfs dfs -put -f ${file} ${HDFS_DIR}/${DATE}/${filename}
if [ $? -eq 0 ]; then
echo “Upload ${filename} success”
rm -f ${file}
else
echo “Upload ${filename} failed”
fi
done

# 执行批量上传
./batch_upload.sh
Upload app.log success
Upload access.log success
Upload error.log success
Upload system.log success
# 验证上传结果
hdfs dfs -ls /bigdata/logs/20240115/
Found 4 items
-rw-r–r– 3 hdfs hdfs 52428800 2024-01-15 12:00 /bigdata/logs/20240115/app.log
-rw-r–r– 3 hdfs hdfs 104857600 2024-01-15 12:00 /bigdata/logs/20240115/access.log
-rw-r–r– 3 hdfs hdfs 5242880 2024-01-15 12:00 /bigdata/logs/20240115/error.log
-rw-r–r– 3 hdfs hdfs 26214400 2024-01-15 12:00 /bigdata/logs/20240115/system.log

4.2 HDFS数据迁移案例

数据迁移是大数据运维中的常见任务。学习交流加群风哥微信: itpux-com 以下是使用distcp进行跨集群数据迁移的案例。

# 使用distcp跨集群迁移数据
hadoop distcp -update -skipcrccheck \
hdfs://fgedu01.net.cn:8020/bigdata/warehouse/fgedu \
hdfs://fgedu02.net.cn:8020/bigdata/warehouse/fgedu_backup

# 迁移过程输出
24/01/15 12:30:00 INFO tools.DistCp: Input Options: DistCpOptions{…}
24/01/15 12:30:01 INFO tools.DistCp: Number of paths: 156
24/01/15 12:30:02 INFO tools.DistCp: Number of files to copy: 1024
24/01/15 12:30:03 INFO tools.DistCp: Total bytes to copy: 107374182400
24/01/15 12:45:00 INFO tools.DistCp: Copy completed: 1024 files, 100GB
# 迁移完成统计
Files copied: 1024
Bytes copied: 107374182400
Time taken: 15 minutes

4.3 HDFS故障排查案例

4.3.1 文件块损坏恢复

# 检查文件系统健康状态
hdfs fsck /bigdata/warehouse/fgedu -files -blocks -locations

Connecting to namenode via http://fgedu01.net.cn:9870
FSCK started by hdfs from /192.168.1.100
Path ‘/bigdata/warehouse/fgedu’:
/bigdata/warehouse/fgedu/ods/user_logs (size: 5368709120)
0. BP-1234567890:blk_1073741825_1001 len=134217728 Live_repl=3
1. BP-1234567890:blk_1073741826_1002 len=134217728 Live_repl=3

Status: HEALTHY
Total size: 5368709120 B
Total blocks: 40
Total files: 1
Status: HEALTHY

4.3.2 安全模式处理

# 查看安全模式状态
hdfs dfsadmin -safemode get
# 强制退出安全模式
hdfs dfsadmin -safemode leave
# 进入安全模式
hdfs dfsadmin -safemode enter

Safe mode is OFF
Safe mode is OFF
# 进入安全模式后,HDFS只读
Safe mode is ON

Part05-风哥经验总结与分享

5.1 HDFS运维最佳实践

在实际生产环境中,HDFS运维需要注意以下几点:from bigdata视频:www.itpux.com

风哥经验总结:
1. 定期执行fsck检查文件系统健康状态
2. 合理设置文件副本数,平衡存储空间和数据安全
3. 重要数据定期备份,使用快照功能保护关键数据
4. 监控HDFS存储空间使用率,及时扩容或清理
5. 建立完善的权限管理体系,防止误操作

5.2 常见问题解决方案

5.2.1 文件删除后空间未释放

# 检查回收站
hdfs dfs -ls /user/hdfs/.Trash/Current/
# 清空回收站
hdfs dfs -expunge

# 回收站内容
Found 5 items
drwx—— – hdfs hdfs 0 2024-01-15 10:00 /user/hdfs/.Trash/Current/bigdata
# 清空回收站成功
# 空间释放

5.2.2 小文件过多问题

风哥提示:小文件过多会影响NameNode性能,建议定期合并小文件或使用HAR归档。

# 使用HAR归档小文件
hadoop archive -archiveName fgedu_logs.har \
-p /bigdata/logs/202401 /bigdata/archive/

# 归档过程
24/01/15 13:00:00 INFO archive.HadoopArchives: Creating archive fgedu_logs.har
24/01/15 13:05:00 INFO archive.HadoopArchives: Archive created successfully
# 验证归档文件
hdfs dfs -ls /bigdata/archive/fgedu_logs.har
-rw-r–r– 3 hdfs hdfs 52428800 2024-01-15 13:05 /bigdata/archive/fgedu_logs.har

注意事项:
– 删除操作要谨慎,生产环境建议启用回收站
– 大文件上传可能影响集群性能,建议在业务低峰期执行
– 定期检查配额使用情况,避免因配额不足导致任务失败

本文由风哥教程整理发布,仅用于学习测试使用,转载注明出处:http://www.fgedu.net.cn/10327.html

联系我们

在线咨询:点击这里给我发消息

微信号:itpux-com

工作日:9:30-18:30,节假日休息