庞晓杰

又一个WordPress站点

英雄闯天关使用Spark提升传统Hadoop集群的计算能力-中国移动大数据

使用Spark提升传统Hadoop集群的计算能力-中国移动大数据

英雄闯天关
一、Spark的应用背景
Apache Spark 是专为大规模数据处理而设计的快速通用的计算引擎,拥有Hadoop MapReduce所具有的优点小宝贝快快睡。但不同于MapReduce的是它会在内存中以接近实时的时间完成所有的数据分析,从集群中读取数据,完成所有必须的分析处理吴家丽三级 ,将结果写回集群。对于动态数据实时分析而言,尤其是需要迭代的计算,Spark要比Hadoop性能更为优越。
二、Spark和Hadoop的并行模式
Spark和Hadoop采用了类似的异步并发模型,但在任务级别(特指 Spark任务和MapReduce任务)上却采用了不同的并行机制:Hadoop MapReduce采用了多进程模型,而Spark采用了多线程模型。1. Hadoop MapReduce多进程模型

图1中,每个Task 运行在一个独立的JVM 进程中,每个Task 运行完后,将释放所占用的资源,这些资源不能被其他Task 复用,即使是同一个作业相同类型的Task。也就是说上山诗纳,每个Task 都要经历“申请资源--> 运行Task--> 释放资源”的过程。可单独为不同类型的Task 设置不同的资源量,目前支持内存和CPU 两种资源。2. Spark的多线程模型

图2中,每个节点上可以运行一个或多个Executor 服务,每个Executor 单独运行在一个JVM 进程中,每个Task 则是运行在Executor中的一个线程。同一个Executor 内部的Task 可共享内存中的文件或者数据结构等,而不会像MapReduce 那样,每个Task 加载一次。Executor 一旦启动后,将一直运行,且它的资源可以一直被Task复用,直到Spark程序运行完成后才释放退出。姜贞羽3. 两种模式的比较
总体上看,每个Spark 应用程序运行的第一步是构建一个可重用的资源池,然后在这个资源池里运行所有的ShuffleMapTask 和ReduceTask,而 MapReduce 应用程序则不同百老汇爵士乐,它不会构建一个可重用的资源池,而是让每个Task 动态申请资源蔻蔻网,且运行完后马上释放资源爆碎牙 。Spark官方做过一个简单的迭代算法的测试三峡枝江网 ,在100GB作业中回春坊,内存够用的情况下,MapReduce每次迭代需要110秒,因为每次迭代需从磁盘加载数据,而Spark在第一次加载后每次迭代只需要一秒水云姬 。
三、解决方案
虽然Spark有这么大的优势,但是暂时还无法完全取代Hadoop泰山闯天关 , 他擅长的是动态数据实时分析和迭代计算。这些年来,安徽移动已经搭建了多个Hadoop集群何天心,有些集群的规模还比较大飞龙相公。如何复用当前已有集群的资源和数据,提高集群计算能力和资源利用率,减少重复投入,成为当前亟待解决的问题。Spark的Spark on YARN模式完美地解决了这个问题,将Spark和Hadoop结合在一起希普曼,发挥各自的优势。1. Spark on YARN模式

图3中,Spark的Driver进程运行在Client中,负责初始化SparkContext。SparkContext初始化完后与Hadoop YARN的ApplicationMaster进行通讯,以此来监控调度Task的运行。而ApplicationMaster仅负责申请资源,在集群内进行计算。在这种模式下,不需要单独搭建Spark集群,只需要在提交程序的客户机器上运行Spark程序即可,Driver进程也运行在这台机器上。2. Spark和Hadoop各组件的相互协作
Hadoop的YARN资源管理器负责在集群节点进行任务调度。分布式文件系统HDFS,在集群耗尽可用内存时能存储数据,也能在 Spark不运行的时候存储历史数据。此外,Hadoop还提供了增强的数据安全性,这是产品工作负载的关键,特别是在受到严格监管的行业。Spark本身并没有提供分布式文件系统,Spark的分析大多依赖于Hadoop的分布式文件系统HDFS。在该模式下Spark的Client程序仅负责提交任务,监控调度的运行。3. 应用效果
因为传统Hadoop集群的局限性,当前的Hadoop集群已无法满足某些业务实时性和计算需求较高的业务。在采用Spark on YARN模式对集群的任务进行改造后,经过测试,Hadoop集群的计算能力平均提高10倍左右文俊辉 。因此将两者结合,不仅可以提升Hadoop集群的资源利用率,还可以提升实时性和计算能力,为移动的业务发展提供更有力的支持。