从上述内容可以看出,Hadoop在数据挖掘过程中遇到了很多问题,所以需要寻求更好的平台来解决数据挖掘问题。
根据实验,淘宝最后选择了SparkOnYARN的解决方案。为什么淘宝最后的选择是Spark呢?有如下几点原因。
(1)RDD
Spark使用抽象的弹性分布式数据RDD,它具有基于内存计算,能快速迭代,支持DAG的特点,适合数据挖掘、机器学习需要迭代的作业。
(2)Scala
Scala支持函数式编程,精简灵活,有Actor模型,支持高并发,适合分布式计算。
(3)Hadoop
不仅支持MapReduce编程,还提供更多的方法(如join,filter,flatmap等),此外能与Hadoop生态融合,有类似Hive的SparkSQL和能支持从HDFS存取数据,可以与Hadoop混合应用。
淘宝在较早的时候已经开始了Spark的研究,下面来了解一下淘宝的Spark之路,如图10-1[6]所示。
图10-1 淘宝的Spark之路
由图中可以看出,淘宝一直在完善自己的Spark平台,他们的Spark平台已经越来越成熟。下面来了解一下淘宝SparkOnYARN的框架图,如图10-2所示。(www.xing528.com)
图10-2 Spark On YARN框架图
从图中可以看出Spark on YARN发起一个请求,会找到一个Node Manager,然后会启动Application Master,AppMaster启动完毕,会向ResourceManager请求Container,ResourceManager会找到Node Manager机器启动Container,作为Executor容器,真正的交互是在ContainerBackend和YarnClusterManager之间进行的。YARN作为资源管理器,隔离了计算调度和资源调度功能,方便了YARN上不同的应用架构共享存储资源。
了解了淘宝SparkonYARN框架的一个运行流程,下面来继续了解淘宝内部Spark应用的开发流程。
淘宝内部Spark应用开发流程如图10-3所示。
图10-3 淘宝Spark应用开发流程
淘宝推荐系统,如图10-4所示,综合运用了Spark、SparkMLlib和Sparkstreaming,将它们组成包含离线、近线和在线的立体三维分析系统,覆盖了淘宝的绝大部分业务。
图10-4 淘宝推荐系统架构
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。