2016中国spark技术峰会见闻摘要

简介: 5-15号笔者参加了2016中国spark技术峰会,各演讲嘉宾分享了很多spark实践经验,本文整理了笔者印象比较深的内容,ppt详见峰会ppt 《spark and yarn :better together》 Hortonworks技术专家邵赛赛分享了spark如何更好地跑在yarn上,主要

5-15号笔者参加了2016中国spark技术峰会,各演讲嘉宾分享了很多spark实践经验,本文整理了笔者印象比较深的内容,ppt详见峰会ppt

《spark and yarn :better together》

Hortonworks技术专家邵赛赛分享了spark如何更好地跑在yarn上,主要以下三点:

  • Better use the resources
  • Better run on cluster
  • Easy to debug

Better use the resources
使用资源讲了计算内存和CPU,内存有几个公式,要注意不要 将spark executor的内存总和分配的太接近容器内容,要给堆外内存留一些空间:

  • container memory = spark executor memory + overhead memory
  • yarn.scheduler.minimum-allocation-mb <= container memory <= yarn.nodemanager.resource.memory-mb
  • container memory will be round to yarn.scheduler.increment-allocation-mb

cpu有个公式是container cores <= nodemanger.resource.cpu-vcores,yarn可以用cgroup做物理隔离

Better run on cluster
hadoop 2.6支持给节点打标签label,可以让spark调度到你指定的节点上。

spark支持动态申请或释放executor,对于长期运行的应用很有用。可以通过以下的配置打开动态 资源分配

spark.streaming.dynamicAllocation.enabled true
spark.shuffle.service.enabled true
<property>
<name>yarn.nodemanager.aux-services.spark_shuffle.class</name>
<value>org.apache.spark.network.yarn.YarnShuffleService</value>
</property>

要想保证集群的高可用,应该配置关键节点自动重启,RM应该配置yarn.resourcemanager.ha.enabled,yarn.resourcemanager.recovery.enabled,NM应该配置yarn.nodemanager.recovery.enabled (hadoop 2.6)

Easy to debug
${yarn.nodemanager.local-dirs}/usercache/${user}/appcache/application_${appid}/container_${contid} 该目录底下有详情的运行参数信息,可以用来方便的debug排查问题。

《Spark Streaming在腾讯广点通的应用》

腾讯高级软件工程师林立伟分享了spark streaming的实践,主要是用好spark steaming的特性,以及如何在生产中做优化。

特性

exactly-once
spark streaming支持exactly-once语义,一批数据要么全部成功要么全部失败,不会重复,可以用来做实时准确数据转义,确保最终输出的数目和输入是一致的。还可以应用于反作弊+计费这种不能重复计算的业务。

可靠状态
RDD天然支持中间 结果持久化,失败重试这些面向状态的可靠保证,可以用来做跨batch的聚合,做pv/uv计算,记录去重,微量实时更新的业务。

快速batch调度
spark streaming是由driver/jobscheduler进行调度,跟Mapreduce的调度相比,调度间隔更短,进程/线程常驻无启动时间 ,可以用来做数据指标监控,未成功数据快速重试这种数据量小,调度速度要求快的业务。

优化经验

•(1) 增加 Memory Back Pressure
•(2) 为 Spark Spark 增加新特性(无需编译 Spark Spark Spark 优化)
•(3)SparkSQL API > RDD APIAPI > RDD APIAPI
•(4) async execution within a task
•(5) try-cacth
•(6) concurrentJobs开启
•(7) Spark 远程调试

  • 监控executor的内存使用,动态调整receiver接收速率,避免OOM。
  • 增加新功能可以u编译spark工程,直接修改源文件**scala,运行参数增加spark.driver/executor.userClassPathFirst=false; spark.driver/executor.extraClassPath=app.jar。
  • sqparksql运行更快,因为做了很多逻辑优化,内存占用更少,支持逻辑缓存,codegen执行优化。
  1. 1.x用dstream.foreachRDD{rdd => rdd.toDF().select...},spark 2.x用spark. ... . stream. ... . startStream().
  • 使用线程池加异步的方式,提高task 处理速度,可以同时批处理多个。
  • 有些task的错误,比如could not compute split,在driver端catch,会提高系统健壮性
  • 设置spark.streaming.concurrentJobs = n,同时执行n个output,一般1个batch对应1个output提高系统处理能力。

《Dataset in Spark SQL》

范文臣, Databricks 软件工程师。主要讲了DataSet的好处,更快,api更易用。

