使用HDFS客户端
操作场景
该任务指导用户在运维场景或业务场景中使用HDFS客户端。
前提条件
使用HDFS客户端
- 以客户端安装用户,登录安装客户端的节点。
- 执行以下命令,切换到客户端安装目录。
cd /opt/hadoopclient
- 执行以下命令配置环境变量。
source bigdata_env
- 如果集群为安全模式,执行以下命令进行用户认证。普通模式集群无需执行用户认证。
kinit 组件业务用户
- 直接执行HDFS Shell命令。例如:
hdfs dfs -ls /
HDFS客户端常用命令
常用的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 |
客户端常见使用问题
- 当执行HDFS客户端命令时,客户端程序异常退出,报“java.lang.OutOfMemoryError”的错误。
这个问题是由于HDFS客户端运行时的所需的内存超过了HDFS客户端设置的内存上限(默认为128MB)。可以通过修改“<客户端安装路径>/HDFS/component_env”中的“CLIENT_GC_OPTS”来修改HDFS客户端的内存上限。例如,需要设置该内存上限为1GB,则设置:
CLIENT_GC_OPTS="-Xmx1G"
在修改完后,使用如下命令刷新客户端配置,使之生效:
source <客户端安装路径>/bigdata_env
- 如何设置HDFS客户端运行时的日志级别?
HDFS客户端运行时的日志是默认输出到Console控制台的,其级别默认是INFO级别。有的时候为了定位问题,需要开启DEBUG级别日志,可以通过导出一个环境变量来设置,命令如下:
export HADOOP_ROOT_LOGGER=DEBUG,console
在执行完上面命令后,再执行HDFS Shell命令时,即可打印出DEBUG级别日志。
如果想恢复INFO级别日志,可执行如下命令:
export HADOOP_ROOT_LOGGER=INFO,console
- 如何彻底删除HDFS文件?
由于HDFS的回收站机制,一般删除HDFS文件后,文件会移动到HDFS的回收站中。如果确认文件不再需要并且需要立马释放存储空间,可以继续清理对应的回收站目录(例如:hdfs://hacluster/user/xxx/.Trash/Current/xxx)。