HDFS客户端使用实践
操作场景
该任务指导用户在运维场景或业务场景中使用HDFS客户端对HDFS文件系统进行操作,例如读文件、写文件等操作。
前提条件
使用HDFS客户端
- 安装客户端,如果已安装则跳过。
例如安装目录为“/opt/client”,以下操作的客户端目录只是举例,请根据实际安装目录修改。
下载并安装集群客户端的具体操作,请参考安装MRS集群客户端。
- 以客户端安装用户,登录安装客户端的节点。
- 执行以下命令,切换到客户端安装目录,例如“/opt/client”。
cd /opt/client
- 执行以下命令配置环境变量。
source bigdata_env
- 如果集群为安全模式,执行以下命令进行用户认证。普通模式集群无需执行用户认证。
kinit 组件业务用户
- 执行HDFS Shell命令。例如:
hdfs dfs -ls /
HDFS客户端常用命令
- HDFS客户端常用命令
常用的HDFS客户端命令如表1所示。
表1 HDFS客户端常用命令 说明
命令
描述
创建文件夹
hdfs dfs -mkdir 文件夹名称
例如,创建“/tmp/mydir”文件夹:
hdfs dfs -mkdir /tmp/mydir
查看文件夹
hdfs dfs -ls 文件夹名称
hdfs dfs -ls /tmp
上传本地文件到HDFS指定路径
hdfs dfs -put 客户端节点上本地文件 HDFS指定路径
例如,上传客户端节点“/opt/test.txt”文件到HDFS的“/tmp”路径下:
hdfs dfs -put /opt/test.txt /tmp
下载HDFS文件到本地指定路径
hdfs dfs -get HDFS指定文件 客户端节点上指定路径
例如,下载HDFS的“/tmp/test.txt”文件到客户端节点的“/opt”路径下:
hdfs dfs -get /tmp/test.txt /opt/
删除文件夹
hdfs dfs -rm -r -f HDFS指定文件夹
例如,删除“/tmp/mydir”文件夹:
hdfs dfs -rm -r -f /tmp/mydir
为用户设置HDFS目录权限
hdfs dfs -chmod 权限参数 文件目录
例如,为“/tmp/test”目录设置700权限:
hdfs dfs -chmod 700 /tmp/test
- 透明加密相关命令
表2 透明加密相关命令 操作
命令
描述
创建密钥
hadoop key create<keyname> [-cipher <cipher>] [-size <size>] [-description <description>] [-attr <attribute=value>] [-provider <provider>] [-help]
create子命令为provider中<keyname>参数指定的name创建一个新的密钥,provider是由-provider参数指定。用户可以使用参数-cipher定义一个密码。目前默认的密码为“AES/CTR/NoPadding”。
默认密钥的长度为128。用户可以使用参数-size定义需要的密钥的长度。任意的attribute=value类型属性可以用参数-attr定义。每一个属性,-attr可以被定义多次。
回滚操作
hadoop key roll<keyname> [-provider <provider>] [-help]
roll子命令为provider中指定的key创建一个新的版本,provider是由-provider参数指定。
删除密钥
hadoop key delete<keyname> [-provider <provider>] [-f] [-help]
delete子命令删除key的所有版本,key是由provider中的<keyname>参数指定,provider是由-provider参数指定。除非-f被指定否则该命令需要用户确认。
查看密钥
hadoop key list[-provider <provider>] [-metadata] [-help]
list子命令显示provider中所有的密钥名,这个provider由用户在core-site.xml中配置或者由-provider参数指定。-metadata参数显示的是元数据。
- Colocation客户端Shell命令
表3 Colocation客户端Shell命令 操作
命令
描述
创建组
hdfs colocationadmin -createGroup -groupId
<groupID> -locatorIds <comma separated locatorIDs> or -file <path of the file contains all of locatorIDs>
创建组,groupID为组名,locatorID为locator名,locatorID可通过命令行输入,多个locatorID之间用逗号分隔;也可将locatorID写入文件,通过读文件获取。
删除组
hdfs colocationadmin -deleteGroup <groupID>
删除指定组。
查询组
hdfs colocationadmin -queryGroup <groupID>
查询指定组的详细信息,包括该group包含的locators以及每个locator及其对应的DataNode。
查看所有组
hdfs colocationadmin -listGroups
列出所有组及其创建时间。
设置colocation根目录的acl权限
hdfs colocationadmin -setAcl
设置ZooKeeper中colocation根目录的ACL权限。
colocation在ZooKeeper中的根目录默认为“/hadoop/colocationDetails”。
相关文档
- 更多使用HDFS客户端常见问题如下:
- 使用HDFS客户端相关更多命令可参考User_Commands、FileSystemShell。