RDD通用性高,能支持各种特性,但不能检查sql的语法格式,不能做到编译时语法检查。1.6开始支持的DataSet,能够在编译时检查语法和字段错误,可以做到类型安全检查。

spark 2.0统一了DataSet和DataFrame,可以用 Dataset[Row] = DataFrame转换。

DataSet和常见的java,kyro相比序列化快,DataSet和RDD相比,内存占用更小,复杂sql运行更快 。但如果是简单操作,rdd会更快,因为没有优化空间,RDD不需要序列化节省了时间。

相关实践学习
数据湖构建DLF快速入门
本教程通过使⽤数据湖构建DLF产品对于淘宝用户行为样例数据的分析,介绍数据湖构建DLF产品的数据发现和数据探索功能。
快速掌握阿里云 E-MapReduce
E-MapReduce 是构建于阿里云 ECS 弹性虚拟机之上,利用开源大数据生态系统,包括 Hadoop、Spark、HBase,为用户提供集群、作业、数据等管理的一站式大数据处理分析服务。 本课程主要介绍阿里云 E-MapReduce 的使用方法。
目录
相关文章
|
11天前
|
分布式计算 Hadoop 大数据
大数据技术与Python:结合Spark和Hadoop进行分布式计算
【4月更文挑战第12天】本文介绍了大数据技术及其4V特性,阐述了Hadoop和Spark在大数据处理中的作用。Hadoop提供分布式文件系统和MapReduce,Spark则为内存计算提供快速处理能力。通过Python结合Spark和Hadoop,可在分布式环境中进行数据处理和分析。文章详细讲解了如何配置Python环境、安装Spark和Hadoop,以及使用Python编写和提交代码到集群进行计算。掌握这些技能有助于应对大数据挑战。
|
4月前
|
消息中间件 分布式计算 大数据
【大数据技术Hadoop+Spark】Flume、Kafka的简介及安装(图文解释 超详细)
【大数据技术Hadoop+Spark】Flume、Kafka的简介及安装(图文解释 超详细)
68 0
|
4月前
|
SQL 分布式计算 大数据
【大数据技术Spark】DStream编程操作讲解实战(图文解释 附源码)
【大数据技术Spark】DStream编程操作讲解实战(图文解释 附源码)
37 0
|
4月前
|
Java Shell 分布式数据库
【大数据技术Hadoop+Spark】HBase数据模型、Shell操作、Java API示例程序讲解(附源码 超详细)
【大数据技术Hadoop+Spark】HBase数据模型、Shell操作、Java API示例程序讲解(附源码 超详细)
84 0
|
4月前
|
SQL 存储 大数据
【大数据技术Hadoop+Spark】Hive基础SQL语法DDL、DML、DQL讲解及演示(附SQL语句)
【大数据技术Hadoop+Spark】Hive基础SQL语法DDL、DML、DQL讲解及演示(附SQL语句)
75 0
|
4月前
|
SQL 分布式计算 数据库
【大数据技术Spark】Spark SQL操作Dataframe、读写MySQL、Hive数据库实战(附源码)
【大数据技术Spark】Spark SQL操作Dataframe、读写MySQL、Hive数据库实战(附源码)
96 0
|
4月前
|
SQL 分布式计算 大数据
【大数据技术Hadoop+Spark】Spark SQL、DataFrame、Dataset的讲解及操作演示(图文解释)
【大数据技术Hadoop+Spark】Spark SQL、DataFrame、Dataset的讲解及操作演示(图文解释)
54 0
|
4月前
|
SQL 存储 分布式计算
【大数据技术Hadoop+Spark】Hive数据仓库架构、优缺点、数据模型介绍(图文解释 超详细)
【大数据技术Hadoop+Spark】Hive数据仓库架构、优缺点、数据模型介绍(图文解释 超详细)
169 0
|
4月前
|
分布式计算 大数据 Apache
【大数据技术】流数据、流计算、Spark Streaming、DStream的讲解(图文解释 超详细)
【大数据技术】流数据、流计算、Spark Streaming、DStream的讲解(图文解释 超详细)
62 0
|
4月前
|
分布式计算 大数据 Scala
【大数据技术Hadoop+Spark】Spark RDD创建、操作及词频统计、倒排索引实战(超详细 附源码)
【大数据技术Hadoop+Spark】Spark RDD创建、操作及词频统计、倒排索引实战(超详细 附源码)
91 1