使用HDFS文件并发操作命令
操作场景
集群内并发修改文件和目录的权限及访问控制的工具。
对系统的影响
因为集群内使用文件并发修改命令会对集群性能造成较大负担,所以在集群空闲时使用文件并发操作命令。
前提条件
- 已安装HDFS客户端或者包括HDFS的客户端。例如安装目录为“/opt/client”。
- 各组件业务用户由MRS集群管理员根据业务需要创建。安全模式下,“机机”用户需要下载keytab文件。“人机”用户第一次登录时需修改密码(普通模式不涉及)。
操作步骤
- 以客户端安装用户,登录安装客户端的节点。
- 执行以下命令,切换到客户端安装目录。
cd /opt/client
- 执行以下命令配置环境变量。
source bigdata_env
- 如果集群为安全模式,执行的用户所属的用户组必须为supergroup组,且执行以下命令进行用户认证。普通模式集群无需执行用户认证。
kinit 组件业务用户
- 增大客户端的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
- 直接执行并发命令,命令详情如下表。
命令
参数及说明
命令作用
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信息