hdfs 简介

shell 操作

hadoop fs 等同于 hdfs dfs

HDFS 上的 Shell 操作命令跟 Linux 下的 Shell 命令基本类似,相关参数也基本相同

hdfs dfs -help : 查看命令的帮助信息

主要不同的点

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
# 从本地上传 /localdemo10.tar.gz 文件到 hdfs 的 /logs/demo 
hadoop fs -copyFromLocal /localdemo10.tar.gz /logs/demo
hadoop fs -put /localdemo10.tar.gz /logs/demo # 与上面相同,一般用 put
hadoop fs -mvFromLocal /localdemo10.tar.gz /logs/demo # 移动,会删除本地文件

# 下载 HDFS 文件到本地系统磁盘 /data
hadoop fs -copyToLocal /logs/demo/localdemo10.tar.gz /data
hadoop fs -get /logs/demo/localdemo10.tar.gz /data # 与上面相同,一般用 get

# 删除
hadoop fs -rm -r -skipTrash /tmp/hive_test # -skipTrash 直接删除,不放入回收站
hadoop fs -expunge # 清空回收站

# 追加 本地 aa1.log 内容 到 hdfs /logs/aa.log (hdfs 上内容不能修改,只能追加)
hadoop fs -appendToFile aa1.log /logs/aa.log

用户操作 将 root 加入 supergroup

1
2
3
4
5
6
7
8
9
10
11
12
13
groupadd supergroup

usermod -a -G supergroup root

# hdfs 用户是 supergroup
su - hdfs -s /bin/bash -c "hdfs dfsadmin -refreshUserToGroupsMappings"


# 如果不生效 则到所有nm机器上执行
hdfs haadmin -getAllServiceState

# 验证 root 用户
hadoop fs -ls /user/hdfs

另外一种

1
2
3
4
5
6
7
8
groupadd  supergroup
usermod -a -G supergroup root

su - test -s /bin/bash -c "hdfs dfsadmin -refreshUserToGroupsMappings"

su - test -s /bin/bash -c "hadoop fs -chmod 770 /user/test"

su - root -s /bin/bash -c "hadoop fs -ls /user/test"