技术 | 特点 | 使用场景 | 对比 | 备注 |
---|---|---|---|---|
Maxwell | 轻量级数据同步中间件、支持刷全量、断点还原、随机读数据,固定JSON数据格式 | mysql数据全量、增量同步 | Canal:数据落地需要定制开发、不支持刷全量。虽然高版本有了adapter客户端,需要启动独立进程,对于maxwell来说还是重量级框架,配置复杂 Sqoop:直接数据仓库之间的同步,不好加入清洗、计算层,配置复杂,有些字段类型还不支持,对于多变数据类型支持不灵活 DataX:开源只支持单机模式,性能差,生成生成配置文件复杂 Sqoop、DataX和Kettle等都属于ETL工具,我们需求里只要源数据的抽取,TL部分用专业框架去实现方案更优
| Maxwell支持高可以需要自己定制,如使用zookeeper做热备部署。直接落地kafka,零代码开发量。 对于新项目开发来说,用Maxwell开发成本低。不需要自己实现数据解析和落地。 |
Spark | 基于内存的MR、强大的SQL支持、跟Hive数据仓库完美结合 | 实时流处理、离线批处理 | Flink:实时流处理性能遥遥领先、但是SQL支持没有Spark强,结合公司现状,SQL支持越强大,业务侧改动越小,大大降低开发成本 | 以Flink和Spark流处理性能,就目前公司的数据量,没什么差别,离挑战大数据框架性能极限还差很远 |
Hive | 基于HDFS的数据仓库、提供HQL支持 | Hbase:本身只支持按rowkey条件查询,不支持SQL语法查询,需要像Phoenix这样的转换器,一部分SQL计算引擎不支持整合 | 现大数据部分已经有用了Hbase,可以使用Hive来创建表外关联,或使用直接支持整合Hbase的SQL分布式计算引擎框架。因为如果使用sql语法查询的话,Phoenix本身没有计算能力,只是个sql转换成Scan。也不是分布式计算。 | |
elasticsearch | 分布式搜索、分析引擎, logstash-input-jdbc支持mysql增量同步 | 查多改少,可以简单的myql数据同步到es。提供查询。零开发成本 | 现有架构中,可直接接入,不需要任何开发。开发人员或系统,可以直接对接es查询数据 | |
Presto | SQL解析执行。实时交互SQL查询引擎,基于内存的并行计算。支持多数据源,支持标准SQL | 在线实时查询分析(JDBC驱动),非预计算场景使用。满足: 一、时延低。 二、查询条件复杂。 三、查询范围大。 四、返回结果数小。 四、并发要求高 | mpala:sql解析执行,有自己的SQL,不支持标准SQL。 kylin(麒麟):预计算,不适合实时在线查询。 Phoenix:只支持Hbase数据仓库,非分布式计算框架,只是个sql——>scan的转换器。 SparkSql:基于MR计算,延迟较高,支持JDBC驱动弱。 Hive:经典RM计算,时延高,不适合实时在线查询。 drill:sql解析执行,支持标准SQL,运维成本高,版本更新慢,社区不太活跃。 druid:预计算场景使用,数据放内存 索引。 | 最适合实时交互查询的SQL分布式计算引擎:impala、presto、drill。 impala性能比presto稍微好点,但不支持标准SQL。所以不适合我们现状,改动SQL工作量太大。这几个都没有直接对Hbase支持。 |
ClickHouse | 在线实时分析处理系统,SQL不复杂,并发量不高,企业级系统使用 | 时延低、实时在线查询、分析 | 官方自称,elasticsearch、redis等查询性能跟ClickHouse不是同个级别的 | 不支持高并发,支持SQL较弱,特别是join的语法是非标准写法,多表关联性能差,不支持更新删除 |