Hadoop之Spark
Posted 我是IT客
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Hadoop之Spark相关的知识,希望对你有一定的参考价值。
Spark是由伯克利大学开发的分布式计算引擎,解决了海量数据流式分析的问题,是专门用来对那些分布式存储的大数据进行处理的工具,它并不会进行分布式数据的存储。Spark基于map reduce算法实现的分布式计算,拥有Hadoop MapReduce所具有的优点;但不同于MapReduce的是Job中间输出和结果可以保存在内存中,从而不再需要读写HDFS,因此Spark能更好地适用于数据挖掘与机器学习等需要迭代的map reduce的算法。
它首先将数据导入Spark集群,然后再通过基于内存的管理方式对数据进行快速扫描,通过迭代算法实现全局I/O操作的最小化,达到提升整体处理性能的目的,这与Hadoop从“计算”找“数据”的实现思路是类似的。但spark更适合于迭代运算比较多的ML和DM运算,因为它可把操作放到内存中,而MapReduce必须在磁盘上通过IO进行操作。
基本原理:构建在Spark上处理Stream数据的框架,基本的原理是将Stream数据分成小的时间片断(几秒),以类似batch批量处理的方式来处理这小部分数据。
Spark的设计初衷就是既可以在内存中又可以在磁盘上工作的执行引擎。当内存中的数据不适用时,Spark操作符就会执行外部操作。Spark可以用于处理大于集群内存容量总和的数据集。Spark会尝试在内存中存储尽可能多的数据然后将其写入磁盘。它可以将某个数据集的一部分存入内存而剩余部分存入磁盘。
spark是现在大数据中应用最多的计算模型,它与java8的stream编程有相同的风格。封装了很多的计算方法和模型,以延迟执行的方式,在真正需要执行的时候才进行运算。既可以有效的做计算过程的容错,也可以改善我们的编程模型。
但spark仍存缺陷和局限性,需要根据实际需要结合hadoop生态圈中的其它工具扬长避短。主要缺陷如下:
1、稳定性方面,由于代码质量问题,Spark长时间运行会经常出错,在架构方面,由于大量数据被缓存在RAM中,Java回收垃圾缓慢的情况严重,导致Spark性能不稳定,在复杂场景中SQL的性能甚至不如现有的Map/Reduce。
2、不能处理大数据,单独机器处理数据过大,或者由于数据出现问题导致中间结果超过RAM的大小时,常常出现RAM空间不足或无法得出结果。然而,Map/Reduce运算框架可以处理大数据,在这方面,Spark不如Map/Reduce运算框架有效。
3、不能支持复杂的SQL统计;目前Spark支持的SQL语法完整程度还不能应用在复杂数据分析中。在可管理性方面,SparkYARN的结合不完善,这就为使用过程中埋下隐忧,容易出现各种难题。
以上是关于Hadoop之Spark的主要内容,如果未能解决你的问题,请参考以下文章