大数据现在是业内炙手可热的话题,随着技术的发展,大数据存储技术已经不再是难点,但是对大数据如何做好存储后的下一步处理将是未来竞争的焦点,目前比较受欢迎的Storm, Spark, Hadoop三个大数据处理工具都是JVM上的语言写成的。
Spark由Scala写成,是UC Berkeley AMP lab所开源的类Hadoop MapReduce的通用的并行计算框架,Spark基于map reduce算法实现的分布式计算,拥有Hadoop MapReduce所具有的优点。
Storm由java和clojure写成,storm的优点是全内存计算,因为内存寻址速度是硬盘的百万倍以上,所以storm的速度相比较hadoop非常快。
hadoop是实现了mapreduce的思想,将数据切片计算来处理大量的离线数据数据。hadoop处理的数据必须是已经存放在hdfs上或者类似hbase的数据库中,所以hadoop实现的时候是通过移动计算到这些存放数据的机器上来提高效率。

spark弥补了hadoop的不足,使之各有各的优势和用处。三者的适用范围如下:Hadoop常用于离线的复杂的大数据处理;Spark常用于离线的快速的大数据处理;Storm常用于在线的实时的大数据处理。

那么,大数据的核心是什么?依笔者愚见,有三个方面:一是数据,没有数据扯啥都是白搭;二是技术,没有大数据的处理技术,那么数据也就只是一些磁盘;三是思想,有了数据和处理技术,还要有idea,也就是怎么让数据产生更大的价值。
大数据的核心,首先是有其价值,如果数据量很大,而没有价值,那么大数据也就没什么特别了,所以大数据最重要的就是我们能从大量数据中分析、挖掘出对组织有益的信息,当然了,到底有没有用,还得经过实际验证。
另外,就是速度得快,市场机会稍纵即逝,所以如果分析那么多数据,需要一个星期,或者一个月,那么可能意义也不大了。

Storm, Spark, Hadoop三个大数据处理工具谁将成为主流?其实这些只是表面不同的工具而已,本质上的思想是一致,相信未来还会有更多的工具涌现出来,但思想确很难有所变化,比如,你要想快,那么从计算机的体系结构来看,就得多内存,而少硬盘,因为硬盘太慢了。
另外,从处理问题的角度也是一样的,通过采用更多的资源,以分布式的方式,来同时处理那么的数据,速度也肯定会快,当然前提是,不同机器之间交互通信的成本,低于由此带来的益处。

storm是实时处理,spark和hadoop是批处理,两者是互补。而spark和hadoop比较的话,spark主要是充分利用内存计算并且支持更多的操作而不仅是map/reduce,这样有些迭代密集的算法执行效率会更高,而hadoop可能需要多个mr任务来完成。在2.0之后,hadoop使用了新的yarn框架,map/reduce只是其中一种默许了,spark也可以在hadoop的yarn框架下运行的,所以2者还会是融合的。

今后大数据的发展趋势,套用一条耳熟能详的口号就是,更快、更高、更强。不过也需要更加规范,这些个东西,A工具、B工具、C工具,感觉有点像一个个玩具,还不是一个成熟的产品,所以,以后可能会有专门的公司来做商业化的软件,更加成熟的软件。经过几年的酝酿应该会有更多的应用出现,除了互联网,在某些行业用户中也会有落地的成果。
Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