前面几章说了 腾讯云大数据技术介绍,分别介绍了:大数据的存储,大数据的使用,和 实时并发数据处理。这是一套完整的体系,需要综合的来运用才能体现出商业化的最大价值。
今天我们就集合起来,综合所用流程说一个大数据处理的典型案例。
典型案例——用户画像标签系统
1. 需求
现在需要做某电商/某信息流App产品的用户画像系统,需要建立一个用户画像表,同时记录用户在app上所有的核心操作(例如购买退货等,不包括点击收藏等附属功能),为用户画像。
这个系统要求对整体的app用户流量做监测,并且对用户画像表进行事实更新,并且能通过工具快速的搜寻到一个用户的用户标签信息;同时需要每天计算出一些统计数据,例如今天一天的用户平均年龄,总购买量等。
2. 具体设计
1)技术栈选择
这个用户画像系统最底层最核心的其实是一个实时更新数据存储,我们需要支持
1)海量数据存储;
2)快速查询;
3)海量数据处理;
4)高实时性流数据处理。
我们分析 数据存储:
Hadoop是为了大数据而生的,由google开源。Google当时遇到的问题:大量的网页存储、搜索算法,分别对应了以下几个技术能力:
- HDFS Hadoop Distributed File System:分布式存储系统(高可靠、高扩展、高吞吐)
- MapReduce:分布式计算架构(计算向数据移动)
- YARN Yet Another Resource Management :集群资源的管理和调度
但是Hadoop计算性能比较菜,现在用于存储(Hbase、Hive、HDFS)和资源调度(YARN)比较多。
所以 数据存储选择 HDFS Hive Hbase
再来看查询:如何快速查询,前面也讲到了,用Impala
**Impala**是一种介于MySQL和HIVE之间,实时交互式的OLAP
1)作用
用SELECT JOIN快速的查询HDFS或者HBase上的数据,使用与HIVE相同的Metadata和SQL语法
2)特点
特点就是——快!快!快!
且保持了Hadoop的SQL查询
速度快、可扩展、易接入、易使用、高安全 kerberos认证
所以高效查询,选择 Impala
流数据处理:Flink,
Flink能够分布式运行在上千个节点上,将一个大型计算任务的流程拆解成小的计算过程,然后将tesk分布到并行节点上进行处理,在执行任务过程中,能够自动发现事件处理过程中的错误而导致数据不一致的问题
所以 批数据处理,采用Flink。
消息中间件:Pulsar, 鉴于对组件的熟悉程度,可以先选择Kafka ,
pulsar 和 Kafka的对比,可以查看这篇文章:https://www.infoq.cn/article/1uaxfkwuhukty1t_5gpq
根据上文我们分别针对这三点列出解决方案:
需求 | 解决方案 |
---|---|
数据存储 | HDFS Hive Hbase |
高效查询 | Impala |
批数据处理 | Spark |
流数据处理 | Flink |
消息中间件 | Pulsar |
3)数据流程图
腾讯云套件
这些大数据的套件在腾讯云都有,都可以申请使用。
为什么使用Pulsar呢?
Apache Kafka 是一种快速、可扩展的、分布式的消息流平台,拥有高吞吐、低延迟、高容错、高并发、可扩展、持久化等优秀特性,在公司内已经支持大量的业务场景。而Apache Pulsar也是一个高性能的服务间消息传输解决方案,拥有高一致性、低延时、读写分离、快速扩容、灵活容错等特性。相比较Kafka,Apache Pulsar不仅内置了多租户、跨机群复制等功能,还通过新一代存储分离的架构思想,依托BooKKeeper解决存储可靠性、一致性问题,从根本上避免了Kafka可能会出现的故障恢复不可控问题。
由于Pulsar比Kafka拥有更可靠的消息管理,并且支持灵活的扩缩容策略。
消息消费差别:
Kafka/Rocketmq每个分区进会负载到一个comsumer上,多出partition个数的consumer将不会起作用(即不会消息任何的消息)。而Pulsar这面每个分区会与当前订阅下的所有消费者客户端进行关联,broker端会根据每个消费者客户端的能力,将消息推送给客户端进行消费。Pulsar的这种设计,在很大程度上提高了系统可承载的消费能力。业务方可以根据自己的消费需求,并行的部署多于分区个数的消费者。
但是,这种设计,有利也有弊,不但提高了系统实现的复杂度,也为broker端的客户端管理埋下了隐患,需要运营过程中,做好消费客户端个数、流量等的流控配置,避免因业务方使用不当,引起broker端负载压力过大,进一步导致broker oom、宕机等。
此外,Pulsar支持shared、key_share、failover、exclusice四种模式消费,但不支持广播模式消费消息,这一点与Kafka/Rocketmq有比较大的区别。
如果没有Pulsar,可以使用CKafka,
总有一款适合你。
这里大数据部分就完结了。
接下来我们会讲一下,如何使用大数据处理过后,平台上数据的处理方法。