1. 首页 > Hadoop教程 > 正文

大数据教程FG014-HDFS配额与权限管理实战

内容简介:本文详细介绍HDFS配额与权限管理实战,包括空间配额管理、文件数配额管理、POSIX权限控制、ACL访问控制等核心内容。风哥教程参考Hadoop官方文档HDFS Quotas、HDFS Permissions等内容。

目录大纲

Part01-基础概念与理论知识
  1.1 HDFS配额机制概述
  1.2 HDFS权限模型
  1.3 ACL访问控制原理
Part02-生产环境规划与建议
  2.1 配额规划策略
  2.2 权限设计原则
  2.3 多租户权限规划
Part03-生产环境项目实施方案
  3.1 空间配额配置与管理
  3.2 文件数配额配置
  3.3 POSIX权限管理
  3.4 ACL权限配置
Part04-生产案例与实战讲解
  4.1 多业务线配额管理案例
  4.2 细粒度权限控制案例
  4.3 配额超限处理案例
Part05-风哥经验总结与分享
  5.1 配额管理最佳实践
  5.2 权限管理经验总结

Part01-基础概念与理论知识

1.1 HDFS配额机制概述

HDFS配额机制用于限制目录使用的存储空间和文件数量。更多视频教程www.fgedu.net.cn 配额可以有效防止单个用户或应用占用过多资源,保证集群资源的公平使用。

风哥提示:HDFS配额分为空间配额和文件数配额两种类型,可以分别设置,实现对存储资源的精细化管理。

1.2 HDFS权限模型

HDFS采用类似POSIX的权限模型,包括用户、组、其他三个级别。学习交流加群风哥微信: itpux-com 每个级别有读、写、执行三种权限。

HDFS权限级别:
– 用户权限:文件所有者的权限
– 组权限:文件所属组的权限
– 其他权限:其他用户的权限
– 每种权限包含:读(r)、写(w)、执行(x)

1.3 ACL访问控制原理

ACL(Access Control List)提供更细粒度的权限控制。from bigdata视频:www.itpux.com ACL可以为特定用户或组设置权限,突破传统三段式权限的限制。

# 查看ACL配置
hdfs getconf -confKey dfs.namenode.acls.enabled

# ACL功能状态
true

Part02-生产环境规划与建议

2.1 配额规划策略

配额规划需要根据业务需求和资源情况制定。更多学习教程公众号风哥教程itpux_com

配额规划建议:
– 核心业务:预留充足空间,设置较高配额
– 开发测试:设置较低配额,避免资源浪费
– 临时数据:严格限制配额,定期清理
– 日志数据:根据保留周期设置配额

2.2 权限设计原则

权限设计应遵循最小权限原则。学习交流加群风哥QQ113257174

权限设计原则:
– 最小权限原则:只授予必要的权限
– 职责分离原则:管理员与用户权限分离
– 定期审计原则:定期检查权限配置
– 文档化原则:记录权限变更历史

2.3 多租户权限规划

多租户环境下需要实现资源隔离。风哥提示:建议按业务线划分目录,分别设置配额和权限。

# 查看当前目录结构
hdfs dfs -ls /bigdata/warehouse/

# 多租户目录结构
Found 5 items
drwxr-xr-x – fgedu fgedu 0 2024-01-16 14:00 /bigdata/warehouse/fgedu
drwxr-xr-x – dept1 dept1 0 2024-01-16 14:00 /bigdata/warehouse/dept1
drwxr-xr-x – dept2 dept2 0 2024-01-16 14:00 /bigdata/warehouse/dept2
drwxr-xr-x – dev dev 0 2024-01-16 14:00 /bigdata/warehouse/dev
drwxr-xr-x – test test 0 2024-01-16 14:00 /bigdata/warehouse/test

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

3.1 空间配额配置与管理

3.1.1 设置空间配额

# 设置空间配额(100GB)
hdfs dfsadmin -setSpaceQuota 100G /bigdata/warehouse/fgedu
# 设置空间配额(1TB)
hdfs dfsadmin -setSpaceQuota 1T /bigdata/warehouse/dept1
# 清除空间配额
hdfs dfsadmin -clrSpaceQuota /bigdata/warehouse/test

# 配额设置成功
# 验证配额
hdfs dfs -count -q /bigdata/warehouse/fgedu
none inf 107374182400 53687091200 /bigdata/warehouse/fgedu
# 输出说明:文件数配额 剩余文件数 空间配额 剩余空间 路径

3.1.2 查看配额使用情况

