目录大纲
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 配额可以有效防止单个用户或应用占用过多资源,保证集群资源的公平使用。
1.2 HDFS权限模型
HDFS采用类似POSIX的权限模型,包括用户、组、其他三个级别。学习交流加群风哥微信: itpux-com 每个级别有读、写、执行三种权限。
– 用户权限:文件所有者的权限
– 组权限:文件所属组的权限
– 其他权限:其他用户的权限
– 每种权限包含:读(r)、写(w)、执行(x)
1.3 ACL访问控制原理
ACL(Access Control List)提供更细粒度的权限控制。from bigdata视频:www.itpux.com ACL可以为特定用户或组设置权限,突破传统三段式权限的限制。
hdfs getconf -confKey dfs.namenode.acls.enabled
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 设置空间配额
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 设置文件数配额
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权限
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
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权限
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
# 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
# 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
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 配额监控脚本
# 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 权限审计脚本
# 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
