内存计算Spark和SQLonHadoop黄永卿解决方案中心目录1内存计算Spark介绍2Spark核心要点3SQLonHadoop技术比较43+1大数据分析方案介绍安装配置与简介为什么需要SparkHadoop(MapReduce)极大的简化了大数据分析但是,随着大数据需求和使用模式的扩大,用户的需求也越来越多:更复杂的多重处理需求(比如迭代计算,ML,Graph)低延迟的交互式查询需求(比如ad-hocquery)MapReduce计算模型的架构导致上述两类应用先天缓慢,用户迫切需要一种更快的计算模型,来补充MapReduce的先天不足。内存计算,最大限度的使用内存!安装配置与简介什么是Spark不是一款修改过的Hadoop!是一款独立的,高速的,开源的分布式计算引擎:内存计算模式ResilientDistributedDatasets比Hadoop快40倍以上安装配置与简介Spark目的快目录2Spark/Shark核心要点1内存计算Spark/Shark介绍3SQLonHadoop技术比较43+1大数据分析方案介绍安装配置与简介Spark数据共享机制iter.1iter.2...InputHDFSreadHDFSwriteHDFSreadHDFSwriteInputquery1query2query3result1result2result3...HDFSread太慢,冗余读写、序列化、磁盘IODataSharinginMapReduce安装配置与简介Spark数据共享机制10-100x快于网络和磁盘DataSharinginSparkiter.1iter.2...InputDistributedmemoryInputquery1query2query3...one-timeprocessing安装配置与简介Spark弹性分布式数据集弹性分布式数据集(ResilientDistributedDatasets)Adistributedmemoryabstractionthatletsprogrammersperformin-memorycomputationsonlargeclusters只读的,可分区的分布式数据集只能直接通过操作符来创建和处理支持容错处理RDDOperations安装配置与简介Spark弹性分布式数据集lines=spark.textFile(“hdfs://...”)errors=lines.filter(_.startsWith(“ERROR”))cachedMsgs=messages.cache()Block1Block2Block3WorkerWorkerWorkerDrivercachedMsgs.filter(_.contains(“MySQL”)).countcachedMsgs.filter(_.contains(“HDFS”)).count...tasksresultsCache1Cache2Cache3BaseRDDTransformedRDDActionResult:full-textsearchofWikipediain1sec(vs20secforon-diskdata)Result:scaledto1TBdatain5-7sec(vs170secforon-diskdata)例子:假定有一个大型网站出错,操作员想要检查Hadoop文件系统(HDFS)中的日志文件(TB级大小)来找出原因。通过使用Spark,操作员只需将日志中的错误信息装载到一组节点的RAM中,然后执行交互式查询。安装配置与简介Spark容错机制iter.1iter.2...InputDistributedmemoryInputquery1query2query3...one-timeprocessing快的同时,也要保证系统鲁棒性安装配置与简介Spark容错机制血统关系(Lineage):记录RDD是如何从其它RDD中演变过来的一系列操作一般来说,分布式数据集容错采用两种方式:checkpoint备份或者LOG机制当这个RDD的部分分区数据丢失时,它可以通过Lineage获取足够的信息来重新运算和恢复丢失的数据分区采用粗颗粒的数据模型,性能的提升安装配置与简介Spark容错机制在HadoopRDD上执行filter操作,得到errors,然后再filter、map后得到新的RDD,在这个RDD上执行collect行为,如果某个errorsRDD分区丢失,Spark只在相应的HadoopRDD分区上执行filter操作来重建该errors分区E.g:messages=textFile(...).filter(_.startsWith(“ERROR”)).map(_.contains(“MySQL”)(2))HadoopRDDpath=hdfs://…ErrorRDDfunc=_.contains(...)MySQLRDDfunc=_.split(…)安装配置与简介资源管理与作业调度Spark对于资源管理与作业调度可以使用Standalone(独立模式),ApacheMesos及HadoopYARN来实现,SparkonYARN如下:安装配置与简介资源管理与作业调度调度器根据RDD的结构信息为每个行为(action)确定有效的执行计划,调度策略与Dryad类似。调度器根据RDD的血统关系图(lineagegraph)创建一个由stage构成的无回路有向图(DAG);调度器根据数据存放的位置分配任务,以最小化通信开销。如果某个任务需要处理一个已缓存分区,则直接将任务分配给拥有这个分区的节点。否则,如果需要处理的分区位于多个可能的位置,则将任务分配给这一组节点。目录1内存计算Spark简介2Spark核心要点3SQLonHadoop技术比较43+1大数据分析方案介绍安装配置与简介SQLonHadoop•GoogleDremel[GA]•MapRDrill[Dev]•FacebookPresto[GA]•ClouderaImpala[GA]•Spark/Shark[Release]•ApacheStinger[Dev]•EMCGreenplum/HAWQ[GA]HDFSMapReduceHivePigImpala/Spark/Stinger/Presto/HAWQ高性能,低延迟!安装配置与简介HIVE•HIVE是什么–HIVE是一个在Hadoop上构建数据仓库的软件,它支z支持通过类SQL的HQL语言操作结构化的数据–Facebook的第一代HadooponSQL•HIVE优势–实现了基本的SQL功能–可扩充UDF/UDAF–可自定义SerDe–Thrift协议,支持多语言客户端•HIVE劣势–太慢–SQLonHadoop过渡产品安装配置与简介Presto•Presto是什么–Presto是一个分布式SQL查询引擎,它被设计为用来专门进行高速、实时的数据分析。它支持标准的ANSISQL,包括复杂查询、聚合(aggregation)、连接(join)和窗口函数–Facebook的第二代HadooponSQL•Presto优势–支持标准的ANSISQL–支持复杂查询、聚合(aggregation)、连接(join)和窗口函数–支持多种底层存储数据源–10-40XHIVE–支持近似估计操作•Presto劣势–不支持UDF–Read-Only–新开源,资料少–通用性有待考察安装配置与简介Impala•Impala是什么–参考GoogleDremel思想的MPP(MassivelyParallelProcessing)数据库引擎•Impala优势–查询性能好100XHIVE–支持大表Join–Thrift协议,支持多语言客户端•Impala劣势–不支持groupby的列排序–不支持UDF–不支持像Hive的Serializer/Deserializer–不支持faulttolerance“从长远看,Impala将取代Hive,但目前Hive的安装基数很大,关联的应用很多,所以Impala不会很快取代Hive”--Coudera首席执行官MikeOlson安装配置与简介Tez/Stinger•Tez/Stinger是什么–Tez是支持DAG作业的计算框架,将多个有依赖的作业转换为一个作业,从而大大提升DAG作业的性能。–StingerisHIVEonTez–Stinger=Hive0.11+Tez•Stinger优势–兼容原Hive,具有Hive的所有优势–40-100xHive–支持容错•Stinger劣势–进展缓慢–稳定性差安装配置与简介Spark/Shark•Shark是什么–HIVEonSpark的实现–Spark上的数据仓库•Shark优势–兼容原Hive,具有Hive的所有优势–40-100xHive–支持容错–开源•Shark劣势–稳定性差[release0.8.0]–SparkonYARN兼容性有待考察MetastoreHDFSClientDriverSQLParserPhysicalPlanExecutionCLIJDBCSparkCacheMgr.QueryOptimizer安装配置与简介Phoenix•Phoenix是什么–Salesforce开源的基于HBase的SQL查询系统–更像是一个用于简单单表查询,过滤,排序,检索的OLTP系统,而不是优化的OLAP系统•Phoenix优势–HBase默认存储的数据类型都是字符串,但Phoenix支持更多的数据类型–使用JDBC操作数据,而不是HBaseclientAPI–支持Hbase二级索引–简单的低延迟查询,其量级为毫秒;对于百万级别的行数来说,其量级为秒•Phoenix劣势–不支持Join–性能提高不是很明显,特别是大数据量–目前只在Salesforce内部使用,支持较少安装配置与简介HAWQ•HAWQ是什么–让Greenplum数据库运行在HDFS之上–查询引擎仍然采用GPDB•HAWQ优势–查询性能好100XHIVE,但差于原GPDB–GreenplumDB的一切优势(groupby,join…)•HAWQ劣势–不支持HiveUDF–不支持像Hive的Serializer/Deserializer–付费产品安装配置与简介总结系统名称SQL类型执行引擎是否UDF是否容错是否开源商业支持HDFS兼容综合HiveHQLMapReduceYesYesYesYesYes***SharkHQLSparkYesYesYesNoYes*****ImpalaSomeHQL+someextensionsDBMSNoNoYesYesYes*****StingerHQLYARN+TezYesYesYesYesYes****PrestoANSISQLPrestoNoNoYesNoYes**HAWQSQL-92DBMSNoNoNoYesYes目录1内存计算Spark介绍2Spark核心要点3SQLonHadoop技术比较43+1大数据分析方案介绍安装配置与简介ClouderaSolution安装配置与简介HortonworksSolution安装配置与简介PivotalSolution安装配置与简介BerkeleySolution资源管理数据处理数据存储管理MesosMPIStorm…SparkSparkStreamingSharkBlinkDBHDFSTachyonMapReduceHIVEPigSparkGraphMLbase谢谢!