关于大数据技术的一点思考
大数据技术在当下时代,已经不算是什么新鲜东西了。但绝大部分同学往往又是没机会接触大数据相关底层技术的,包括我自己。
不过,俗话说没吃过猪肉还没见过猪跑吗?哈哈,今天就来说说我对大数据技术的思考吧,希望会给部分同学解开一些迷惑!
1.什么是大数据?
我们不搞虚的:大数据就是数据量比较大的场景,比如上TB或者PB级别以上的,基本就要归属于大数据的范畴了。
所以,如果你用关系型 数据库处理以上级别的数据,做了很多优化,这又何尝不是一种大数据处理技术呢?
所以,大数据只是一种场景而已。
2.大数据技术是什么?
大数据技术就是处理超级大数据情况下使用到的一系列技术框架,手段。开源的或主流的方案目前就是hadoop生态技术,如mapreduce、spark、flink,存储如hbase,hive,kylin,调度如yarn,oozie、azkaban,消息中间件发中kafka;
为什么有这么多技术呢?实际上因为有这么多的场景问题需要解决,而在大数据领域内,又没办法让一个框架做完所有的事,所以就将这些场景进行了拆分,形成了各种独立的技术。而已。
所以,大数据技术实际上是领域细分的结果。
3.为什么会有大数据技术?
前面说了,大数据只是一个应用场景,只是当数据量超过一定量级之后的结果。它并没有许多特别的业务诉求,所以理论上它的需求点不会多于业务前端。
那么为什么还必须要大数据技术?实际上是因为,数据量超过一定量级后,前端系统已经没有办法提供业务支持了,所以在这种场景下业务需求就没办法再往前端堆砌了。不是少堆砌,而是一点也不能了。这种情况持续了许多年,大家一直在保持数据尽量小的边缘反复试探,反复删库跑路。
所以,有时候我们说,发现问题时就已离解决问题也不远了,实际也不一定,你总有无能为力的时候。
所以,大数据虽只是一个场景,但大数据技术是必须的,因为只有它能处理这个场景。这就是宿命。
4.大数据技术的原理是什么?
这个问题那是大得不能再大了,可以用无言以对来形容。
尽管如此,我还是想说两句:大数据技术的核心原理是并行计算和分布式存储。就问你大不大?哈哈。
我们可以用大白话翻译一下:大数据技术的核心逻辑,第一:是使用了许多台机器一起参与运算。从而使我们原来在一台机器无法处理完成或需要几天几个月的时间才能完成的任务,被分摊到这多台机器上,从而使任务能够在可预期的时间内完成皆大欢喜,这是显而易见的事情。第二:使用了多台机器一起存储数据,从而解决了原来一台机器无法存储的容量或要求超级计算机才能存储的容量的问题。这也是显而易见的,一台机器存储不了,那就两台,不行就再加。
以上,就是我认为的大数据技术的核心原理。而要达到上面两个核心原理,又都必须有一个能力:任意横向扩展;这些问题无疑都是超级复杂的,而正是这些问题的复杂性,才造就了大数据技术的庞大与复杂。
5.大数据系统构建的几个核心问题?
很明显,大数据技术解决问题的场景基本已定。如果能够把这几个问题解决好,那么这就是一个好的技术系统。
但我还得重申几个问题:
- 是否为前端提供服务?
- 数据来源是啥?
- 能够对外输出什么?
- 目标用户是谁?
- 核心功能是啥?
- 性价比如何?
上面几个问题,有些是轻而易举能就能问答的问题,比如:一般不会直接为前端提供服务,数据源往往来自于各种各样的存储系统,消息系统。但后面几个问题比较难答了。如果这几个问题想不清楚,那也许你的大数据据系统可能就是无谓地浪费而已。因为很明显的,大数据系统的支出是不便宜的,并行计算和分布式存储,至少需要的是大量带宽和磁盘容量(而且可能要求SSD这种昂贵的盘),还有其他许多隐形支出。
6.大数据技术的几个大变迁感受
让整个大数据生态燃起希望的,是hadoop的出现,实际上,hadoop在出现之初就已经解决了两大核心问题:并行计算与分布式存储。它提供的hdfs分布式文件存储系统,已经是不可憾动的基石(个人感觉,不一定准确)。而它提供的并行计算mapreduce,在出现之初也是非常牛逼的,但那是在没得选的时候。可能是由于它用一套系统完成了所有的事,显得统一的同时,恰好又显得臃肿,于是又显得不够好。hadoop的出现是一个质的改变!
有了先驱者,后来者便蜂拥而上,不停地完善其中的不足,尤其是一眼就看到的分布式计算mr。而限制mr的一个重要原因则是基于磁盘的数据交换。
于是,spark出现了,它的核心或者初衷是解决了mr运算速度的问题,因为它是尽可能基于内存的数据交换,和磁盘速度相比自然有一个量级的提升。不要小看这一个量级,有的东西的前提就是基于这一个量级(比如超过一天就无效,而在几小时内则是有效的)。而后又有了spark生态圈的繁荣昌盛,极大推动了大数据生态的发展。spark可以说也是一个质的改变。
但spark遇到了一个难以解决的问题,即它的架构是基于批处理的,批处理领域是无可挑剔的,挑剔的是人。人们要求大数据系统能够实时反馈业务变化,于是spark尴尬了,于是storm出现了。(不了解)
flink找到了批处理与流处理的间隙,一把杀向市场,提出了批流合一,再加上各大厂商的鼎力相助,于是乎发展得如火如荼。但我只能给它打个中等分数,因为它只能算得量变而算不得质变。
花开两朵,话分两头。在另一条线上,分布式存储也发生了变化,如hive,pig,hbase,cassandra,presto,impala,sparksql,kylin, flinksql...
更多。。。 太多。。。