一、 Hadoop
- HDFS:分布式文件存储系统,大数据环境的基石
- MapReduce(MR):基于磁盘计算,主要用于大量数据的批处理计算
- Spark(RDD):基于内存计算
SparkSQL:一般情况都是基于离线数据处理
Spark Streaming:一般情况是基于微批(实时)处理 - Flink 流式计算引擎
Flink SQL:类似SparkSQL,可以写SQL,更快的使用批处理操作
Flink Streaming:流式数据,(开发思路)生产库产生数据一部分发送至kafka、一部分落库,后续Filnk对接kafka中的Topic ,实时对kafka中数据进行去重、清洗、汇总、计算,维度可以存放至redis中。。。
二、 消息队列
- Kafka:可理解生产者和消费者之间的数据传递,大数据量发送传递及消费,主要功能点是削峰填谷
- MQ:主要运用于事务性消息队列,但是对于数据量来看,量级很小
三、 数据库(关系型、非关系型)
- Hive:hive只是有个管理工具,不存储任何数据,将hdfs中的文件映射成表的形式进行数据处理,主要面向于(离线)数据仓库使用,内部执行引擎(MapReduce/Spark/Tez),也可以开发一下自定义的UTF函数。
- Impala:号称是当前大数据领域最快的查询sql工具,占用内存比较多,我们在工作中都是使用Hive+Impala做离线数仓。(即席查询)
- Presto:一个分布式SQL查询引擎,整体性能还是可以的。(即席查询)
- HBases: 典型的NoSQL、分布式存储的数据库,速度够快。
- Kudu:在更新更及时的基础上实现更快的数据分析,个人感觉是在大量数据中做到更快的查询速度。
- Kylin:分布式分析引擎,我们主要用于做OLAP多维数据立方体数据,就类似与Cognos中的动态CUBE。
- ClickHouse:(不基于Hadoop集群,可独立安装)列式数据库,主要用于实时数据仓库,这个也是基于内存的,特点就是快。单表查询块,多表关联是弊端。(即席查询)
- Doris:一个基于 MPP 架构的高性能、实时的分析型数据库,尽量使用星型模型,单表不要超过100列,(即席查询)
四、 ETL工具
- Sqoop:主要是用于关系型数据与分布式数据库的数据抽取任务,类似MYSQL数据抽取至HDFS/Hive。sqoop底层运用的计算引擎也是MR,只不顾没有用到Reduce而已
- SeaTunnel(WaterDrop):大数据集群数据同步工具,主要引擎有spark和flink,Kakfa->PostgreSQL、ClinkHouse->PostgreSQL、MongoDB->PostgreSQL,PostgreSQL->HDFS等等。我就使用了这么多,其他的功能还需小伙伴继续钻研
- DataX:阿里开发,可多线程抽取数据,但是会有一些数据丢失问题,可能是生产库数据有脏数据问题,有待考证。
- FlinkX: 袋鼠云开源,有待考证。
五、 数据可视化
- DataV:阿里开发
- Datart(Davinci):宜信开发,可支持中国式复杂报表开发,也支持图表等二三十种图表样式支持,可自定义开发图表组件
- Superset:百度开源,现已贡献给Apache 开源基金会,图表绚丽
六、 任务调度工具
- Azkaban:一个脚本任务调度工具,一般用于ETL脚本执行调度,需要单独配置调度文件。在文件中需要配置依赖脚本等信息,全程在WEB端开发,在查看调度的时候有点费眼睛,DAG图不可以缩得太小或太大
- DolphinScheduler:俗称小海豚,国人开发的脚本调度工具,但是每次每一个脚本都得需要上传到服务器上,如果该工具能够支持git自动同步脚本文件的话,将是一个很好的脚本工具,开发及迁移都是很好使用的
- Kettle:传统的ETL工具+调度工具,有两大特性:job和转换,win和linux都可以兼容,很好使的一个ETL处理工具
持续更新中。。。。。。