# 查看单个目录配额
hdfs dfs -count -q /bigdata/warehouse/fgedu
# 查看所有目录配额
hdfs dfs -count -q /bigdata/warehouse/*

# 单目录配额
none inf 107374182400 53687091200 /bigdata/warehouse/fgedu

# 所有目录配额
none inf 107374182400 53687091200 /bigdata/warehouse/fgedu
none inf 1099511627776 879609302220 /bigdata/warehouse/dept1
none inf none inf /bigdata/warehouse/test

3.2 文件数配额配置

3.2.1 设置文件数配额

# 设置文件数配额(10000个文件)
hdfs dfsadmin -setQuota 10000 /bigdata/warehouse/fgedu
# 设置文件数配额(50000个文件)
hdfs dfsadmin -setQuota 50000 /bigdata/warehouse/dept1
# 清除文件数配额
hdfs dfsadmin -clrQuota /bigdata/warehouse/test

# 配额设置成功
# 验证文件数配额
hdfs dfs -count -q /bigdata/warehouse/fgedu
10000 9500 107374182400 53687091200 /bigdata/warehouse/fgedu

3.2.2 配额超限处理

# 测试配额超限
hdfs dfs -put /bigdata/local_data/large_file.parquet /bigdata/warehouse/fgedu/
# 查看配额使用详情
hdfs dfs -count -q -h /bigdata/warehouse/fgedu

# 配额超限错误
put: The DiskSpace quota of /bigdata/warehouse/fgedu is exceeded: quota = 100 GB = 107374182400 B, but consumption = 105 GB = 112742891520 B

# 配额详情
10000 9500 100 GB 50 GB /bigdata/warehouse/fgedu

3.3 POSIX权限管理

3.3.1 修改文件所有者

# 修改文件所有者
hdfs dfs -chown fgedu:fgedu /bigdata/warehouse/fgedu/data.parquet
# 递归修改目录所有者
hdfs dfs -chown -R fgedu:fgedu /bigdata/warehouse/fgedu
# 验证修改结果
hdfs dfs -ls /bigdata/warehouse/fgedu/

# 所有者修改成功
# 验证结果
Found 4 items
drwxr-xr-x – fgedu fgedu 0 2024-01-16 14:30 /bigdata/warehouse/fgedu/ods
drwxr-xr-x – fgedu fgedu 0 2024-01-16 14:30 /bigdata/warehouse/fgedu/dwd
drwxr-xr-x – fgedu fgedu 0 2024-01-16 14:30 /bigdata/warehouse/fgedu/dws
drwxr-xr-x – fgedu fgedu 0 2024-01-16 14:30 /bigdata/warehouse/fgedu/ads

3.3.2 修改文件权限

# 修改文件权限(数字方式)
hdfs dfs -chmod 755 /bigdata/warehouse/fgedu/data.parquet
# 修改文件权限(符号方式)
hdfs dfs -chmod u+rwx,g+rx,o+rx /bigdata/warehouse/fgedu/data.parquet
# 递归修改目录权限
hdfs dfs -chmod -R 750 /bigdata/warehouse/fgedu
# 验证修改结果
hdfs dfs -ls /bigdata/warehouse/fgedu/

# 权限修改成功
# 验证结果
Found 4 items
drwxr-x— – fgedu fgedu 0 2024-01-16 14:35 /bigdata/warehouse/fgedu/ods
drwxr-x— – fgedu fgedu 0 2024-01-16 14:35 /bigdata/warehouse/fgedu/dwd
drwxr-x— – fgedu fgedu 0 2024-01-16 14:35 /bigdata/warehouse/fgedu/dws
drwxr-x— – fgedu fgedu 0 2024-01-16 14:35 /bigdata/warehouse/fgedu/ads

3.4 ACL权限配置

3.4.1 设置ACL权限

# 为用户设置ACL权限
hdfs dfs -setfacl -m user:fgedu01:rwx /bigdata/warehouse/fgedu/data.parquet
# 为组设置ACL权限
hdfs dfs -setfacl -m group:fgedu_group:rx /bigdata/warehouse/fgedu/data.parquet
# 设置默认ACL(新创建的文件继承)
hdfs dfs -setfacl -m default:user:fgedu01:rwx /bigdata/warehouse/fgedu/

# ACL设置成功
# 验证ACL
hdfs dfs -getfacl /bigdata/warehouse/fgedu/data.parquet
# file: /bigdata/warehouse/fgedu/data.parquet
# owner: fgedu
# group: fgedu
user::rwx
user:fgedu01:rwx
group::r-x
group:fgedu_group:r-x
mask::rwx
other::r-x

3.4.2 删除ACL权限

# 删除特定用户ACL
hdfs dfs -setfacl -x user:fgedu01 /bigdata/warehouse/fgedu/data.parquet
# 删除所有ACL
hdfs dfs -setfacl -b /bigdata/warehouse/fgedu/data.parquet
# 验证删除结果
hdfs dfs -getfacl /bigdata/warehouse/fgedu/data.parquet

# ACL删除成功
# file: /bigdata/warehouse/fgedu/data.parquet
# owner: fgedu
# group: fgedu
user::rwx
group::r-x
other::r-x

Part04-生产案例与实战讲解

4.1 多业务线配额管理案例

多业务线配额管理是生产环境常见需求。更多视频教程www.fgedu.net.cn

#!/bin/bash
# quota_setup.sh
# from:www.itpux.com.qq113257174.wx:itpux-com
# web: http://www.fgedu.net.cn

# 多业务线配额配置
declare -A QUOTA_CONFIG
QUOTA_CONFIG[“/bigdata/warehouse/fgedu”]=”200G:10000″
QUOTA_CONFIG[“/bigdata/warehouse/dept1″]=”500G:50000”
QUOTA_CONFIG[“/bigdata/warehouse/dept2″]=”300G:30000”
QUOTA_CONFIG[“/bigdata/warehouse/dev”]=”100G:5000″
QUOTA_CONFIG[“/bigdata/warehouse/test”]=”50G:2000″

for dir in “${!QUOTA_CONFIG[@]}”; do
SPACE_QUOTA=$(echo ${QUOTA_CONFIG[$dir]} | cut -d: -f1)
FILE_QUOTA=$(echo ${QUOTA_CONFIG[$dir]} | cut -d: -f2)
echo “Setting quota for ${dir}: Space=${SPACE_QUOTA}, Files=${FILE_QUOTA}”
hdfs dfsadmin -setSpaceQuota ${SPACE_QUOTA} ${dir}
hdfs dfsadmin -setQuota ${FILE_QUOTA} ${dir}
done

# 执行配额配置
./quota_setup.sh
Setting quota for /bigdata/warehouse/fgedu: Space=200G, Files=10000
Setting quota for /bigdata/warehouse/dept1: Space=500G, Files=50000
Setting quota for /bigdata/warehouse/dept2: Space=300G, Files=30000
Setting quota for /bigdata/warehouse/dev: Space=100G, Files=5000
Setting quota for /bigdata/warehouse/test: Space=50G, Files=2000

# 验证配额配置
hdfs dfs -count -q -h /bigdata/warehouse/*
10000 9500 200 GB 150 GB /bigdata/warehouse/fgedu
50000 45000 500 GB 400 GB /bigdata/warehouse/dept1
30000 28000 300 GB 250 GB /bigdata/warehouse/dept2
5000 4500 100 GB 80 GB /bigdata/warehouse/dev
2000 1800 50 GB 40 GB /bigdata/warehouse/test

4.2 细粒度权限控制案例

细粒度权限控制用于复杂的业务场景。学习交流加群风哥微信: itpux-com

# 场景:数据共享目录权限配置
# 1. 创建共享目录
hdfs dfs -mkdir -p /bigdata/shared/fgedu_project

# 2. 设置基础权限
hdfs dfs -chmod 750 /bigdata/shared/fgedu_project

# 3. 设置ACL权限
# 项目经理:完全控制
hdfs dfs -setfacl -m user:pm_user:rwx /bigdata/shared/fgedu_project
# 开发人员:读写权限
hdfs dfs -setfacl -m user:dev_user1:rw- /bigdata/shared/fgedu_project
hdfs dfs -setfacl -m user:dev_user2:rw- /bigdata/shared/fgedu_project
# 测试人员:只读权限
hdfs dfs -setfacl -m user:test_user:r– /bigdata/shared/fgedu_project

# 4. 设置默认ACL
hdfs dfs -setfacl -m default:user:pm_user:rwx /bigdata/shared/fgedu_project
hdfs dfs -setfacl -m default:user:dev_user1:rw- /bigdata/shared/fgedu_project
hdfs dfs -setfacl -m default:user:dev_user2:rw- /bigdata/shared/fgedu_project
hdfs dfs -setfacl -m default:user:test_user:r– /bigdata/shared/fgedu_project

# ACL配置成功
# 验证ACL
hdfs dfs -getfacl /bigdata/shared/fgedu_project
# file: /bigdata/shared/fgedu_project
# owner: hdfs
# group: hdfs
user::rwx
user:pm_user:rwx
user:dev_user1:rw-
user:dev_user2:rw-
user:test_user:r–
group::r-x
mask::rwx
other::—
default:user::rwx
default:user:pm_user:rwx
default:user:dev_user1:rw-
default:user:dev_user2:rw-
default:user:test_user:r–
default:group::r-x
default:mask::rwx
default:other::—

4.3 配额超限处理案例

4.3.1 配额监控脚本

#!/bin/bash
# quota_monitor.sh
# from:www.itpux.com.qq113257174.wx:itpux-com
# web: http://www.fgedu.net.cn

ALERT_THRESHOLD=80
DIRS=”/bigdata/warehouse/fgedu /bigdata/warehouse/dept1 /bigdata/warehouse/dept2″

for dir in ${DIRS}; do
QUOTA_INFO=$(hdfs dfs -count -q ${dir})
SPACE_QUOTA=$(echo ${QUOTA_INFO} | awk ‘{print $3}’)
SPACE_USED=$(echo ${QUOTA_INFO} | awk ‘{print $4}’)

if [ “${SPACE_QUOTA}” != “none” ] && [ “${SPACE_QUOTA}” != “inf” ]; then
USED_PERCENT=$(( (${SPACE_QUOTA} – ${SPACE_USED}) * 100 / ${SPACE_QUOTA} ))
if [ ${USED_PERCENT} -gt ${ALERT_THRESHOLD} ]; then
echo “WARNING: ${dir} space usage is ${USED_PERCENT}%”
echo “Quota: ${SPACE_QUOTA}, Used: ${SPACE_USED}” | mail -s “HDFS Quota Alert” admin@fgedu.net.cn
fi
fi
done

# 执行监控
./quota_monitor.sh
WARNING: /bigdata/warehouse/fgedu space usage is 85%
WARNING: /bigdata/warehouse/dept1 space usage is 82%

4.3.2 配额扩容处理

# 配额扩容流程
# 1. 查看当前配额使用情况
hdfs dfs -count -q -h /bigdata/warehouse/fgedu
# 2. 申请配额扩容
# 3. 执行配额扩容
hdfs dfsadmin -setSpaceQuota 500G /bigdata/warehouse/fgedu
hdfs dfsadmin -setQuota 20000 /bigdata/warehouse/fgedu
# 4. 验证扩容结果
hdfs dfs -count -q -h /bigdata/warehouse/fgedu

# 当前配额
10000 8500 200 GB 30 GB /bigdata/warehouse/fgedu

# 扩容后配额
20000 18500 500 GB 330 GB /bigdata/warehouse/fgedu

Part05-风哥经验总结与分享

5.1 配额管理最佳实践

在实际生产环境中,配额管理需要注意以下几点:from bigdata视频:www.itpux.com

风哥经验总结:
1. 根据业务需求合理设置配额
2. 预留一定的配额余量
3. 建立配额监控告警机制
4. 定期审查配额使用情况
5. 制定配额扩容流程

5.2 权限管理经验总结

5.2.1 权限管理建议

风哥提示:权限管理是数据安全的基础,需要谨慎配置。

权限管理注意事项:
– 避免使用777权限
– 定期审计权限配置
– 使用ACL实现细粒度控制
– 记录权限变更历史
– 重要目录设置粘滞位

5.2.2 权限审计脚本

#!/bin/bash
# permission_audit.sh
# from:www.itpux.com.qq113257174.wx:itpux-com
# web: http://www.fgedu.net.cn

DATE=$(date +%Y%m%d)
AUDIT_FILE=”/bigdata/logs/permission_audit_${DATE}.log”

echo “=== HDFS Permission Audit ===” > ${AUDIT_FILE}
echo “Date: $(date)” >> ${AUDIT_FILE}

# 检查777权限
echo “Directories with 777 permission:” >> ${AUDIT_FILE}
hdfs dfs -ls -R /bigdata/warehouse/ | grep “drwxrwxrwx” >> ${AUDIT_FILE}

# 检查ACL配置
echo “Directories with ACL:” >> ${AUDIT_FILE}
for dir in $(hdfs dfs -ls -R /bigdata/warehouse/ | grep “^d” | awk ‘{print $NF}’); do
ACL_INFO=$(hdfs dfs -getfacl ${dir} 2>/dev/null | grep -v “^#” | grep -v “^user::” | grep -v “^group::” | grep -v “^other::”)
if [ -n “${ACL_INFO}” ]; then
echo “${dir}: ${ACL_INFO}” >> ${AUDIT_FILE}
fi
done

echo “Audit completed. Report saved to ${AUDIT_FILE}”

# 执行审计
./permission_audit.sh
Audit completed. Report saved to /bigdata/logs/permission_audit_20240116.log

# 查看审计报告
cat /bigdata/logs/permission_audit_20240116.log
=== HDFS Permission Audit ===
Date: Mon Jan 16 15:00:00 CST 2024
Directories with 777 permission:
(none found)
Directories with ACL:
/bigdata/shared/fgedu_project: user:pm_user:rwx user:dev_user1:rw- user:dev_user2:rw- user:test_user:r–

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

联系我们

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

微信号:itpux-com

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