Spark生态@爱奇艺
•
爱奇艺
–
秉承“悦享品质”的品牌理念,提供更多、更好的视频
–
2010年4月上线
–
2013年5月与PPS合并
–
月度独立访问用户4+亿(3月份数据)
– 2014年1月以来,日均覆盖、月度覆盖、月度时长以及人均月度 时长一直排名第一
•
爱奇艺大数据生态
•
爱奇艺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 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
问题 & 经验
1、
Spark on Mesos
–
Mesos Master 内存泄漏
– 症状:spark.akka.framesize = 128MB, Mesos Master内存飙涨,最终crash
– 原因:Executor的执行结果会通过statusUpdate传递给Mesos Master,且没有及时清理
–
办法:
•
降低spark.akka.framesize
–
可能会导致Driver卡住,或者OOM
•
MESOS-1746
•
SPARK-3334
2、Spark on YARN
– Memory Overhead陷阱
–
症状:Executor的内存没达到上限前被kill
– 原因:Spark Application使用了非JVM的内存,比如,矩阵计算 的库调用了native library,分配了JVM堆外内存
–
办法:调高spark.yarn.executor.memoryOverhead
•
默认384MB,建议1024MB,视情况而定
– 调度问题
– 症状:当有较多MapReduce job,scheduler调度压力增大的时候,Spark job会被kill掉
–
原因:YARN AM Containers会被抢占
–
办法:升级YARN集群,或增加如下Patch
•
YARN-614
•
YARN-2074
•
YARN-1957
3、Standalone Spark
–
Secure HDFS 支持
–
症状:不能访问开启了Kerberos的Hadoop集群数据
–
原因:Executor启动后,总是创建一个新的UGI
– 限制:不支持一个集群多个用户同时运行
4、Spark MLlib
–
LR改进
–
Spark 1.X前的LR采用梯度下降法,收敛很慢
–
用牛顿法重新实现了LR,收敛速度提升10倍
–
可视化的LR任务提交