数仓版本技术选型:
1、数据采集传输:flume(1.9)、sqoop、kafka(zookeeper-3.4.10、kafka-2.x)
Flume解决日志的采集,Kafka解决消息的分发和消峰,Sqoop用于HDFS和关系型数据库进行数据的传递;
假如使用flume1.9进行处理,其中sources为外部kakfa(版本2.0.1),sink为内网kafka(版本2.0),这样处理的话应该就没问题
2、数据存储:MySQL(MySQL-8)、HDFS
MySql主要用于查询,它用于存储与前端进程交互比较频繁的数据,因为查询要速度比较块,HDFS主要用于存储,用于存储计算和分析的数据量大的数据
3、数据计算:hive(hive-2)、spark(spark-2.3.0)
Hive是底层是基于MR,速度慢,Spark基于内存,数据在计算过程中不落盘,都存储在内存中,速度快,可以进行多表查询
4、数据查询:presto(0.2,具体依赖jdk版本,比如0.209的说明里面写的很清楚,JDK1.8后面小版本要求必须是8u151+)、Druid(1.2.x,具体依赖jdk版本)
Presto和Impala是同类型同级别的框架,Druid在处理实时即席查询比Kylin强一些
5、数据可视化:QuickBI、Metabase、Superset、Echarts
QuickBI:收费
Metabase:开源免费,安装依赖的环境简单、配置简单清楚,支持对外共享,权限控制,可以便捷地创建图表,仪表盘界面整洁美观,但是图表类型较单一并且只能对单一表进行查询
Superset:免费简单但可选图像不多,只有简单的柱状图饼状图折线图
Echarts:免费但开发起来有一定难度,需要自己编写java代码,甚至有些图形需要自己绘画,对接相对麻烦(不建议使用)
PS:
1、具体各技术版本型号有待商榷,可以使用推荐版本;
2、离线数据50亿条数据量级大概有360G,考虑保存3个副本:360*3=1080G,
预留20%-30%Buf=1080G/0.7=1543G≈1.5T,现有服务器4*500=2T,可保持不变,
如果考虑数仓分层,每一层会生成大量的中间结果表,服务器集群将近再扩容1-2倍