Upload
others
View
4
Download
0
Embed Size (px)
Citation preview
Spark在爱奇艺的应用实践孙琦 @ Shanghai Spark Meetup
2014-10
• Spark生态@爱奇艺• 业务实践• 问题 & 经验• 进一步工作
Agenda
• 爱奇艺– 秉承“悦享品质”的品牌理念,提供更多、更好的视频– 2010年4月上线– 2013年5月与PPS合并– 月度独立访问用户4+亿(3月份数据)– 2014年1月以来,日均覆盖、月度覆盖、月度时长以及人均月度
时长一直排名第一
Spark生态@爱奇艺
• 爱奇艺大数据生态
Spark生态@爱奇艺
业务层
NoSQL实时计算批处理
HDFS
MapReduce
Hive Storm SparkHBaseMesos / OpenStack
云图
搜索 广告 推荐日志分析
图谱 ….
日志数据视频元数据
抓取数据其他
数据源
安全
监控
规范
审计
• 爱奇艺Spark生态
Spark生态@爱奇艺
Standalone Mesos YARN
日志分析
推荐用户行为分析
…
Kafka HDFSHBase
• 爱奇艺Spark生态– 版本:从0.7.3开始,0.8.X, 0.9.X, 1.0, 1.1…不断跟踪升级– 部署环境:虚机 + 物理机– 部署方式:Standalone、Spark on YARN、Spark on Mesos– Spark组件:通用Spark job, Spark MLlib,Spark Streaming– 语言:Scala & Java & Python
Spark生态@爱奇艺
• 日志分析• 推荐• 用户行为分析
业务实践
• 日志分析– 各种日志(用户访问,CDN)的数据分析
业务实践
日志服务器
日志服务器
日志服务器
日志服务器
Kafka
Spark StreamingSpark
• 推荐– 推荐模型训练– Spark MLlib Alternating Least Squares(ALS) Algorithm– 输入数据300+G,运行20分钟– 模型提供给Hadoop,Storm进行批处理和实时数据预测– Spark on YARN
业务实践
• 用户行为分析– 用户画像、分类– iQIYI Logistic Regression (LR) Algorithm– 输入数据100G左右,1400W+ Features– 迭代1000次左右– 单机运行(20G左右)2小时或更长,Spark集群10分钟左右– Spark Standalone
业务实践
• Spark on Mesos– Mesos Master 内存泄漏
• Spark on YARN – Memory Overhead陷阱– 调度问题
• Standalone Spark – Secure HDFS 支持
• Spark MLlib– LR改进
问题 & 经验
• Mesos Master 内存泄漏– 症状:spark.akka.framesize = 128MB, Mesos Master内存飙
涨,最终crash– 原因:Executor的执行结果会通过statusUpdate传递给Mesos
Master,且没有及时清理
Spark on Mesos
– 办法:• 降低spark.akka.framesize
– 可能会导致Driver卡住,或者OOM• MESOS-1746• SPARK-3334
Spark on Mesos
• Memory Overhead陷阱– 症状:Executor的内存没达到上限前被kill– 原因:Spark Application使用了非JVM的内存,比如,矩阵计算
的库调用了native library,分配了JVM堆外内存
– 办法:调高spark.yarn.executor.memoryOverhead• 默认384MB,建议1024MB,视情况而定
Spark on YARN
• 调度问题– 症状:当有较多MapReduce job,scheduler调度压力增大的时
候,Spark job会被kill掉
– 原因:YARN AM Containers会被抢占
– 办法:升级YARN集群,或增加如下Patch• YARN-614• YARN-2074• YARN-1957
Spark on YARN
• Secure HDFS访问支持– 症状:不能访问开启了Kerberos的Hadoop集群数据– 原因:Executor启动后,总是创建一个新的UGI
– 限制:不支持一个集群多个用户同时运行
Standalone Spark
• LR改进优化– Spark 1.X前的LR采用梯度下降法,收敛很慢– 用牛顿法重新实现了LR,收敛速度提升10倍– 可视化的LR任务提交
Spark MLlib
• 更多Spark项目上线• 调研Spark SQL,并应用线上• 深入对比Spark Streaming和Storm,推动Spark
Streaming的更广泛应用• 统一的数据分析平台研发
进一步工作
• 职位:– 大数据基础架构研发、运维– 分布式中间件系统开发
• 范围:社招、校招、实习岗位均常年开放• 联系方式:
– [email protected]– QQ:99884153– 微博:i_孙琦– 微信:suncheney
Join us!?