1、HDFS常用命令
1、使用hdfs超级用户来设置acl:使用-m参数:
sudo -u hdfs hdfs dfs -setfacl -m user:hue:rwx /user/hdfs/managed/hive
2、显示文件和目录的访问控制列表(ACL)。如果目录具有默认ACL,则getfacl还会显示默认ACL。
hdfs dfs -getfacl /user/hdfs/managed/hive
hdfs dfs -getfacl -R /user/hdfs/managed/hive
选项:
-R: 以递归方式列出所有文件和目录的ACL。
path: 要列出的文件或目录。
3、名称配额限制目录下(包含目录)文件和目录数量
# 设置名称配额
# max_number 为最大文件/目录数
# dirname 为指定的目录
hdfs dfsadmin -setQuota <max_number> <dirname>
例如:hdfs dfsadmin -setQuota 5 hdfs://hadoop104:8020/myTest
4、空间配额限制目录下文件使用的字节数
# 设置空间配额,文件占据空间取决于文件单个副本大小和副本数
# bytes 为最大存储字节数
hdfs dfsadmin -setSpaceQuota <bytes> <dirname>
例如:hdfs dfsadmin -setSpaceQuota 1024000000 hdfs://hadoop104:8020/myTest
5、
#查看HDFS目录配额
sudo -u hdfs hadoop fs -count -q -h -v /user/hdfs/test_username
#设置目录空间配额:
sudo -u hdfs hdfs dfsadmin -setSpaceQuota 100M /user/hdfs/test_username
#清除目录大小配额
sudo -u hdfs hdfs dfsadmin -clrSpaceQuota /path
#设置目录文件数配额:
sudo -u hdfs hdfs dfsadmin -setQuota 20 /path
#清除目录文件数配额:
sudo -u hdfs hdfs dfsadmin -clrQuota /path
6、将本地的test.csv文件上传至hdfs文件系统中
hdfs dfs -put test.csv /user/tmp/
7、为root用户在/文件夹下添加rwx权限
hdfs dfs -setfacl -R -m user:root:rwx /path
注:-R来循环的把下面的所有文件夹和文件都给上权限。
8、为root组在文件夹/下添加rwx权限。
sudo -u hdfs hdfs dfs -setfacl -m group:root:rwx /path
9、查看当前制定目录的权限情况
hdfs dfs -getfacl /path
2、hive常用命令
进入hive:hive
连接登录hive:!connect jdbc:hive2://192.168.1.110:10000/default;principal=hive/hive@HADOOP.COM
1、建表hive文件存储格式包括textfile、sequencefile、rcfile、orc、parquet
建表语句后面添加指定属性:stored as textfile/sequencefile/rcfile/orc/parquet
例如:create table if not exists textfile_table(
site string,
url string,
label string)
row format delimited
fields terminated by '\t'
stored as textfile;
插入数据操作:
set hive.exec.compress.output=true;
set mapred.output.compress=true;
set mapred.output.compression.codec=org.apache.hadoop.io.compress.GzipCodec;
set io.compression.codecs=org.apache.hadoop.io.compress.GzipCodec;
insert overwrite table textfile_table select * from textfile_table;
create table if not exists seqfile_table(
site string,
url string,
label string)
row format delimited
fields terminated by '\t'
stored as sequencefile;
插入数据操作:
set hive.exec.compress.output=true;
set mapred.output.compress=true;
set mapred.output.compression.codec=org.apache.hadoop.io.compress.GzipCodec;
set io.compression.codecs=org.apache.hadoop.io.compress.GzipCodec;
SET mapred.output.compression.type=BLOCK;
insert overwrite table seqfile_table select * from textfile_table;
2、创建内部表和外部表
create external table test_table(id int,name string,age int,tel string)
ROW FORMAT DELIMITED
FIELDS TERMINATED BY ','
STORED AS TEXTFILE
location '/user/hive/external/fz_external_table';
建外部表时要加external关键字,不指定location就默认使用hive.metastore.warehouse.dir指定的路径。
3、权限管理命令
给账号root授权全部权限:grant all to user root;
创建角色:create role role_name;
显示所有的角色:Show roles;
删除角色:drop role role_name;
赋权给角色:
<!--赋予role_name拥有table_name表查询的权限-->
grant select on [table] table_name to role role_name;
<!--赋予Duser拥有Gdb2 库查询的权限-->
grant select on database 数据库 to user 用户;
grant insert on database Gdb2 to user Duser;
grant update on database Gdb2 to user Duser;
grant delete on database Gdb2 to user Duser;
查看某个角色在某张表或某个数据库的权限:
show grant role role_name on database database_name;
show grant role role_name on [table] table_name;
将角色赋予给用户:grant role role_name to user user_name;
查看某用户的所有角色:show role grant user user_name;
回收某个角色的某个权限:
revoke create on database database_name from role role_name;
revoke select on [table] table_name from role role_name;