
大家好,我是 Echo_Wish。
做大数据这么多年,经常遇到一个问题:
“我们公司要建设数据平台,Kafka、Flink、Spark、Hive、ClickHouse、ES、Hadoop……到底该怎么选?”
然后项目经理打开 PPT:
一套“大数据全家桶”直接安排上。
结果半年以后:
其实很多企业的大数据项目失败,不是因为技术不先进,而是因为:
选了不适合自己的技术。
开源工具没有绝对最好,只有最适合。
今天 Echo_Wish 整理一份企业常见大数据技术栈选型清单,结合实际生产场景,对比主流方案和替代方案。
场景 | 常用工具 | 替代方案 |
|---|---|---|
日志采集 | Flume | Filebeat、Vector |
消息队列 | Kafka | Pulsar、RocketMQ |
CDC数据同步 | Canal | Debezium、Flink CDC |
很多公司第一反应:
“数据量大,上 Kafka。”
但是 Kafka 真的是万能的吗?
不一定。
Apache Kafka 目前依然是企业消息流平台的主流选择。
典型架构:
业务系统
|
|
Kafka
|
+-------+
| |
Flink Spark
|
数据仓库生产环境:
例如订单系统:
{
"orderId":"10001",
"userId":"9527",
"amount":299
}进入 Kafka:
producer.send(
new ProducerRecord<>(
"order_topic",
orderJson
)
);消费者:
consumer.subscribe(
Arrays.asList("order_topic")
);优势:
但是问题也明显:
如果企业:
可以考虑:
Apache Pulsar
Pulsar 架构:
Producer
|
Pulsar Broker
|
BookKeeper存储相比 Kafka:
对比 | Kafka | Pulsar |
|---|---|---|
存储 | Broker存储 | 独立存储 |
多租户 | 一般 | 强 |
运维 | 成熟 | 较复杂 |
云原生 | 一般 | 优秀 |
我的观点:
普通制造、零售企业,Kafka 足够;互联网超大规模、多业务隔离,可以考虑 Pulsar。
这是企业最容易纠结的位置。
传统架构:
Kafka
↓
Spark Streaming
↓
HiveSpark Streaming 本质:
微批处理。
例如:
每5秒处理一次:
00:00:00
00:00:05
00:00:10代码:
from pyspark.streaming import StreamingContext
ssc = StreamingContext(
sparkContext,
5
)
stream = kafkaStream.map(
lambda x:x.value
)
stream.foreachRDD(
lambda rdd:
rdd.count()
)优点:
缺点:
Apache Flink 当前实时计算领域非常热门。
架构:
Kafka
↓
Flink
↓
Redis
↓
ClickHouse代码:
DataStream<Order> stream =
env
.fromSource(source);
stream
.filter(
order -> order.amount > 1000
)
.print();优势:
例如:
统计最近一分钟交易金额:
stream
.keyBy(Order::getUserId)
.window(
SlidingEventTimeWindows
.of(
Time.minutes(1),
Time.seconds(10)
)
)
.sum("amount");选型建议:
场景 | 推荐 |
|---|---|
离线分析 | Spark |
实时风控 | Flink |
推荐系统 | Flink |
普通ETL | Spark |
一句话:
Spark 更像数据计算平台,Flink 更像实时数据操作系统。
很多新人觉得:
“Hive 太老了。”
其实不是。
Hive 在企业里面依然大量存在。
经典架构:
MySQL
↓
Sqoop/DataX
↓
Hive
↓
BIHive SQL:
select
department,
sum(amount)
from
orders
group by
department;优势:
但是:
查询速度慢。
于是出现替代方案。
ClickHouse
适合:
例如:
查询百万订单:
SELECT
product,
sum(price)
FROM orders
GROUP BY product;速度:
Hive:
几十秒甚至分钟。
ClickHouse:
秒级。
Elasticsearch
适合:
日志搜索:
用户登录失败
↓
ES
↓
Kibana查询优势:
全文搜索能力强。
但是:
不要拿 ES 当数据库。
很多公司:
MySQL数据
全部同步ES
ES永久保存最后:
磁盘爆炸。
传统:
HDFS
+
Hive
+
Spark但是现在:
越来越多企业使用:
Apache Iceberg
架构:
对象存储
(S3/OSS/MinIO)
|
Iceberg
|
Spark/Flink优势:
适合:
企业级数据湖。
常见:
工具 | 特点 |
|---|---|
Tableau | 商业强 |
PowerBI | 微软生态 |
FineBI | 国内企业多 |
Superset | 开源免费 |
Apache Superset
简单示例:
连接数据库:
DATABASES={
"clickhouse":{
"host":"localhost",
"port":8123
}
}创建:
销售趋势分析
|
ClickHouse
|
Superset Dashboard适合:
预算有限的小团队。
推荐:
Kafka
↓
Flink
↓
Hive
↓
ClickHouse
↓
Superset特点:
稳定优先。
推荐:
Kafka
↓
Flink
↓
Iceberg
↓
Trino
↓
BI特点:
实时+湖仓一体。
不要搞复杂。
可以:
MySQL
↓
DataX
↓
ClickHouse
↓
Superset很多企业80%的分析需求,这套已经够用。
这些年看过不少企业技术方案。
最大的误区就是:
“别人用了,所以我们也要用。”
阿里用了 Flink,不代表你的公司必须 Flink。
字节用了 ClickHouse,不代表你的业务必须 ClickHouse。
技术选型应该先问三个问题:
10亿数据:
和100万数据:
完全不是一个问题。
要求:
5秒内看到结果?
还是:
每天凌晨跑一次报表?
一个只有3个人的数据团队:
不要轻易挑战几十个组件的大数据平台。
大数据技术发展很快。
从 Hadoop:
到 Spark:
再到 Flink:
再到 LakeHouse:
工具越来越多。
但是企业真正需要的,不是“最先进架构”。
而是:
用最低成本,把数据稳定变成业务价值。
所以:
Kafka 不一定比 Pulsar 好;
Flink 不一定比 Spark 好;
Iceberg 不一定比 Hive 好。
适合业务的技术,才是真正好的技术。
这也是企业大数据架构设计中,最容易被忽略的一点。
我是 Echo_Wish,持续分享大数据、AI、云原生、企业数字化实践。
下一篇,我们聊聊:
《从 Hadoop 到 LakeHouse:企业数据架构演进路线图》。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。