返回 登录
0

中国Spark技术峰会(上):Spark与生态圈中组件结合实战

5月13日-15日,由全球最大中文IT社区CSDN主办的“2016中国云计算技术大会”(Cloud Computing Technology Conference 2016,简称CCTC 2016)在北京新云南皇冠假日酒店隆重举行,这也是本年度中国云计算技术领域规模最大、海内外云计算技术领袖齐聚、专业价值最高的一场云计算技术顶级盛宴。本次大会以“技术与应用、趋势与实践”为主题,聚焦最纯粹的技术干货分享,和最接地气的深度行业案例实践,汇聚国内外顶尖技术专家,共论最新的云计算技术实践与发展趋势。

大会第三天,在中国Spark技术峰会上午场,来自Databricks、Hortonworks、腾讯、Elastic的五位嘉宾就Spark 2.0大版本中的新特性以及各行业内实践与在场的Spark爱好者进行了互动分享。

图片描述

七牛云技术总监 陈超

本次2016中国Spark技术峰会在七牛云技术总监陈超的主持下拉开帷幕,峰会吸引了大量来自各行业的Spark爱好者,现场座无虚席。在开场发言中,陈超首先对峰会进行了简单的回顾:Spark峰会由CSDN主办,现已是第三届,在第一年,峰会大体目的是让大家知道Spark是什么,第二年则是关注如何通过Spark的各个组件去实现业务,而到了本届,首先是让大家了解Spark 2.0这个大版本中的新特性,其次是一些大机构的用例,最后还会有与生态圈中的组件结合。

Databricks、Spark开源版PM、Spark PMC成员Ram Sriharsha:Magellan,Spark as a Geospatial Analytics Engine

第一位登场的演讲嘉宾是Databricks,Spark开源版PM,Spark PMC成员Ram Sriharsha,他本次分享的主题是《Magellan: Spark as a Geospatial Analytics Engine》,他主要从Geospatial Analytics简介、Magellan中的基本操作、Magellan中使用的算法、Magellan与Spark SQL联合工作四个方面展开了此次演讲。他认为Geospatial Analytics并非简单的BI,它应该包括近邻查询和地图匹配两种功能。

图片描述

Databricks,Spark开源版PM,Spark PMC成员 Ram Sriharsha

紧接着,他由详细介绍了Magellan中的读取公共数据、空间链接、近邻查询等基本操作。谈到Join实现时,他介绍到Magellan继承了Spark SQL中的所有Join优化方式,如果 Neighborhoods 表很小时,采用Broadcast Cartesian Join;相反情况,如果表很大,采用Cartesian Join方式。他提到Magellan 1.0.3目前已经封装成了Spark Package,Magellan 1.0.4 将会在今年六月底发布。在谈到降维方式时,他认为一个好的降维方式应该从近似保存周围空间、范围查询、小/无碰撞(Little/ no collision)三个方面入手;对于 Speed up Join方面,可以从预处理点(Index每一个点到一个单独的geohash)、预处理多边形(Index每个多边形到一组geohash)、在 Geohash 内部进行连接、筛选出边缘情况四个方面解决。演讲最后,他欢迎在场的听众积极参与到Magellan的开发中,希望与大家共同努力,在于Spark整合、数据格式、地图匹配等方面有更新的突破。

Hortonworks技术专家邵赛赛:Spark and YARN: Better Together

来自Hortonworks的技术专家邵赛赛演讲主题是《Spark and YARN: Better Together》,他主要从Spark on YARN Recap、如何更好地在YARN运行 Spark、Spark On YARN未来工作重点三部分展开了此次分享。开场之初,他首先对Spark的架构做了简短的回顾。与其他集群管理工具相比较,在YARN上运行Spark,要求应用必须申请提交进入队列,同时Jars/files/archives 采用分布式缓存,此外还需要额外的ApplicationMaster。

在架构上运行Spark时,我们考虑更多的是如何更好地利用资源;如何更好地运行集群,以及更优的调试。Spark在YARN上运行时,通过隔离Container资源、动态资源分配、服务弹性重启等操作,更好地利用资源、更好地运行集群,同时调试也变得更加简单。

图片描述

Hortonworks技术专家 邵赛赛

在资源隔离一节,他讲到Container 只允许使用它们所分配的资源,并且节点与节点之上的Container互不干扰。Spark运行在YARN上时,Container是基于局部偏好分配的;同时支持通过Kerberos接入 Kerberized Hadoop 环境。如果Hadoop环境是安全启用的,它会自动获取NN的进入许可。紧接着,他提到了Spark运行在YARN上时经常会面对Classpath、Java parameters 不工作、Configuration配置不生效等问题,因此可快速调试显得尤为重要。未来,他谈到Spark On YARN工作的重点应该放在更先进动态资源分配、整合 YARN 应用时间服务器、长时间运行支持、辅助服务分离这四个方面。

腾讯高级软件工程师林立伟:Spark Streaming 在腾讯广点通的应用

腾讯高级软件工程师林立伟带来的分享是《Spark Streaming 在腾讯广点通的应用》。他本次分享的重点是Spark Streaming基本架构和Spark Streaming在广点通中的应用。

他首先向在场的听众介绍了广点通功能以及其使用Spark Streaming的过程。他谈到:Spark Streaming 1.2 版本加入了 Driver 的故障恢复以后,Spark Streaming 程序就可以长时间稳定的运行了,我们也就开始将其部署到生产环境中使用了。

