【数据蒋堂】第5期:1T数据到底有多大?
一英里不是个很长的距离,一立方英里相对于地球也不会让人觉得是个很大的空间。然后我说,这个空间内能装下全世界所有人,你会不会觉到很惊讶?不过这话不是我说的,是美国作家房龙在一本书里写的。
业内有个著名的数据仓库产品,叫Teradata,20多年前起这个名字,显然是想给人能处理海量数据的感觉。可现在,论用户还是厂商,谈论数据量时都常常以T为单位了,动不动就有几十上百T甚至PB级的数据。似乎T不是个多大的数,多几个几十个T也没什么大不了的。
其实T有点象上面说的立方英里,是个挺大的数。很多人对它没有多深的感性认识,我们要换个角度来看1T数据意味着什么。
先从空间上看。
用于分析计算的数据仍然以结构化数据为主。结构化数据中占据空间最大的是不断增长的交易类记录,这种数据每条并不大,大概只有几十到100字节,比如银行交易只要记下帐号、日期、金额;电信的通话记录也只是通话号码、时刻、时长等。就按100字节算,也就是0.1K,那么1T空间就可以放下10G行记录,100亿条!
这是什么概念呢?一年大概是3000多万秒,如果用一年时间来积累1T数据,那意味着每秒要产生300多笔记录,24小时不停息!
这个数也不算大,象中国这样的大国,电信运营商、全国级银行以及大型互联公司都不难有这种规模的业务量。但对于一个城市级别甚至有些省级的机构就是个不小的数了,比如税务部门采集的企业交税信息、连锁超市的商品购买数据、城市商业银行的交易记录等,要达到300笔/秒并不容易,何况很多机构只有白天或工作日才能产生数据。而且这还只是1T,要搞到几十上百T,那就得让业务量再上一两个数量级才行。
简单说有多少T数据是没什么感觉的,换算成每秒对应的业务量后,才知道是不是靠谱。大数据分析计算产品的技术方案和数据量相关性非常强,正确估算自己的数据量对于大数据平台的建设是至关重要的。
如果用来存储音频视频这种非结构化数据, 或者仅仅用于备份原始凭据,那1T空间就存不了多少东西了,但这种数据一般也没什么要分析计算的需求,只是存储和检索,那不需要什么大数据计算平台,只要有个网络文件系统就行了,这成本就低多了。
再从时间上看。
假设有1T数据,那么要多少时间才能处理一遍?有些厂商宣称能在数秒内处理TB级数据,用户经常也这样期望,这可能吗?
机械硬盘在操作系统下的读取数据大概是150M/秒(不能看硬盘厂商那个指标,根本达不到),固态硬盘快些,能翻个倍。我们就算300M/秒,那么1T数据只是读取不做任何运算也需要3000秒以上,接近一个小时!那怎么可能数秒内处理1T数据呢?很简单,增加硬盘,如果有1000块硬盘,那就可以在3秒左右读出1T数据了。
这还是比较理想的估算。实际上数据不大可能存放着那么整齐(硬盘不连续读取时性能下降严重),集群(1000块硬盘显然不会在一台机器上)还有网络延迟,有些运算可能还有回写动作(大分组和排序等),秒级访问常常还会有并发需求,这些因素综合起来,再慢几倍也是正常的。
现在我们知道了,1T数据意味着几个小时,或者上千块硬盘。而且还是前面的话,这只算了1T,可想而知几十上百T会是什么概念了。
有人说,硬盘太慢了,我们改用内存。
内存是比硬盘快得多,而且还适合并行计算。不过大内存的机器并不便宜(成本不是线性增长的),而且更糟糕的是,内存使用率经常很低。比如许多计算体系都是基于Java平台的,如果不做特别的压缩优化的话,JVM的内存利用率只有20%的样子,也就是硬盘上1T数据需要5T内存才能加载进来,这得装多少机器,花多少钱?
我们对1T有了上面这些感性认识后,听到多少多少T的说法时,就可以随时脑补出交易、节点数、成本等信息。做平台规划和产品选择时,就不容易被忽悠了。Teradata这个名字,今天也还不算过时的。