附加章一:大数据
复习
- 存储层次:存储器按层次组织,容量与速度此消彼长
- 数据表示:计算机处理的一切数据,最终都以比特形式落在一层层存储介质上
TL;DR
- 大数据指的是规模或形态超出单机与常规工具处理能力的数据
- 它常被概括为量大、产生快、种类多、价值密度低
- 分而治之、把计算搬到数据附近,是处理大数据的基本思路
- 数据多不等于结论对,样本偏差与“相关不等于因果”要格外小心
正文
前面我们造的机器,处理的是几个数、几段文字、几行指令。可现实世界里的数据,正在以另一种量级增长:每一次点击、每一笔交易、每一个传感器读数,都在持续不断地产出比特。
当数据多到一台机器装不下、算不完时,老办法又该上场了。这就是大数据(big data)。
多到什么程度才算“大”
大数据并没有一个绝对的数字门槛,它更像一种“相对”的说法:数据的规模或形态,超出了你手头单机和常规工具的处理能力。
人们常用四个特征来概括它:
- 量大:从 GB 到 TB、PB 甚至更高
- 速度快:数据源源不断地产生,往往要求及时处理
- 种类多:表格、文本、图片、日志、音视频混杂在一起
- 价值密度低:海量数据里真正有用的信息可能只占很小一部分
最后一条尤其值得品味:数据多了,并不意味着信息就多。就像在海滩上找几粒金砂,沙子再多,也得有淘洗的办法。
分而治之
一台机器干不完,那就多找几台——这个思路我们并不陌生,并行计算里已经见过。
但大数据还多了一层讲究:不要把数据搬到计算那边,而要把计算搬到数据那边。 因为数据动辄几 TB,搬来搬去的通信开销可能比计算本身还大。于是人们把任务拆成许多小块,分发到存放数据的机器上就近处理,再把结果汇总起来。
这就是“分而治之”在大数据上的化身:先拆、再算、后合。至于怎么拆得均匀、怎么容忍某台机器中途掉线,则是工程上要反复打磨的细节。
批处理与流处理
按数据到达的方式,处理方式大致分两类:
- 批处理:先把数据攒起来,再一次性处理
- 流处理:数据一到就立刻处理
前者适合“事后统计”,后者适合“实时响应”。选择哪一种,取决于你要的是完整准确,还是及时跟上。
别被数据骗了
最后要泼一盆冷水。数据多,不代表结论就一定正确。
如果采集本身就带有偏差,那么样本再大,也只是把偏差放大。同样,两件事一起变化,并不代表其中一个是另一个的原因。数据能告诉我们“发生了什么”,但“为什么”仍需要人去追问。
大数据是工具,不是答案。
思考题
为什么处理大数据时,常常强调“把计算搬到数据附近”,而不是“把数据搬到计算附近”?
小结
知识点
- 大数据是相对单机处理能力而言的
- 量与速度、种类、价值密度四个特征
- 分而治之与数据本地化
- 批处理与流处理
- 数据偏差与相关不等于因果
参考资料
- Wikipedia(zh):大数据:规模超出常规工具处理能力的数据
- Wikipedia(zh):MapReduce:把大规模计算拆分发散的编程模型
- Wikipedia(zh):流处理:对持续到达的数据即时处理
思考题答案(仅供参考)
因为大规模数据的传输开销往往比计算本身更昂贵。数据可能有 TB 级别,在网络上搬运既慢又占用资源;而把程序送到数据所在的机器上就近计算,只把较小的结果汇总回来,整体效率会高得多。
协议
本作品采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可。
封面图
设计师 | 南国微雪