Spark Streaming 可以接收多种数据源的实时数据,然后经过实时处理,再把数据写到不同的数据存储中。同时在计算过程中,可以与 Spark SQL 和 MLLib 进行交互;在实现层面上,Spark Streaming 可以在 WorkerNode 起 Receiver 来进行数据接收;然后在 driver 端,对接收到的数据进行一个信息汇总,并依靠下层的 Spark 提供的 SparkContext,下发数据计算任务到 Worker Node,再由 Worker Node 进行真正的数据处理,并把结果写出。

具体到在广点通的话,腾讯正式线上在跑的 Spark Streaming 应用数在 30 个左右,占据的资源在 2000 个 Core 左右,每天处理的数据总量是 70 TB 左右,那么这里的数据量是指序列化后二进制的数据大小,展开为未序列化的文本的量的话还大很多。单个 Spark Streaming 应用的Peak rate 的话,是达到每秒钟 60w 条输入数据。

图片描述

腾讯高级软件工程师 林立伟

在Spark Streaming 的Batch 调度这一节,他谈到如果想周期性跑一个 MapReduce 程序,一般是基于 Ozzie 来进行调度。但这种情况下是一级的调度,每调度一个实例时,需要与状态的DB 进行交互,包括状态更新、依赖重计算等。这个时候状态DB可能成为瓶颈,导致不能调度实例调度的特别频繁,调度间隔不能太短。此外,一级调度之后还需要申请资源、下发 Jar 包、创建进程等动作,会有一定的启动时间,即使调度完成,计算是过一会再开始进行。演讲最后,他与在座听众分享了腾讯内部性能优化的经验,包括增Memory Back Pressure等方式。

Elastic开发工程师与布道师曾勇:Elasticsearch 与大数据

Elastic开发工程师与布道师曾勇本次演讲的主题是《Elasticsearch 与大数据》。 他谈到Hadoop及其小伙伴在处理海量数据、存储处理任何数据、批量和流式处理等方面具有优势,但是在随机访问 - HDFS 顺序读写、支持索引来快速访问数据和进行搜索等方面就不是那么得心应手了。

图片描述

Elastic开发工程师与布道师 曾勇

因此,他引出了Elasticsearch ,Elasticsearch是一个开源的、分布式的、可扩展的、以文本为导向、安全的全文搜索引擎,具有实时搜索和分析能力,常被用于解决IT操作、安全分析、市场预测等实例中。接下俩他介绍到ES-Hadoop的组件包括Compute、Resource Mgmt和Storage三部分。其中Compute包括Spark、Hive、Storm、M/R、Cascading、Pig等;Storage支持Snapshot/Restore on HDFS。同时ES-Hadoop整合了native Spark ,提供了Scala和Java API,兼容Scala和Java类型,并提供了Spark package。
ES-hadoop支持所有的Spark SQL中的全部 filters :

  • EqualTo/EqualNullSafe;
  • GreaterThan/GreaterThanOrEqual/LessThan/LessThanOrEqual;
  • In/ IsNull/IsNotNull;
  • And/Or/Not;
  • StringStartsWith/StringEndsWith/StringContains。

他还向在场的听众介绍了Raw Real-time Architecture,源数据经过Kafka之后,对于丰富的、近实时性数据交到ES-Hadoop中处理,然后存在Kibana中;对于元数据或实时数据在Logstash中处理,然后存在Elasticsearch中。演讲结尾,他提到Elastic Stack v5 即将到来,并邀请在座的听众加入Elastic Community。针对听众提出的数据访问、启动延迟高等问题做了精彩的回答。

Apache Spark committer,Databricks 软件工程师范文臣:Dataset in Spark SQL

上午场最后一位登场的嘉宾是 Apache Spark committer,Databricks 软件工程师范文臣,他分享的主题是《Dataset in Spark SQL》。谈到为什么选择Spark,他认为有两点原因:一是高效,将处理数据存储在内存中,运行速度很快;二是易用性,支持多语言的API,很容易扩展到其他语言上。他谈到Spark的每次的更新和Spark 2.0都在朝着这两个方向努力,但是在努力的过程中,发现模型有一点托后退。其问题出在计算的函数上,由于函数是不透明的,用户可以在里面做任何的事情,无法进行优化;另外就是类型器不透明,无法得知其具体结构,就无法高效地操作它。另外在API层面,RDD的表现力也不强。

图片描述

Apache Spark committer,Databricks 软件工程师 范文臣

随后,他详细介绍了Spark SQL,其用于更快、更容易地处理结构化数据,同时可以访问各种数据源,包括Hive、 Avro、 Parquet、 ORC、JSON和JDBC。演讲中,他重点介绍了本次分享的主角:Dataset,Dataset是DataFrame的安全版本,同时也是RD的结构化版本。它提供了一个安全类型,通过可编译Lambda功能对目标域对象进行操作。但是有一点值得注意的是,这种安全类型不是免费的。在Spark 2.0中,不仅整合了DataFrame和Dataset[Row]两个APIs,采用强类型的方法低垂通用行对象,同时要求Spark SQL使用df.as在通用行上加强类型。演讲最后,他提到了未来的计划:一是支持更多的类型;二是支持用户自定义函数。

更多精彩内容,请关注直播专题2016中国云计算技术大会(CCTC),新浪微博@CSDN云计算,订阅CSDN云计算官方微信公众号。

评论