• 1. 内存计算Spark和 SQL on Hadoop 黄永卿 解决方案中心
  • 2. 目录1内存计算Spark介绍2Spark核心要点3SQL on Hadoop技术比较43+1大数据分析方案介绍
  • 3. 安装配置与简介为什么需要SparkHadoop(MapReduce)极大的简化了大数据分析 但是,随着大数据需求和使用模式的扩大,用户的需求也越来越多: >>更复杂的多重处理需求(比如迭代计算, ML, Graph) >>低延迟的交互式查询需求(比如ad-hoc query) MapReduce计算模型的架构导致上述两类应用先天缓慢,用户迫切需要一种更快的计算模型,来补充MapReduce的先天不足。内存计算, 最大限度的使用内存!
  • 4. 安装配置与简介什么是Spark不是 一款修改过的Hadoop! 是 一款独立的,高速的,开源的分布式计算引擎: >> 内存计算模式 >> Resilient Distributed Datasets >> 比Hadoop快40倍以上
  • 5. 安装配置与简介Spark目的快
  • 6. 目录2Spark/Shark核心要点1内存计算Spark/Shark介绍3SQL on Hadoop技术比较43+1大数据分析方案介绍
  • 7. 安装配置与简介Spark数据共享机制iter. 1iter. 2. . .InputHDFS readHDFS writeHDFS readHDFS writeInputquery 1query 2query 3result 1result 2result 3. . .HDFS read太慢,冗余读写、序列化、磁盘IOData Sharing in MapReduce
  • 8. 安装配置与简介Spark数据共享机制10-100x快于网络和磁盘Data Sharing in Sparkiter. 1iter. 2. . .InputDistributed memoryInputquery 1query 2query 3. . .one-time processing
  • 9. 安装配置与简介Spark弹性分布式数据集弹性分布式数据集(Resilient Distributed Datasets) >>A distributed memory abstraction that lets programmers perform in-memory computations on large clusters >>只读的,可分区的分布式数据集 >>只能直接通过操作符来创建和处理 >>支持容错处理 RDD Operations
  • 10. 安装配置与简介Spark弹性分布式数据集lines = spark.textFile(“hdfs://...”) errors = lines.filter(_.startsWith(“ERROR”)) cachedMsgs = messages.cache()Block 1Block 2Block 3WorkerWorkerWorkerDrivercachedMsgs.filter(_.contains(“MySQL”)).countcachedMsgs.filter(_.contains(“HDFS”)).count. . .tasksresultsCache 1Cache 2Cache 3Base RDDTransformed RDDActionResult: full-text search of Wikipedia in <1 sec (vs 20 sec for on-disk data)Result: scaled to 1 TB data in 5-7 sec (vs 170 sec for on-disk data)例子:假定有一个大型网站出错,操作员想要检查Hadoop文件系统(HDFS)中的日志文件(TB级大小)来找出原因。通过使用Spark,操作员只需将日志中的错误信息装载到一组节点的RAM中,然后执行交互式查询。
  • 11. 安装配置与简介Spark容错机制iter. 1iter. 2. . .InputDistributed memoryInputquery 1query 2query 3. . .one-time processing快的同时,也要保证系统鲁棒性
  • 12. 安装配置与简介Spark容错机制血统关系(Lineage):记录RDD是如何从其它RDD中演变过来的一系列操作 >>一般来说,分布式数据集容错采用两种方式:checkpoint备份或者LOG机制 >>当这个RDD的部分分区数据丢失时,它可以通过Lineage获取足够的信息来重新运算和恢复丢失的数据分区 >>采用粗颗粒的数据模型,性能的提升
  • 13. 安装配置与简介Spark容错机制在Hadoop RDD上执行filter操作,得到errors,然后再filter、map后得到新的RDD,在这个RDD上执行collect行为,如果某个errorsRDD分区丢失,Spark只在相应的HadoopRDD分区上执行filter操作来重建该errors分区 E.g:messages = textFile(...).filter(_.startsWith(“ERROR”)) .map(_.contains(“MySQL”)(2)) HadoopRDD path = hdfs://…ErrorRDD func = _.contains(...)MySQLRDD func = _.split(…)
  • 14. 安装配置与简介资源管理与作业调度Spark对于资源管理与作业调度可以使用Standalone(独立模式),Apache Mesos及Hadoop YARN来实现,Spark on YARN如下:
  • 15. 安装配置与简介资源管理与作业调度调度器根据RDD的结构信息为每个行为(action)确定有效的执行计划,调度策略与Dryad类似。调度器根据RDD的血统关系图(lineage graph)创建一个由stage构成的无回路有向图(DAG);调度器根据数据存放的位置分配任务,以最小化通信开销。如果某个任务需要处理一个已缓存分区,则直接将任务分配给拥有这个分区的节点。否则,如果需要处理的分区位于多个可能的位置,则将任务分配给这一组节点。
  • 16. 目录1内存计算Spark简介2Spark核心要点3SQL on Hadoop技术比较43+1大数据分析方案介绍
  • 17. 安装配置与简介SQL on HadoopGoogle Dremel[GA] MapR Drill [Dev] Facebook Presto[GA] Cloudera Impala[GA] Spark/Shark[Release] Apache Stinger [Dev] EMC Greenplum/HAWQ [GA]HDFSMap ReduceHivePig Impala/Spark/Stinger/Presto/HAWQ 高性能,低延迟!
  • 18. 安装配置与简介HIVEHIVE是什么 HIVE是一个在Hadoop上构建数据仓库的软件,它支z支持通过类SQL的HQL语言操作结构化的数据 Facebook的第一代Hadoop on SQL HIVE优势 实现了基本的SQL功能 可扩充UDF/UDAF 可自定义SerDe Thrift协议,支持多语言客户端 HIVE劣势 太慢 SQL on Hadoop过渡产品
  • 19. 安装配置与简介PrestoPresto是什么 Presto是一个分布式SQL查询引擎, 它被设计为用来专门进行高速、实时的数据分析。它支持标准的ANSI SQL,包括复杂查询、聚合(aggregation)、连接(join)和窗口函数 Facebook的第二代Hadoop on SQL Presto优势 支持标准的ANSI SQL 支持复杂查询、聚合(aggregation)、连接(join)和窗口函数 支持多种底层存储数据源 10-40X HIVE 支持近似估计操作 Presto劣势 不支持UDF Read-Only 新开源,资料少 通用性 有待考察
  • 20. 安装配置与简介ImpalaImpala是什么 参考Google Dremel思想的MPP (Massively Parallel Processing)数据库引擎 Impala优势 查询性能好100X HIVE 支持大表Join Thrift协议,支持多语言客户端 Impala劣势 不支持group by的列排序 不支持UDF 不支持像Hive的Serializer/Deserializer 不支持fault tolerance “从长远看,Impala将取代Hive,但目前Hive的安装基数很大,关联的应用很多,所以Impala不会很快取代Hive” --Coudera首席执行官Mike Olson
  • 21. 安装配置与简介Tez/StingerTez/Stinger是什么 Tez是支持DAG作业的计算框架,将多个有依赖的作业转换为一个作业,从而大大提升DAG作业的性能。 Stinger is HIVE on Tez Stinger = Hive 0.11 + Tez Stinger优势 兼容原Hive, 具有Hive的所有优势 40-100x Hive 支持容错 Stinger劣势 进展缓慢 稳定性差
  • 22. 安装配置与简介Spark/SharkShark是什么 HIVE on Spark的实现 Spark上的数据仓库 Shark优势 兼容原Hive, 具有Hive的所有优势 40-100x Hive 支持容错 开源 Shark劣势 稳定性差[release 0.8.0] Spark on YARN 兼容性有待考察 Meta storeHDFS ClientDriverSQL ParserPhysical PlanExecutionCLIJDBCSparkCache Mgr.Query Optimizer
  • 23. 安装配置与简介PhoenixPhoenix是什么 Salesforce开源的基于HBase的SQL查询系统 更像是一个用于简单单表查询,过滤,排序,检索的OLTP系统,而不是优化的OLAP系统 Phoenix优势 HBase默认存储的数据类型都是字符串,但Phoenix支持更多的数据类型 使用JDBC操作数据,而不是HBase client API 支持Hbase二级索引 简单的低延迟查询,其量级为毫秒;对于百万级别的行数来说,其量级为秒 Phoenix劣势 不支持Join 性能提高不是很明显,特别是大数据量 目前只在Salesforce内部使用,支持较少
  • 24. 安装配置与简介HAWQHAWQ是什么 让Greenplum数据库运行在HDFS之上 查询引擎仍然采用GPDB HAWQ优势 查询性能好100X HIVE ,但差于原GPDB Greenplum DB的一切优势(groupby,join…) HAWQ劣势 不支持Hive UDF 不支持像Hive的Serializer/Deserializer 付费产品
  • 25. 安装配置与简介总结系统名称SQL类型执行引擎是否UDF是否容错是否开源商业支持HDFS兼容综合HiveHQLMapReduceYesYesYesYesYes***SharkHQLSparkYesYesYesNoYes*****ImpalaSome HQL + some extensionsDBMSNoNoYesYesYes*****StingerHQLYARN+TezYesYesYesYesYes****PrestoANSI SQLPrestoNoNoYesNoYes**HAWQSQL-92DBMSNoNoNoYesYes
  • 26. 目录1内存计算Spark介绍 2Spark核心要点3SQL on Hadoop技术比较43+1大数据分析方案介绍
  • 27. 安装配置与简介Cloudera Solution
  • 28. 安装配置与简介Hortonworks Solution
  • 29. 安装配置与简介Pivotal Solution
  • 30. 安装配置与简介Berkeley Solution资源 管理数据 处理数据 存储 管理MesosMPIStorm…SparkSpark StreamingSharkBlinkDB HDFSTachyonMapReduceHIVEPigSpark GraphMLbase
  • 31. (本页无文本内容)