更新时间:2025-07-14 GMT+08:00
执行HDFS文件并发操作命令
操作场景
MRS提供集群内并发修改文件和目录的权限及访问控制的工具,可以通过该工具多并发设置目录中所有文件的副本数、属主、权限、ACL信息等。
约束与限制
本章节适用于MRS 3.x及后续版本。
对系统的影响
因为集群内使用文件并发修改命令会对集群性能造成较大负担,所以在集群空闲时使用文件并发操作命令。
前提条件
- 已安装包含HDFS的客户端。例如安装目录为“/opt/client”。
- 各组件业务用户由MRS集群管理员根据业务需要创建。安全模式下,“机机”用户需要下载keytab文件。“人机”用户第一次登录时需修改密码(普通模式不涉及)。
操作步骤
- 以客户端安装用户,登录安装客户端的节点。
- 执行以下命令,切换到客户端安装目录。
cd /opt/client
- 执行以下命令配置环境变量。
source bigdata_env
- 如果集群为安全模式,执行的用户所属的用户组必须为supergroup组,且执行以下命令进行用户认证。普通模式集群无需执行用户认证。
kinit 组件业务用户
- 增大客户端的JVM大小,防止OOM,方法如下。
- 执行并发命令,命令详情如下表。
- 多并发设置目录中所有文件的副本数。
hdfs quickcmds [-t threadsNumber] [-p principal] [-k keytab] -setrep <rep> <path> ...
- 多并发设置目录中所有文件的副本数。
hdfs quickcmds [-t threadsNumber] [-p principal] [-k keytab] -chown [owner][:[group]] <path> ...
- 多并发设置目录中所有文件的权限。
hdfs quickcmds [-t threadsNumber] [-p principal] [-k keytab] -chmod <mode> <path> ...
- 多并发设置目录中所有文件的ACL信息。
hdfs quickcmds [-t threadsNumber] [-p principal] [-k keytab] -setfacl [{-b|-k} {-m|-x <acl_spec>} <path> ...]|[--set <acl_spec> <path> ...]
以上命令中,相关参数说明如下:
- threadsNumber:并发线程数,默认为本机CPU核数
- principal:Kerberos用户
- keytab:Keytab文件
- rep:副本数
- owner:所属用户
- group:所属组
- mode:权限(如754)
- acl_spec:逗号分隔的ACL列表
- path:HDFS目录
- 多并发设置目录中所有文件的副本数。
常见问题
若执行HDFS客户端命令时,客户端程序异常退出,并且报“java.lang.OutOfMemoryError”错误。这个问题是由于HDFS客户端运行时的所需的内存超过了HDFS客户端设置的内存上限(默认128M)。可参考5来修改HDFS客户端的内存上限。
父主题: HDFS性能调优