spark-cdh学习
Spark:
1.Apache Spark是用于大规模数据处理的统一分析引擎
2.一款分布式内存计算的分析引擎
源数据层:
1.sdk日志埋点
2.日志文件:爬虫日志,业务日志
3.关系型数据库:mysql,oracle等
数据采集层:
1.离线:flume,sqoop,Nifi
2.实时:filebeat
补充:当数据量挡道5亿左右时候,filebeat+logstash采集数据到hdfs,数据会出现丢失的情况,所以这种方案不适合用于大数据存储到hdfs
数据存储层:
1.hdfs用于存储离线大数据量
2.kudu用于存储mysql关系型数据库更新变化的数据
3.es存储一些log日志,比如说我们需要快速的定位某一个业务的log情况
4.kafka作为消息中间件,存储filebeat或者flume采集的日志
数据分析层:
1.es分析一些log
2.hive适用于分析一些离线大数据(基于磁盘io分析)
3.impala,presto适用分析一些准实时日志(要求快速出数据,基于内存分析)
4.spark core+spark sql适用于分析一些离线数据,自定义解析规则
5.spark streaming适用于分析一些实时(不是完全实时)的数据
6.flink,jstorm进行分析完全实时的数据
数据调度层:
1.airflow:适用于大集群,阿里的调度系统就是根据airflow二次开发,配置复杂,python脚本实现
2.azkaban:cpu和内存要求不高,主从配置支持的不算太好,适用于小集群,以job的文件实现,配置简单
3.oozie:通常hue集成,单独的使用oozie的情况下,配置及其复杂,不建议使用,所有的任务是以mr的形式进行的,可以支持复杂的依赖调度.
4.jobx:cpu使用高,bug还没有修复,所以早晨agent的cpu维持在1个左右,配置简单,只支持依赖调度,并行调度不支持
5.crontab:一般用于每分钟调度一次的任务,不支持依赖调度,并行调度(配置复杂,通过脚本自定义控制),没有可视化界面,不能准去的判断任务是否成功或者失败
6.自定义,公司自己开发使用的
数据同步层:
1.sqoop用的是1.x系列版本
2.datax
3.kettle
4.NiFi
数据olap存储层:
mysql,es,tidb,hbase,clickhouse
补充:有时间的话去研究一下tidb和clickhouse
数据展示层:
PowerBI,帆软等BI可视化工具,前端定制开发
技术选型:
实时分析
可以使用ua或者filebeat讲nginx数据采集到kafka,数据经过spark streaming进行分析后,尽可能得存入一些高吞吐量的数据库(非关系型的),
但是有时必须存入一些关系型数据库,比如说mysql,但是spark streaming发现仅仅通过了一个map操作,每个执行的batch的时间,就 超过我们所设置的batch时间,这
时候我需要一个措施,增加一个缓冲层,不直接mysql或者redis,写写入kafka,然后通kafka推送到独立的写入服务,这样会发现实时处理服务的时间明显境地
离线分析:
采集这个用flume的talf形式,或者使用sqoop和nifi
数据分析使用hive,sparksql,数据存储使用hdfs
最终将数据导出到mysql等常用的关系型数据库当中