说明
讲师:首席架构师 李智慧
大数据平台
大数据技术应用的挑战
大数据计算的海量分布式计算方案,必然导致计算速度不是很快,即使在一个规模不太大的数据集上进行一次简单计算,MapReduce 也可能需要几分钟,Spark 快一点,也至少需要数秒的时间。
互联网产品处理用户请求,通常需要毫秒级的响应,也就是说,要在 1 秒内完成计算,大数据计算必然不能实现这样的响应要求。但是互联网应用又需要使用大数据,实现统计分析、数据挖掘、关联推荐、用户画像等一系列功能。
那么如何才能弥补互联网和大数据之间的差异呢?
大数据平台架构
蓝色部分归属于大数据平台范围。
大数据处理流程:
- App、浏览器的用户数据、日志、打点采集的数据、爬虫的数据存储到数据库;
- 数据同步系统,比如消息队列导入到大数据存储系统 HDFS;
- 大数据计算, 通过 MapReduce, Spark, Hive计算,结果还是写到 HDFS 里面;实时流大数据处理 Stomr, Spark Streaming, Flink;
- 数据同步系统,导出数据到 数据库。实时流大数据流,可以订阅结果,实时输出分析报表,进行活动方案调整,比如双十一当天活动。
- 应用把结果导出报表,看看应用的bug在哪里,通知开发人员去解决;
- 数据监控把结果导出报表,看看业务是否有什么异常,如果有就要采取相应的策略;
- 运营决策把结果导出报表,看看运营策略效果如何,进行运行活动调整。
纠错: 数据处理层的批量数据同步,的头应该从 大数据存储(HDFS) 指出。
数据采集与导入
将应用程序产生的数据和日志等同步到大数据系统中,由于数据源不同,这里的数据同步系统实际上是多个相关系统的组合。数据库同步通常用 Sqoop,日志同步可以选择 Flume,打点采集的数据经过格式化转换后通过 Kafka 等消息队列进行传递。
不同的数据源产生的数据质量可能差别很大,数据库中的数据也许可以直接导入大数据系统就可以使用了,而日志和爬虫产生的数据就需要进行大量的清洗、转化处理才能有效使用。
用 Sqoop 导入导出数据库数据
批处理用 Sqoop
用 Canal 实时导入 MySQL 数据
处理 MySQL 数据,可以一条一条实时同步数据。
原理: Canal 把自己伪装为 MySQL的 Slave。
用 Flume 从日志导入数据
Flume 级联部署
Flume 分布式部署
前端埋点采集数据
- 核心数据: 用户增加、流失等,实时上报;
- 实时数据:用户操作数据,实时上报;
- 离线数据:非核心数据,存储到手机本地,当连接 WiFi的情况下才上传;
网络爬虫收集外部数据
爬虫一般是爬取竞争对手,或者政府机构的数据。
重点是如何突破竞争对手的反爬虫系统。
数据输出与展示
大数据计算产生的数据还是写入到 HDFS 中,但应用程序不可能到 HDFS 中读取数据,所以必须要将 HDFS 中的数据导出到数据库中。数据同步导出相对比较容易,计算产生的数据都比较规范,稍作处理就可以用 Sqoop 之类的系统导出到数据库。
这时,应用程序就可以直接访问数据库中的数据,实时展示给用户,比如展示给用户关联推荐的产品。淘宝卖家的量子魔方之类的产品,其数据都来自大数据计算产生。
除了给用户访问提供数据,大数据还需要给运营和决策层提供各种统计报告,这些数据也写入数据库,被相应的后台运营和管理人员访问,查看数据报表,看业务是否正常。
大数据平台 Lamda 架构原型
淘宝大数据平台
淘宝大数据平台导入导出数据
美团大数据平台
- 数据源:Kafka消息队列之前,竞争对手抓取平台;
- 实时数据处理: Storm 流式计算;
- 离线数据处理: Camus 日志导出的中间那块;
- 大数据引擎的结果:DM DB,HBASE;
- 存储结果:查询中心;
- 调度系统:上面的流程由调度系统协调。
嘀嘀实时大数据平台
物联网平台
物联网架构
物联网大数据平台
总结
5G 在物联网应用会特别大,因为数据量特别大,可能带来的产值会跟互联网是同一个数量级的。5G 可能会带来未来的产业革命。架构师要关注新技术,能带来的技术革命。