写在前面,虽然本篇文章是要梳理大数据相关的技术栈和整个的框架体系,但是还是要说的是,在去了解学习这些相关技术时候,都必须要立足在公司所处行业的业务,数据使用只有在推动公司发展才有价值,依照当前公司大数据95%都没有达到前沿科技的地步,没有必要唯技术论,在采用那种技术时候需要立足在解决当前公司发展中遇到的痛点,或者提升公司价值和业务发展。当然如果致力于推动当前大数据技术前沿的发展,那前面所说则不再适用,膜拜大佬!!!
数据同步工具:
datax:阿里开源的产品,有开源和商业版两个版本。当前支持的数据库读写类型
datax使用资料1
datax使用资料2
sqoop:已经是很成熟的产品,需要基于hadoop跑Mr任务,可以将数据从业务中关系型数据库同步到hdfs,hive等数据仓库中。
flinkX:也是一个开源的数据同步工具,相对成熟度来说没有datax和sqoop成熟,但是这个工具是依基于flink的所以好处就是可以实现数据实时性的同步到数仓中,同时支持了离线和实时同步数据两种方式。
任务调度开源框架:
dolphinscheduler, 它必须要写在第一个,就是这个如果你的公司还没有选好要使用任务调度框架,强烈推荐使用dolphinscheduler,这个框架是目前我使用过的最好一个任务调度框架,同时还是中国公司开源的。它不仅仅支持任务流程编排,同时有版本管理,还有租户和用户的管理,当然还有更多的优势你可以自己官网调研一下,中文官网毕竟是国产,棒!
azkaban:最开始使用是这个工具,使用简单,支持任务编排依赖和定时调度等功能,但是没有版本管理和多租户管理等功能。
oozie:是集成在cdh大数据平台系统上的,对cdh的支持较好,但是使用相对复杂。
airflow:
对于调度工具就是选择一个适合的就可以,不需要花费太多的精力,目前来说dolphinscheduler被越来越多的公司使用。
数据计算引擎
Flink:国内很多大厂都在力推实时计算,毕竟现在来对实时数据的需要和监控越来越大,flink的流式处理,数据一致性的保证都做的越来越完美。
Spark:批处理领域的王者,当然后来也支持了流式计算,但是没有做到flink那种真正的流式计算,而是通过微批的方式,当然spark在数据处理方面各个生态的整合是很完善的,同时提供机器学习,图计算等算法模型,对数据湖的处理也很完善,目前大部分公司还是依据spark为主。
MR:最开始的大数据量的计算引擎,提出了分合的思想,也是hadoop中很重要的计算部分,因为设计因素所以在计算中会有比较多的磁盘io,很大的降低了处理数据的速度,好处是可以避免内存的不足。不过现在使用也逐渐变少了,当然可能一些银行还在使用,需要保证数据的绝对稳定安全。
Flink SQL 通过jdbc连接表的DDL语句
create table deal_mysql(
tenant_id String,
shop_id String,
pay_amt decimal(19, 2),
pay_qty double,
sku_code String,
category_code_b string,
write_time timestamp,
dt Date,
primary key (tenant_id,sku_code) not enforced
)with(
'connector'='jdbc',
'url'='jdbc:mysql://ip:3306/database_name',
'username'='root',
'password'='password',
'table-name'='table_name'
);