更新时间:2024-10-11 GMT+08:00

使用HDFS客户端

操作场景

该任务指导用户在运维场景或业务场景中使用HDFS客户端。

前提条件

  • 已安装客户端。

    例如安装目录为“/opt/hadoopclient”,以下操作的客户端目录只是举例,请根据实际安装目录修改。

  • 各组件业务用户由MRS集群管理员根据业务需要创建。安全模式下,“机机”用户需要下载keytab文件。“人机”用户第一次登录时需修改密码。(普通模式不涉及)

使用HDFS客户端

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

    cd /opt/hadoopclient

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

    source bigdata_env

  4. 如果集群为安全模式,执行以下命令进行用户认证。普通模式集群无需执行用户认证。

    kinit 组件业务用户

  5. 直接执行HDFS Shell命令。例如:

    hdfs dfs -ls /

HDFS客户端常用命令

常用的HDFS客户端命令如下表所示。

更多命令可参考https://hadoop.apache.org/docs/stable/hadoop-project-dist/hadoop-common/CommandsManual.html#User_Commands

表1 HDFS客户端常用命令

命令

说明

样例

hdfs dfs -mkdir 文件夹名称

创建文件夹

hdfs dfs -mkdir /tmp/mydir

hdfs dfs -ls 文件夹名称

查看文件夹

hdfs dfs -ls /tmp

hdfs dfs -put 客户端节点上本地文件 HDFS指定路径

上传本地文件到HDFS指定路径

hdfs dfs -put /opt/test.txt /tmp

上传客户端节点“/opt/test.txt”文件到HDFS的“/tmp”路径下

hdfs dfs -get hdfs指定文件 客户端节点上指定路径

下载HDFS文件到本地指定路径

hdfs dfs -get /tmp/test.txt /opt/

下载HDFS的“/tmp/test.txt”文件到客户端节点的“/opt”路径下

hdfs dfs -rm -r -f hdfs指定文件夹

删除文件夹

hdfs dfs -rm -r -f /tmp/mydir

hdfs dfs -chmod 权限参数 文件目录

为用户设置HDFS目录权限

hdfs dfs -chmod 700 /tmp/test

客户端常见使用问题

  1. 当执行HDFS客户端命令时,客户端程序异常退出,报“java.lang.OutOfMemoryError”的错误。

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

    CLIENT_GC_OPTS="-Xmx1G"

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

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

  2. 如何设置HDFS客户端运行时的日志级别?

    HDFS客户端运行时的日志是默认输出到Console控制台的,其级别默认是INFO级别。有的时候为了定位问题,需要开启DEBUG级别日志,可以通过导出一个环境变量来设置,命令如下:

    export HADOOP_ROOT_LOGGER=DEBUG,console

    在执行完上面命令后,再执行HDFS Shell命令时,即可打印出DEBUG级别日志。

    如果想恢复INFO级别日志,可执行如下命令:

    export HADOOP_ROOT_LOGGER=INFO,console

  3. 如何彻底删除HDFS文件?

    由于HDFS的回收站机制,一般删除HDFS文件后,文件会移动到HDFS的回收站中。如果确认文件不再需要并且需要立马释放存储空间,可以继续清理对应的回收站目录(例如:hdfs://hacluster/user/xxx/.Trash/Current/xxx)。