Harper的大数据漫谈
前言: 关于Harper的大数据漫谈
回顾一下, 自2013年毕业至今已经8年了, 其中前三年在中国联通做通信, 之后五年转战互联网公司从事大数据行业. 很喜欢这个方向, 也积累了一些心得. 最近在帮组内的实习生入门, 正好把自己的思考记录下来, 或许能帮助更多的人, 于是重新捡起了技术博客, 发挥自己意识流写作的特点, 利用工作之余的碎片时间想到哪写到哪, 哈哈😄
由于写的都是个人的理解, 所以难免有错误, 希望大家指出来一起讨论, 共同进步.
概述: 什么是大数据
所谓的大数据, 本质上依然是数据处理, 数据处理才是核心, 大数据技术只是解决了如何在海量数据的场景下对数据进行分析处理的问题而已.
假设你开了一家电商公司卖货, 为了发展壮大, 自然而然就需要对用户的访问行为进行分析, 这样可以猜测出用户可能对什么样的商品感兴趣, 有的放矢地给他推销他需要的商品, 赚更多的钱. 用户的访问行为通常都是以日志的形式记录下来, 比如:
2021-02-14 00:01:02 张三浏览了床单
2021-02-14 00:02:03 张三浏览了肥皂
2021-02-14 00:10:09 张三购买了脸盆
这些叫做用户行为日志, 通常都是通过网站埋点采集的. 这些日志可能是结构化的,也可能是非结构化的. 上面的例子是非结构化的, 如果想要进行分析的话, 我们第一步就是要对它进行结构化,并写入到数据库中, 这个入库的过程就叫做ETL, Extract, Transform, Load. 入库后的数据大概长这个样子.
| 时间 | 用户 | 行为 | 商品 |
|---|---|---|---|
| 2021-02-14 00:01:02 | 张三 | 浏览 | 床单 |
| 2021-02-14 00:01:02 | 张三 | 浏览 | 肥皂 |
| 2021-02-14 00:01:02 | 张三 | 购买 | 脸盆 |
然后数据分析师就可以对这些数据进行分析了: 你看张三这个人在情人节凌晨一直在浏览并购买生活用品, 要不就是分手了被迫搬家, 要不就是表白成功正在为同居做准备了, 总之可以适当的推销一些其他的生活用品给他. 如果你有更丰富的数据,就可以进一步的了解张三的生活状态, 进一步决定日后是给他推销鲜花礼物还是啤酒香烟.
通常网站后台服务器, 做ETL的机器以及做数据分析的机器, 并不是一同一台机器, 因为ETL和数据分析是个很消耗资源的事情, 和网站后台服务器一起部署容易把网站搞垮.所以这里又会有一步ETL之前的数据采集,目的是把网站后台的日志传输到ETL服务器去进行处理入库.
整个流程画成图的话, 基本长这个样子:

一开始你的用户数可能不多, 找一台性能差不多的机器写个python脚本来做ETL, 部署个MySQL来存储数据并进行分析就绰绰有余了.
但是由于形成了逻辑闭环, 赋能业务, 组合拳, 抓手什么什么的. 你的业务突飞猛进的发展, 每天需要处理的日志数据也变大了很多. 增多的数据主要来源于两方面, 一是用户和业务量的增长, 二是为了更好的分析用户行为, 埋点的粒度会越来越细, 内容会越来越丰富.
总会有一天, 原来的那台机器处理不过来了: 你发现24小时的日志数据要跑25小时才能做完ETL入库, 囤积的未处理数据越来越多, 同时由于数据量增大, 数据分析师用MySQL查询的速度也越来越慢. 数据通常都是有时效性的, 因为客观世界总是在不停地发生变化, 如果最后终于分析出来情人节张三原来是分手了的时候, 人家已经找到新女友了, 那这个结论也就没啥大用了.
这时你想加快处理速度, 就面临着这样一个选择: 是换一台内存更大, CPU更好的机器, 还是加一台机器来并行处理. 目前大数据领域都是采用的后者, 也就是我们常说的分布式处理: 通过更多的机器组成集群进行分布式处理来解决数据量不断增大的问题. 第一个原因是更省钱: 比如一张RTX3090的显卡价格可能够买2张RTX3080了, 但是要论算力的话2张3080比一张3090的显卡要好得多. 另外一个原因就是更灵活: 换更好的机器的话之前旧机器就浪费了, 而且如果以后业务量继续增大的话, 到时候老得换更好的机器也不是个办法. 而分布式处理就简单了, 只要再买几台性能差不多的机器加到集群里就行, 也就是横向扩展, 省钱又省心.
然而当机器变多以后, 又带来了其他的问题:
- 怎么让数据在不同的节点上分布的均匀一点, 这样才能充分利用资源;
- 当数据发生了变化的时候, 比如加了新的字段, 或者解析逻辑发生了变化, 需要更新所有的机器上的ETL任务;
- 某一台机器挂掉了, 他上面接收到的数据如何恢复
- ETL任务可以分布式地跑, 但MySQL不太好分布式, 得考虑分库分表中间件, 也是一件不省心的事儿.
所谓的大数据技术, 其实就是伴随着上面这些问题的出现, 逐步发展起来的. 大数据技术解决了上面的问题, 但是同时也带来了很多新的问题, 比如数据的一致性, 数据倾斜等等, 这些新的问题的逐步解决, 也在促进着大数据技术的进一步发展.
本文是Harper关于大数据的个人见解,探讨了大数据的本质——数据处理,并通过电商公司案例阐述了数据采集、ETL过程以及面临的挑战。随着业务发展,单一机器无法应对数据增长,从而引入分布式处理,解决成本和灵活性问题。文章提到了分布式处理带来的新问题,如数据分布、任务更新和故障恢复,揭示了大数据技术的发展与演进。

512

被折叠的 条评论
为什么被折叠?



