您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 销售管理 > 基于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 谢谢
本文标题:基于Spark on Yarn的淘宝数据挖掘平台
链接地址:https://www.777doc.com/doc-5589459 .html