Spark在爱奇艺的应用实践 - Meetupfiles.meetup.com/16395762/Spark in iQiyi.pdf · 2014. 10....

Preview:

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的更广泛应用• 统一的数据分析平台研发

进一步工作

• 职位:– 大数据基础架构研发、运维– 分布式中间件系统开发

• 范围:社招、校招、实习岗位均常年开放• 联系方式:

– sunqi@qiyi.com– QQ:99884153– 微博:i_孙琦– 微信:suncheney

Join us!?

Recommended