更新时间:2022-11-04 GMT+08:00

使用HDFS文件并发操作命令

操作场景

集群内并发修改文件和目录的权限及访问控制的工具。

本章节适用于MRS 3.x及后续版本。

对系统的影响

因为集群内使用文件并发修改命令会对集群性能造成较大负担,所以在集群空闲时使用文件并发操作命令。

前提条件

  • 已安装HDFS客户端或者包括HDFS的客户端。例如安装目录为“/opt/client”。
  • 各组件业务用户由MRS集群管理员根据业务需要创建。安全模式下,“机机”用户需要下载keytab文件。“人机”用户第一次登录时需修改密码(普通模式不涉及)。

操作步骤

  1. 以客户端安装用户,登录安装客户端的节点。
  2. 执行以下命令,切换到客户端安装目录。

    cd /opt/client

  3. 执行以下命令配置环境变量。

    source bigdata_env

  4. 如果集群为安全模式,执行的用户所属的用户组必须为supergroup组,且执行以下命令进行用户认证。普通模式集群无需执行用户认证。

    kinit 组件业务用户

  5. 增大客户端的JVM大小,防止OOM,方法如下。(1亿文件建议32G

    若执行HDFS客户端命令时,客户端程序异常退出,并且报“java.lang.OutOfMomeryError”错误。

    这个问题是由于HDFS客户端运行时的所需的内存超过了HDFS客户端设置的内存上限(默认128M)。可通过修改“<客户端安装路径>/HDFS/component_env”中的“CLIENT_GC_OPTS”来修改HDFS客户端的内存上限。例如,需要设置内存上限为1GB,则设置:

    CLIENT_GC_OPTS="-Xmx1G"

    在修改完后,使用如下命令刷新客户端配置,使之生效;

    source <客户端安装路径>/bigdata_env

  6. 直接执行并发命令,命令详情如下表。

    命令

    参数及说明

    命令作用

    hdfs quickcmds [-t threadsNumber] [-p principal] [-k keytab] -setrep <rep> <path> ...

    threadsNumber:并发线程数,默认为本机CPU核数

    principal:Kerberos用户

    keytab:Keytab文件

    rep:副本数

    path:HDFS目录

    多并发设置目录中所有文件的副本数

    hdfs quickcmds [-t threadsNumber] [-p principal] [-k keytab] -chown [owner][:[group]] <path> ...

    threadsNumber:并发线程数,默认为本机CPU核数

    principal:Kerberos用户

    keytab:Keytab文件

    owner:所属用户

    group:所属组

    path:HDFS目录

    多并发设置目录中所有文件的属组

    hdfs quickcmds [-t threadsNumber] [-p principal] [-k keytab] -chmod <mode> <path> ...

    threadsNumber:并发线程数,默认为本机CPU核数

    principal:Kerberos用户

    keytab:Keytab文件

    mode:权限(如754)

    path:HDFS目录

    多并发设置目录中所有文件的权限

    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文件

    acl_spec:逗号分隔的ACL列表

    path:HDFS目录

    多并发设置目录中所有文件的ACL信息