基于Spark on Yarn的淘宝数据挖掘平台

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

插上翅膀的大象  基于Spark  on  Yarn的淘宝数据挖掘平台 淘宝技术部——数据挖掘与计算  明风 目录 • 为什么选择Spark  On  Yarn  • Spark  On  Yarn的原理和框架  • 淘宝在Spark  On  Yarn上做的工作    • 基于Spark  on  Yarn的数据挖掘平台架构  • 案例性能  Hadoop在数据挖掘遇到的问题 • 多次迭代    • 中间数据的序列化和反序列化  • 简单的MR模式 vs 复杂的机器学习算法  • OO编程 vs  函数式风格    • 图计算能力    Why  Spark RDD  – 内存计算  – 快速迭代  – DAG    Scala  – FP编程  – Actor模型  – 并发能力    Hadoop  – MapReduce  – HDFS访问  Spark的生态圈 Yarn  Standalone  HDFS  Local  Spark  (MapReduce)  Shark  (Hive) Graphx  (GraphLab) Streaming  (Storm) Mesos  Mllib  (Mahout) HBASE  淘宝的Spark之路 2013.08 Spark  0.8    (Yarn) 200台Yarn集群  2012中 Spark  0.6(Standalone) 10台小集群 2012初 Spark  0.5(Mesos) Just  for  Lab 阿里云梯1目前规模: 5000*2 Yarn版本: 0.23.7 Spark  on  Yarn的框架 Container (ExecutorBackend) Executor Container (ExecutorBackend) Executor Node  Manager 3.启动Container Application Master SparkContext DAG Scheduler YarnClusterScheduler Node  Manager 3.启动AppMaster Resource Manager Spark Yarn Client 5.申请Container 6.分配Container 2.分配AppMaster 1.提交请求 调度过程 RDD  Objects    Build operator DAG DAGScheduler  split  graph  into  stages  of  tasks  submit  each  stage  as  ready  TaskScheduler  TaskSet  launch  tasks  via  cluster  manager  retry  failed  or  straggling  tasks  Cluster  Manager  Worker  execute  tasks  store  and  serve  blocks  Block  manager  Executor  Task  DAG  Stage  IntroductiontoSparkInternals@Matei 我们的社区跟进模式  压力测试 修复Bug  SparkRepository内部Gitlab Spark  Repository  Github   测试服务器 通过  Big  Jobs 生产服务器 提交Pull  Request 发布生产服务器 内部Merge Weekly Merge Folk 是否对社区有价值? 我们做了什么?   l 公开的  1. Pull  Request  681:  Remove  acOve  job  from  idToAcOveJob  when  job  finished  or  aborted  2. Pull  Request  689:  Jobs  are  always  marked  as  SUCCEEDED  even  it's  actually  failed  on  Yarn  3. Pull  Request  757:  ResultTask's  serializaOon  forget  about  handling  generaOon  field,  while  ShuffleMapTask  does  l 未公开的(和云梯Yarn团队密切相关)  1. 增加用户权限管理 2. 工作jar包缓存机制 3. 自动配置Spark临时缓存目录 4. 封装了一个运行脚本,使用资源文件配置Spark作业性能参数 5. 添加一个Syslog来存放完整日志输出 6. Executor监控页面增加跳转到日志的链接  ……  封装的启动命令 spark_on_yarn    \          -­‐-­‐queue  cug-­‐queue-­‐spark  \          -­‐-­‐jar  /home/spark/mllib/libs/spark-­‐mllib_2.9.3-­‐0.7.0-­‐SNAPSHOT.jar  \          -­‐-­‐class  spark.mllib.recommendaOon.ALS  \          -­‐-­‐args  yarn-­‐standalone  \          -­‐-­‐args    /group/spark/als/test.data  \          -­‐-­‐args  3  \          -­‐-­‐args  10  \          -­‐-­‐args  /group/spark/als/output  \          -­‐-­‐num-­‐workers  10  \          -­‐-­‐worker-­‐memory  24g  \          -­‐-­‐worker-­‐cores  3 \       -­‐-­‐master-­‐memory  5g          -­‐-­‐conf      ~/spark-­‐config.properOes     spark-config.propertiesspark.akka.frameSize=50  spark.akka.Omeout=60  spark.storage.memoryFracOon=0.5  spark.akka.askTimeout=60  spark.worker.Omeout=60 实现的算法 聚类 关联规则 FPGrowth 协同过滤 MLR(Sojmax  Regression) 分类 Simrank ItemBased  (BWC)  KMeans UserBased Canopy 图算法 PageRank   train(Object) run(Class) Mllib的架构图 RDD SimpleUpdater SquaredL2Updater L1Updater SquaredGradient LogisOcGradient HingeGradient SVM LASSO LogisOcRegression LinearRegression RidgeRegression Model ALS KMeans Jblas(a  fast  linear  algebra  library  for  Java) gFortran  4.4  OpOmizer Updater Gradient @尹绪森 iteraJons 淘宝推荐系统架构 离线 近线 在线 HBASE Mysql 原始数据 Spark 目标数据 模型混合系统  推荐结果 隐性反馈 显性反馈 点击流  (Spark  Streaming) 日志 Hadoop  & Hive ETL Model    Training  模型  模型  模型 基于兴趣图谱推荐 用户短期行为 用户长期行为 收藏 购买 浏览 搜索 购物车 评论… GraphX 用户推荐Feeds流  (兴趣部分) 重度用户 轻度用户 点击流 Spark Streaming 你可能喜欢  Case  1:  Parallel  Rank 数据条数:  2.1kw 数据大小:  10G  排行时间:  160s 1  2  4  2  3  5  7  7  9  5  6  8  6  5  7  3  5  7  8  5  7 (1,  1  2  4)  (2,  2  3  5)  (7,  7  7  9)  (5,  5  6  8)  (6,  6  5  7)  (3,  3  5  7)  (8,  8  5  8) (1,  1  2  4)    (2,  2  3  5)    (3,  3  5  7)  (5,  5  6  8)            (6,  6  5  7)   (7,  7  7  9)    (8,  8  5  8) 3  2  2   0    3    5    7 (0, 1 2 4)  (1, 2 3 5) (2, 3 5 7) (3, 5 6 8)  (4, 6 5 7) (5, 7 7 9)  (6, 8 5 8) 0 3 5 sortByKey(true,  3) mapParOOonsWithIndex(rank) scanLej(0)(_  +  _) mapParOOonsWithIndex(sum)  .collect() (key,  value) Master Case  2:  KMeans   0  100  200  300   10G  20G  10  Worker  20  Worker  60Worker  数据条数:  2.6kw 数据大小:  10G 中心点:  80 Running  Time  (Sec)/IteraOon Worker Memory Case  3:PageRank 0  200  400  600  800  1000  1200  100w  1000w  100M  Graphx  Bagel  Worker:   50 Worker-Memory:  40g Worker-Core:  2 Parallel Num: 200 Running  Time  (Sec)/IteraOon Spark  On  Yarn目前存在的问题 • 多生态作业竞争  • 机器内存性能  • 粗粒度的资源预申请    • 内存把控能力    加入我们 • 我们需要  – 推荐系统专家  – 推荐算法工程师  – 开发工程师(Scala,Java)  • 微博:  @明风Andy  • 来往    Q  &  A 谢谢 

1 / 21
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功