Map_reduce
Tez 基于yarn 的map/reduceDAG 框架
它把Map/Reduce过程拆分成若干个子过程,同时可以把多个Map/Reduce任务组合成一个较大的DAG任务,减少了Map/Reduce之间的文件存储。同时合理组合其子过程,也可以减少任务的运行时间。
Storm 处理数据流,实时处理系统
Storm经常用于在实时分析、在线机器学习、持续计算、分布式远程调用和ETL等领域
Spark 在内存中计算,数据量不大逻辑复杂时较好
l 不同于MapReduce的是Job中间输出和结果可以保存在内存中,从而不再需要读写HDFS,因此Spark能更好地适用于数据挖掘与机器学习等需要迭代的map reduce的算法。
l Spark streaming :spark用来处理数据流,实时数据的模块
Yarn recoursemanager
Flume 日志采集、聚合和传输的日志收集系统,
支持在日志系统中定制各类数据发送方,用于收集数据;
Kafka Kafka是一个可持久化的分布式的消息队列
分布式发布订阅消息系统
flume+kafka+storm
flume+hdfs
HIVE 操作
类sql查询语言,称为HQL,可以将sql语句转换成mapreduce任务进行运行
1. 子查询相当于表名,使用from 关键字需要指定真实表名或表别名。
2. hive支持union(已验证)但性能会比较差 ,支持union all
3. 子查询中使用union all 时,在子查询里不能使用count、sum 等 聚合函数
4. 两表直接进行unionall 可以使用count、sum 等聚合函数
5. 两张表进行unionall 取相同的字段名称,可正常输出指定数据内容,且结果为两张表的结果集
Load data [local] inpath ‘path’ overwrite|into table tb_name[partition (par)]
Insert overwrite|into table tb_name[partition (par)] select .. From ..
join(只支持等值关联)
• left|right|full [outer] join
• left semi join
• cross join -- 笛卡儿乘积
分区表动态分区生成
• set hive.exec.dynamic.partition=true;
• set hive.exec.dynamic.partition.mode=nonstrict;
• set hive.exec.max.dynamic.partitions.pernode=10000;
开窗函数 over
row_number()over(partition by start_cityorder by route_id) as row,
rank()over(partition by start_city order byroute_id) as rnk,
dense_rank()over(partition by start_cityorder by route_id) as drnk
cube
根据GROUP BY的维度的所有组合进行聚合(其中的GROUPING__ID,表示结果属于哪一个分组集合)
select substr(create_time,1,7) asmonth,substr(create_time,1,10) as day,count(distinct order_id) asorders,grouping__id
from kn1_ord_team_order_detail
where create_time>='2015-06-01'
group bysubstr(create_time,1,7),substr(create_time,1,10)
with cube
order by grouping__id