目前,Spark作为一种高效的分布式计算系统,其价值已经在国内业界获得了广泛的认可和尊重。2013年中期,随着业务高速发展,越来越多的移动设备侧数据被各个不同的业务平台收集。那么这些数据除了提供不同业务所需要的业务指标,是否还蕴藏着更多的价值?为了更好地挖掘数据潜在价值,很多企业决定建造自己的数据中心,将各业务平台的数据汇集到一起,对覆盖设备的相关数据进行加工、分析和挖掘,从而探索数据的价值。 中培教育《大数据Hadoop与Spark架构应用实战》授课专家钟老师指出,随着Spark价值的日益彰显,目前国内专业领域已经出现了全面拥抱Spark的局面。
进入2014年,公司的业务有了长足的发展,对比数据中心平台建立时,每日处理的数据量亦翻了几番。每日的排名计算所花的时间越来越长,而基于Hive的即时计算只能支持日尺度的计算,如果到周这个尺度,计算所花的时间已经很难忍受,到月这个尺度则基本上没办法完成计算。基于在Spark上的认知和积累,是时候将整个数据中心迁移到Spark上了。
国内的很多同行已经开始采用Spark来建造自己的大数据平台,而Spark也变成了在ASF中最为活跃的项目之一。另外,越来越多的大数据相关的产品也逐渐在和Spark相融合或者在向Spark迁移。Spark无疑将会变为一个相比Hadoop MapReduce更好的生态系统,这无疑让那些拥抱Spark的人更多了一份动力。
当然,由于我国互联网领域对Spark的研究和应用还处于初级阶段,再加上Spark本身存在很多不足,因此在应用Spark时难免会出现一些问题和困难。
任何新技术的引入都会历经陌生到熟悉,从最初新技术带来的惊喜,到后来遇到困难时的一筹莫展和惆怅,再到问题解决后的愉悦,大数据新贵Spark同样不能免俗。钟老师指出,目前,Spark在运行时常常会出现以下两个方面的问题:
问题一:支撑大规模数据集运行时,会遇到org.apache.spark.SparkException: Error communicating with MapOutputTracke。
这个错误的显示往往比较隐晦,从错误日志看,是Spark集群partition了,但如果观察物理机器的运行情况,会发现磁盘I/O非常高。进一步分析会发现原因是Spark在处理大数据集时的shuffle过程中生成了太多的临时文件,造成了操作系统磁盘I/O负载过大。找到原因后,解决起来就很简单了,设置spark.shuffle.consolidateFiles为true。这个参数在默认的设置中是false的,对于linux的ext4文件系统,建议大家还是默认设置为true吧。Spark官方文档的描述也建议ext4文件系统设置为true来提高性能。
问题二:运行时报Fetch failure错。
在大数据集上,运行Spark程序,在很多情况下会遇到Fetch failure的错。由于Spark本身设计是容错的,大部分的Fetch failure会经过重试后通过,因此整个Spark任务会正常跑完,不过由于重试的影响,执行时间会显著增长。造成Fetch failure的根本原因则不尽相同。
查看Spark的运行日志,从而找到造成Fetch failure的根本原因。其中大部分的问题都可以通过合理的参数配置以及对程序进行优化来解决。2014年Spark Summit China上陈超的那个专题,对于如何对Spark性能进行优化,有非常好的建议。
当然,在使用Spark过程中还遇到过其他不同的问题,不过由于Spark本身是开源的,通过源代码的阅读,以及借助开源社区的帮助,大部分问题都可以顺利解决。
Spark在2014年取得了长足的发展,围绕Spark的大数据生态系统也逐渐的完善。Spark 1.3引入了一个新的DataFrame API,这个新的DataFrame API将会使得Spark对于数据的处理更加友好。同样出自于AMPLab的分布式缓存系统Tachyon因为其与Spark的良好集成也逐渐引起了人们的注意。鉴于在业务场景中,很多基础数据是需要被多个不同的Spark任务重复使用,下一步,我们将会在架构中引入Tachyon来作为缓存层。另外,随着SSD的日益普及,我们后续的计划是在集群中每台机器都引入SSD存储,配置Spark的shuffle的输出到SSD,利用SSD的高速随机读写能力,进一步提高大数据处理效率。
在机器学习方面,H2O机器学习引擎也和Spark有了良好的集成从而产生了Sparkling-water。相信利用Sparking-water,作为一家创业公司,我们也可以利用深度学习的力量来进一步挖掘数据的价值。
最后,钟老师总结道,相信随着Spark生态的日益完善,会有越来越多的企业将自己的数据处理迁移到Spark上来。而伴随着越来越多的大数据工程师熟悉和了解Spark,国内的Spark社区也会越来越活跃,Spark作为一个开源的平台,相信也会有越来越多的华人变成Spark相关项目的Contributor,Spark也会变得越来越成熟和强大。