最近有不少质疑大数据的声音,这些质疑有一定的道理,但结论有些以偏概全,应该具体问题具体分析。对大数据的疑问和抗拒往往是因为对其不了解,需要真正了解之后才能得出比较客观的结论。
大数据是一个比较宽泛的概念,它包含大数据存储和大数据计算,其中大数据计算可大致分为计算逻辑相对简单的大数据统计,以及计算逻辑相对复杂的大数据预测。
下面分别就以上三个领域简要分析一下:
第一,大数据存储解决了大数据技术中的首要问题,即海量数据首先要能保存下来,才能有后续的处理。因此大数据存储的重要性是毫无疑问的。
第二,大数据统计是对海量数据的分析统计和轻度挖掘,例如统计海量用户产品的日/月活跃度、用户基于地区的分布、用户历史操作、运营侧数据指标等,这些需要大数据计算平台的支持才能实现,对于拥有海量用户的互联网公司来说是不可或缺的技术。
第三,大数据预测领域才是争议最多的领域。事实上,预测必有误差、必有小概率事件,大数据预测的背后是各种机器学习/模式识别等深度挖掘算法,这些算法只是工具而已,用得好不好、恰不恰当还是要看应用的领域和使用者本身的能力。就像C++语言这个工具,适合做后台开发,不适合做网页前端,有C++编程很牛的程序员,也有编程很差的程序员,不能因为存在编程差的程序员而否定C++。此外,大数据预测想要做到精准,门槛非常高,所以有很多声称使用大数据预测的产品,实际效果往往不佳,给人们造成了大数据预测普遍不行的印象。由于门槛高,真正能掌握大数据预测能力,做到精准的,目前只有很少数产品。
综上所述,大数据存储和大数据统计是海量用户产品不可或缺的技术,而对于大数据预测技术,小概率事件必然出现,且并不是每个人都能运用得好。所以不能笼统地说大数据没有用处,要看具体领域,以及产品背后的团队。
大数据经过最近几年的发展,它的基础设施——各个大数据存储和计算平台已经比较成熟,业界主流的大数据平台在后台的层次角色一般如下图所示:
在物理层,根据不同的使用场景以及成本预算的考虑,会采用不同的硬件配置方案。对于自身容错备份机制较好的大存储系统,只需使用SATA硬盘即可;若所承载的平台自身容灾机制较弱甚至是无,且数据比较重要,则可以使用RAID或者SAS硬盘。对于大部分存储和计算平台来说,网络一般不是最大的瓶颈,所以使用千兆网卡和交换机即可;对于内部网络吞吐量非常大,内部网络IO已经成为瓶颈,并且时效性要求非常高的核心业务,可以使用万兆网卡和交换机提高性能。
在计算性能上,近年来逐步兴起与成熟的语音识别技术和深度学习技术,由于计算量异常巨大,需要依靠GPU加速或者是重核卡的加速才能在可容忍的时间内完成计算,业界不少的专用集群都配备了GPU或是重核卡。随着SSD的成本不断下降,它成为对硬盘IO性能有高要求的应用非常有吸引力的选择。为了充分复用服务器的资源,将其空闲部分继续加以利用,虚拟机技术成为了有效的解决方案;同时虚拟机的资源隔离机制,使得服务器的资源分配可以达到更精细的粒度,从而使资源分配更加合理和高效。业界不少大数据平台,都搭建在了虚拟机集群之上。
此外,为了保证服务的高可用性,防止机架、机房甚至是城市的网络、电源故障等突发灾情,重要的业务需要进行多机房、多城市的容灾部署。
在软件层面上,第一层首先是云存储层。按时效性划分,各个大数据存储平台一般分为离线存储和在线存储两种类型。离线存储用来对超大规模数据(一般PB以上)进行持久性存储,适用于数据访问响应时间要求低(秒级以上)的场景。在主流平台里最典型的就是hadoop的HDFS。在线存储用来对海量数据进行实时的访问,适用于在线服务场景或者是对数据访问响应时间有高要求的计算任务提供支持的场景。在线存储不一定需要对数据进行持久化,同时它既可以是原始数据,也可以只是缓存的数据。在主流的平台里,Memcached是一个分布式内存缓存系统,不提供持久化。Redis与Memcached类似,但是它提供了持久化能力及主从同步能力,所支持的数据类型和操作更加丰富。