一、HDFS常用命令
HDFS命令的基本语法:
hdfs dfs -<命令> [选项] <参数>
1.列出指定路径下的文件和目录
hdfs dfs -ls /user/hadoop
2.创建一个新的目录
hdfs dfs -mkdir /user/hadoop/new_doc
3. 将本地文件或目录上传到 HDFS
hdfs dfs -put local_file.txt /user/hadoop/
4. 从 HDFS 下载文件或目录到本地文件系统
hdfs dfs -get /user/hadoop/file.txt local_dir/
5. 删除 HDFS 中的文件或目录
hdfs dfs -rm /user/hadoop/file.txt
6. 移动文件或目录
hdfs dfs -mv /user/hadoop/file.txt /user/hadoop/new_location/
8. 更改文件或目录的权限。
hdfs dfs -chmod 755 /user/hadoop/file.txt
这将把 /user/hadoop/file.txt 的权限更改为 755。
9. 更改文件或目录的所有者
hdfs dfs -chown hadoop_user /user/hadoop/file.txt
这将把 /user/hadoop/file.txt 的所有者更改为 hadoop_user。
10. 更改文件或目录的所属组。
hdfs dfs -chgrp hadoop_group /user/hadoop/file.txt
这将把 /user/hadoop/file.txt 的所属组更改为 hadoop_group。
11. 计算文件或目录的大小
hdfs dfs -du /user/hadoop/file.txt
这将计算 /user/hadoop/file.txt 文件的大小。
12. 从本地文件系统复制文件到 HDFS。(这里是文件 不包含目录)
hdfs dfs -copyFromLocal local_file.txt /user/hadoop/
这将把本地文件 local_file.txt 复制到 /user/hadoop/ 目录中。
13. 从 HDFS 复制文件到本地文件系统。
hdfs dfs -copyToLocal /user/hadoop/file.txt local_directory/
这将从 HDFS 的 /user/hadoop/file.txt 复制文件,并将其保存到本地文件系统的 local_directory/ 目录中。
14. 将 HDFS 中的多个文件合并为一个本地文件。
hdfs dfs -getmerge /user/hadoop/files/ merged_file.txt
这将从 HDFS 的 /user/hadoop/files/ 目录中获取多个文件,并将它们合并为一个本地文件 merged_file.txt。
15. 显示文件的末尾内容。
hdfs dfs -tail /user/hadoop/file.txt
16. 以文本格式显示文件的内容。
hdfs dfs -text /user/hadoop/file.txt
这将以文本格式显示 HDFS 中 /user/hadoop/file.txt 文件的内容。
17. 统计文件和目录的数量。
hdfs dfs -count /user/hadoop/
这将统计 /user/hadoop/ 目录下的文件和目录的数量。
18. 设置文件的副本数。
hdfs dfs -setrep -w 3 /user/hadoop/file.txt
这将把 /user/hadoop/file.txt 文件的副本数设置为 3。
19. 在 HDFS 上创建一个空文件。
hdfs dfs -touchz /user/hadoop/empty_file.txt
这将在 HDFS 的 /user/hadoop/ 目录下创建一个名为 empty_file.txt 的空文件。
20. 检查文件或目录的存在性。
hdfs dfs -test -e /user/hadoop/file.txt
检查 /user/hadoop/file.txt 文件是否存在
二、HBase常用命令
进入hbase shell console:
$HBASE_HOME/bin/hbase shell
2.1表的管理
1.查看表名列表
hbase:001:0> list
2.创建表
其中t2是表名,f1、f2是t1的列族。hbase中的表至少有一个列族。它们之中,列族直接影响hbase数据存储的物理特性。
hbase:007:0> create 't2', {NAME => 'f1', VERSIONS => 2}, {NAME => 'f2'}
结果为:
这里任何一个空格或者语法错误都会引起错误,比如:
大家一定要仔细检查。
可以通过help命令来查看对应的语法:
help 'create'
这里会给出提示,根据提示复制粘贴,之后根据自己情况修改:
3.删除表
分两步:首先disable表,然后drop表。
例如:删除表t1。
hbase(main)> disable 't1'
hbase(main)> drop 't1'
结果如下:
4.查看表结构
hbase(main)> describe 't1'
结果如下:
5.修改表结构
修改表结构,必须先disable表,再enable表。
例如:修改表test1的cf的TTL为180天。
alter 't2',{NAME=>'f1',TTL=>'15552000'}
2.2 权限管理
1.分配权限
权限表示: "RWXCA"。
其中READ('R'), WRITE('W'), EXEC('X'), CREATE('C'), ADMIN('A')
例如,给用户‘test'分配对表2有读写的权限。
grant 'test','RW','t1'
2.查看权限
例如,查看表t2的权限列表。
user_permission 't2'
3.3表数据的增删改查
1.添加数据
例如:给表t2的添加一行记录:
rowkey是rowkey001,family name:f1,column name:col1,value:value01,timestamp:系统默认。
put 't2','rowkey001','f1:col1','value01'
2.查询数据
例1:查询表t2,rowkey001中的f1下的col1的值。
get 't1','rowkey001', 'f1:col1'
get 't1','rowkey001', {COLUMN=>'f1:col1'}
可以看到,cell的内容有两条:timestamp、value
例2:查询表t2,rowkey002中的f1下的所有列值。
get 't1','rowkey001'
rowkey001中存在两列"f1:col1"和“f1:col2”
例3:扫描表t2的前5条数据。
还可以添加STARTROW、TIMERANGE和FITLER等高级功能。
scan 't2',{LIMIT=>5}
对于同一个rowkey001 属于同一个列族的不同列, 有不同的value值.
3.删除数据
例1:删除表t1,rowkey001中的f1:col1的数据。(某一个单元格cell)
delete 't1','rowkey001','f1:col1'
例2:删除表t1,rowk001的数据。(一整行数据)
deleteall 't1','rowkey001'
例3:删除表t1的所有数据。
truncate 't1'
2.4 Region管理
1.移动region
encodeRegionName为regioName后面的编码,ServerName为master-status的Region Servers列表。
move '4343995a58be8e5bbc739af1e91cd72d', 'db-41.xxx.xxx.org,60020,1390274516739'
2.开启/关闭region
balance_switch
3.手动split
语法:split 'regionName', 'splitKey'
2.5 插入数据
首先创建一个3column family的表
create 't1', {NAME => 'f1', VERSIONS => 1}, {NAME => 'f2', VERSIONS => 1}, {NAME => 'f3', VERSIONS => 1}
插入未指定col的family
put 't1', 'r1', 'f1', 'v1'
put 't1', 'r1', 'f1', 'v2'
put 't1', 'r1', 'f2', 'v3’
对于同一行同一列族的value值,hbase实行覆盖操作。
插入指定column的family:
put 't1', 'r1', 'f1:c1', 'v1'
put 't1', 'r4', 'f1:c1', 'v1'
手工把memstore写到hfile中
flush 't1'
删除所有CF3的数据
deleteall 't1','r7'
注意:一次只能put一个column,一次只能delete一个column。删除整行,使用deleteall命令。
三、Phoenix常用命令
1.进入
(hadoop01是主机名,2181是zookeeper的端口)
sqlline.py hadoop01:2181
2.退出
(结尾不加分号)
!quit
3.查询所有表
(注意结尾不加分号)
!tables
4.创建表
(除了上面带感叹号的语句,其余语句都得加分号)
表名和列族名以及表名如果需要小写都得加双引号。
create table "person" ("id" integer not null primary key, "cf"."name" varchar, "cf"."age" integer);
这样创建出来的列族名称和列名都是大写的
create table "person" (id integer not null primary key, cf.name varchar, cf.age integer);
注意:表名和列族名区分大小写,加了双引号就必须用小写表名去查否则查不到。列名不区分大小写,显示是大写,用小写依然查得到。
5.删除表结构
drop table "person";
6.修改表结构
alter table "person" add sex varchar;
7.查看表结构信息
!describe "person"
8.创建表某一列索引
create index "person_index" on "person"("cf"."name");
9.删除索引
drop index "person_index" on "person"
10.向表中插入数据
(注意:数据值需要用引号时只能用单引号,双引号会报错)
upsert into "person" values(1,'zhangsan',27,'男');
11.删除表中数据
delete from "person" where name='zhangsan';
12. 修改表中的数据
upsert into "person"(id,sex) values(1, '女');
语法和mySQL极其相似
13.查询数据
select * from "person" where name='zhangsan';
select sex, ,count(sex) as num from "person" where age>20 group by sex;
谢谢你的观看,希望可以帮助你学好大数据!