1、 HDFS
HDFS是一个文件系统,用于存储文件,通过目录树来定位文件;其次,它是分布式的,由很多服务器联合起来实现其功能,集群中的服务器有各自的角色。HDFS 的设计适合一次写入,多次读出的场景,且不支持文件的修改。适合用来做数据分析,并不适合用来做网盘应用。
基本操作
【显示路径下文件】
hadoop fs -ls 或 hdfs dfs -ls <path>
【递归显示路径下文件】
hdfs dfs -lsr <path>
【上传文件】
hdfs dfs -put <localsrc> <dest>
【复制文件到本地】
hdfs dfs -get <src> <localdest>
【删除文件】
fs dfs -rm <file>
hdfs dfs -rmr <dir>
【查看文件】
hdfs dfs -cat <file>
【新建目录】
hdfs dfs -mkdir <dir>
【用户权限修改】
hdfs dfs -chown <owner>:<group> <file/dir> 如:hdfs dfs -chown hdfs:hadoop /test
【文件权限配置】
hdfs dfs -chmod -R <ugo>+<rwx> <file/dir>
# 为test目录所有者添加写权限
hdfs dfs -chmod -R u+w /test
为test目录同组用户添加写权限
hdfs dfs -chmod -R g+w /test
为test目录其他组用户添加写权限
hdfs dfs -chmod -R o+w /test
2、HIVE
Hive是一个数据仓库基础工具,在Hadoop中用来处理结构化数据。
Hive 依赖于 HDFS 存储数据,将 HQL 转换成 MapReduce 执行,所以说 Hive 是基于 Hadoop 的一个数据仓库工具,实质就是一款基于 HDFS 的 MapReduce 计算框架,对存储在 HDFS 中的数据进行分析和管理。
基本操作
查询语句
--查看数据库
show databases;
--进入数据库
use 数据库名;
--展示当前所进数据库的所有表
show tables;
--显示表结构
desc 表名;
--显示表名的分区
show partitions 表名;
--显示创建表的结构
show create 表名
建表语句
--内部表
create table if not exists user(id bigint, name string)
row format delimited
# 列分隔符(字段)
fields terminated by '|'
# 行分隔符
lines terminated by '\n'
# 本地文件的格式
stored as textfile;
--外部表
create table if not exists user(id bigint, name string)
row format delimited
# 列分隔符(字段)
fields terminated by '|'
# 行分隔符
lines terminated by '\n'
# 指定外部表在hdfs上的路径
location '/test/';
--分区表
create table if not exists user(id bigint, name string)
# 添加分区字段 ds
partitioned by (ds string)
row format delimited
fields terminated by '|'
lines terminated by '\n'
stored as textfile;
--分桶
create table if not exists user(id bigint, name string)
#添加桶(分桶字段,桶的个数)
clustered by (id) sorted by (name) into 4 buckets
row format delimited
fields terminated by '|'
lines terminated by '\n'
stored as textfile;
--从本地文件系统中导入数据到user表时间为2019-05-22分区中
load data local inpath 'user.txt' into table user partition (ds='2019-05-22');
--从一个分区中查询数据
select * from user where ds='2019-05-22';
把select权限授权给username用户
`hive>grant select on database databasename to user username;`
3、HBASE
Hbase是bigtable的开源java版本,建立在hdfs之上,提供高可靠性、高性能、列存储、可伸缩、实时读写nosql的数据库系统。它介于nosql和RDBMS之间,仅能通过主键(row key)和主键的range来检索数据,仅支持单行事务(可通过hive支持来实现多表join等复杂操作)。主要用来存储结构化和半结构化的松散数据。
基本操作
连接集群
hbase shell
创建表
create '<table_name>','<column_famliy>'
如:create 'user','base_info'
插入数据
put '<table_name>','<rowkey>','<column_famliy>:<key>','<value>'
如:
put 'user','rowkey_10','base_info:username','张三'
put 'user','rowkey_10','base_info:sex','1'
put 'user','rowkey_10','base_info:address','北京市'
put 'user','rowkey_16','base_info:username','张小明'
put 'user','rowkey_16','base_info:sex','1'
put 'user','rowkey_16','base_info:address','北京
查询数据
# 查询表所有数据
scan '<table_name>'
# 查询某个列簇的数据
get '<table_name>','<column_famliy>'
# 根据某个rowkey的数据
get '<table_name>','<rowkey>'
# 根据rowkey范围查询数据
scan '<table_name>',{STARTROW=>'<startrow>',STOPROW=>'<stoprow>'}
# 根据列名查询数据
scan '<table_name>',{COLUMNS=>'<column>:<value>'}
-- 示例
# 查询user表所有数据
scan 'user'
# 查询user表列簇为base_info的数据
get 'user','base_info'
# 查询user表rowkey为rowkey_10的数据
get 'user','rowkey_10'
# 查询user表数据rowkey范围在[rowkey_10,rowkey_16]的数据
scan 'user',{STARTROW=>'rowkey_10',STOPROW=>'rowkey_16'}
# 查询user表username为张三的数据
scan '<table_name>',{COLUMNS=>'username:张三'}
清空表数据
-- 语法
truncate '<table_name>'
-- 示例
truncate 'user'
删除表
-- 语法
# 删除表之前必须diable表,不然无法删除
diable '<table_name>'
drop '<table_name>'
-- 示例
# 删除user表
disable 'user;
drop 'user'
hbase权限命令
-- 语法
# 查看表权限信息
user_permission '<table>'
# 给用户授权
grant '<user>' '<permissions>'['<table>'[ '<column family>'[ '<column qualifier>' ] ] ]
# 收回用户权限
revoke '<user>' '<permissions>' ['<table>' [ '<column family>' [ '<column qualifier>' ] ] ]
-- 示例
# 查看user表的权限信息
user_permission 'user'
# 授权用户test读写表user的权限
grant 'test','RW','user'
# 授权用户test对表user的列簇base_info的username只读权限
grant 'test','R','user','base_info','username'
# 赋予user表读写权限
grant 'user','RW'
# 收回user表写权限
revoke 'W','user'
4、Spark
Spark是一个实现快速通用的集群计算平台。它是由加州大学伯克利分校AMP实验室 开发的通用内存并行计算框架,用来构建大型的、低延迟的数据分析应用程序。它扩展了广泛使用的MapReduce计算模型。高效的支撑更多计算模式,包括交互式查询和流处理。spark的一个主要特点是能够在内存中进行计算,及时依赖磁盘进行复杂的运算,Spark依然比MapReduce更加高效。
5、zookeeper
Zookeeper是Hadoop的一个子项目,它是分布式系统中的协调系统,可提供的服务主要有:配置服务、名字服务、分布式同步锁等
应用场景
1、统一命名服务(Name Service)
2、配置管理(Configuration Management)
3、集群管理(Group Membership)
4、共享锁(Locks)
5、队列管理
6、yarn
YARN是Hadoop 2.0中的资源管理系统,它的基本设计思想是将MRv1中的JobTracker拆分成了两个独立的服务:一个全局的资源管理器ResourceManager和每个应用程序特有的ApplicationMaster。其中ResourceManager负责整个系统的资源管理和分配,而ApplicationMaster负责单个应用程序的管理。
基本操作
查看yarn任务列表
yarn application -list
查看yarn任务日志
-- 语法
yarn logs -applicationId <applicationId>
-- 示例
# 查看任务编号为application_1556010843642_1072的日志
yarn logs -applicationId application_1556010843642_1072
导出yarn任务日志
-- 语法
yarn logs -applicationId <applicationId> > <path>/<file>
-- 示例
# 将任务编号为application_1556010843642_1072的日志导出到/home目录下的a.log文件中
yarn logs -applicationId application_1556010843642_1072 > /home/a.log
杀死正在执行的yarn任务
yarn application -kill <applicationId>
7、Kafka
Kafka是一个开源的,分布式的,高吞吐量的消息系统。随着Kafka的版本迭代,日趋成熟。大家对它的使用也逐步从日志系统衍生到其他关键业务领域。特别是其超高吞吐量的特性,在互联网领域,使用越来越广泛,生态系统也越来的完善。同时,其设计思路也是其他消息中间件重要的设计参考。
Kafka原先的开发初衷是构建一个处理海量日志的框架,基于高吞吐量为第一原则,所以它对消息的可靠性以及消息的持久化机制考虑的并不是特别的完善。0.8版本后,陆续加入了一些复制、应答和故障转移等相关机制以后,才可以让我们在其他关键性业务中使用。
8、kerberos
Kerberos 是一种网络认证协议,其设计目标是通过密钥系统为客户机 / 服务器应用程序提供强大的认证服务。该认证过程的实现不依赖于主机操作系统的认证,无需基于主机地址的信任,不要求网络上所有主机的物理安全,并假定网络上传送的数据包可以被任意地读取、修改和插入数据。在以上情况下, Kerberos 作为一种可信任的第三方认证服务,是通过传统的密码技术(如:共享密钥)执行认证服务的。
基本操作
通过keytab文件进行登陆
--语法
kinit -kt keytable文件路径 用户
--示例
kinit -kt /var/kerberos/krb5kdc/wangtao.keytab wangtao
查询登陆状态
--语法
klist
退出登陆
--语法
kdestroy
进入kadmin
kadmin.local / kadmin
查看principal
--语法
listprincs
--示例
kadmin.local: listprincs
修改密码
```sql
--语法
cpw -pw xxxx admin/admin
--示例
cpw -pw 123456 admin/admin
添加principal
```sql
--语法
addprinc admin/admin
--示例
kadmin.local: addprinc hbt/hbt
WARNING: no policy specified for hbt/hbt@COM; defaulting to no policy
Enter password for principal "hbt/hbt@COM":
Re-enter password for principal "hbt/hbt@COM":
add_principal: Invalid argument while creating "hbt/hbt@COM".
删除principal
--语法
delprinc admin/admin
--示例
delprinc admin/admin
生成keytab
--语法
ktadd -k keytable路径 用户
--示例
ktadd -k /var/keytable/test.keytab test
xst -norandkey -k /var/keytable/test.keytab test
#注意:在生成keytab文件时需要加参数”-norandkey”,否则会导致直接使用kinit test初始化时会提示密码错误。