spark介绍 蘑菇街

2020-02-27 196浏览

  • 1.Spark   Introduction 蘑菇街 FST - 天火
  • 2.¡ 分布式计算框架   ¡ 等等,关我什么事?   § 太多的分布式计算框架   ¡ 因为它很Cool   ¡ 所以你不想Out?
  • 3.¡ 出身背景很Cool   § UC  Berkeley  AMPLab实验室   ¡ 主要开发者很Cool   § DataBricks   § Intel  /  Yahoo  /  Cloudera     ¡ 应用场景很Cool   § ETL、OLAP、机器学习、基因⼯工程   ¡   开发语⾔言很Cool   § scala
  • 4.
  • 5.¡ 很Cool的背景   § 理论架构的先进性   § 性能   ¡ 很Cool的开发团队   § 持续发展的动⼒力源泉     ¡ 很Cool的应用场景   § 活跃的社区   § 不⾄至于成为屠龙之技   ¡ 很Cool的开发语⾔言   § 开发效率   § ⾼高(zhuang)逼格的资本 lol
  • 6.¡ ¡ 快速从Apache  Incubator项目毕业成为 Apache顶级项目   ⼤大数据解决⽅方案提供商的支持   § Cloudera  /  MapR    /  Hortonworks  /  Pivotal  /  SAP  …   § 华为  /  星环科技   ¡ 应用   § 阿里/百度/爱奇艺/优酷/京东…   ¡ 2014年⼤大数据领域最活跃的开源项目
  • 7.
  • 8.¡ ¡ ¡ 分布式计算框架   基于内存的调度和运算模型   兼容Hadoop⽣生态环境   § 数据存储格式   § Works  with  Hdfs/Yarn/Hive/Hbase/kaQa…  etc.   ¡ 丰富的应用场景   § 离线处理 /  实时计算   § SQL  /  机器学习 /  图计算
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.¡ 更加⾼高效和通用的编程模型   § 相比MapReduce模型,更加适用于两种类型的 应用   ▪ 迭代算法类(机器学习,图计算)   ▪ 交互式数据挖掘   ¡ 良好的用户体验   ▪ 编程效率:基于Scala的核⼼心模块,提供Java/python编 程接⼝口   ▪ 功能强⼤大的API,丰富的操作算⼦子   ▪ 交互式的解释执⾏行接⼝口(调试,学习)
  • 14.Client   Step Step Step Step Step Client   Step Step Step Step Step
  • 15.¡ ¡ ¡ 计算模型固定   每个MapReduce阶段之间需要落盘   容错性好 Map   Input   Reduce   Output   Map   Map   Reduce
  • 16.Dryad-­‐like  DAGs   Pipelines  functions   within  a  stage     Cache-­‐aware  work   reuse  &  locality     Partitioning-­‐aware   to  avoid  shufflesB:A:G:Stage  1C:groupByD:F:mapE:Stage  2   join   union   =  cached  data  partition   Stage  3
  • 17.!
  • 18.Resilient  distributed  datasets  (RDDs)   ¡ ¡http://dl.acm.org/citation.cfm?id=2228301§ 不可变的,按分区组织的数据对象   § ⼀一个RDD可以通过各种(map,  filter,  groupBy,   Join…)操作转换为另⼀一个RDD   § 源头的RDD的数据来源可以是外部存储,如 HDFS,也可以动态⽣生成   § 可以采用各种缓存⽅方式加速处理   § 容错,  数据本地性,  可扩展性
  • 19.¡ ¡ ¡ 分布式运算环境下的数据容错模型往往是影响 整个系统的核⼼心机制之⼀一   其它基于内存的类似计算框架系统采用细颗粒 度的数据备份或者LOG机制   RDD采用基于⾎血统关系(Lineage)的容错模型   § Lineage记录的是粗颗粒度的数据变换操作⾏行为   § 当RDD的部分分区数据丢失时,它可以通过Lineage 信息重新运算和恢复丢失的数据分区。   § 这种粗颗粒的数据模型,限制了Spark的运用场合, 但同时相比细颗粒度的数据模型,也带来了性能的 提升。
  • 20.RDDs  maintain  lineage  information  that  can  be   used  to  reconstruct  lost  partitionsEx:messages = textFile(...).filter(_.startsWith(“ERROR”)) Result = messages.map(_.split(‘\t’)(2))     HDFS  File   Filtered  RDD   filter   (func  =  _.startsWith(...))   Mapped  RDD   map   (func  =  _.split(...))
  • 21.Base  RDD   Transformed  RDD   lines = spark.textFile(“hdfs://...”) results   errors = lines.filter(_.startsWith(“ERROR”)) messages = errors.map(_.split(‘\t’)(2)) cachedMsgs = messages.cache() Driver   Cache  1   Worker   tasks   Block  1   Action   cachedMsgs.filter(_.contains(“foo”)).count Cache  2   cachedMsgs.filter(_.contains(“bar”)).count Worker   . . . Cache  3   Worker   Block  3   Block  2
  • 22.
  • 23.¡ 围绕RDD的概念,实现核⼼心运⾏行调度逻辑   § Scheduler:作业和任务的调度管理   § BlockManager:RDD/Shuffle等数据块的管理   § RDD:各种RDD数据结构表达和算法实现   § Shuffle:管理Shuffle逻辑和相关数据流程   § NetWork:跨节点数据通讯相关   §Yarn:基于Yarn的任务调度管理模块   § 其它…
  • 24.¡ 其它各种上层模块都是基于Core的衍⽣生   § RDD核⼼心思想在不同领域的拓展和定制化实现   § RDD数据模型的通用性和灵活性,从本质上决 定了它很容易被应用到各种具体的编程模型上
  • 25.¡ 本质上是Micro-­‐batches  RDDs的处理   § 相比于小Batch的Hadoop  Job,Task启动代价小, latency低   § 近实时(相比Storm)   ▪ 默认200ms⼀一个批次   § 吞吐率⾼高   § 相对于其它模块,最早在业界得到应用
  • 26.§ 与普通RDD批处理统⼀一的编程模型   § 基于Lineage的容错模型   § 丰富的数据源
  • 27.val  conf  =  new  SparkConf()   val ハsc ハ= ハnew ハSparkContext(conf)     val ハlines ハ ハ= ハsc.textFile(args(1))     val ハwords ハ= ハlines.fl゚atMap(_.split("  ")) val result = words.map(x ハ=> ハ(x, ハ1)).reduceByKey(_  +  _).collect() val  conf  =  new  SparkConf()   val  ssc  =  new  StreamingContext(conf,  Seconds(1))   val  lines  =  ssc.textFileStream(args(1))   val  words  =  lines.flatMap(_.split("  "))   val  result  =  words.map(x  =>  (x,  1)).reduceByKey(_  +  _).collect()   ssc.start()
  • 28.n Hive-­‐like  interface(JDBC   Service  /  CLI)   n Both  Hive  QL  &  Simple  SQL   dialects  are  Supported   n DDL  is  100%  compatible  with   Hive  Metastore   n Hive  QL  aims  to  100%   compatible  with  Hive  DML   Data  Analyst CLI   User Application JDBC  Service   SQL  API   Hive  Meta  Store   Hive  QL   Simple  Catalog   Simple  SQL   Catalyst   Spark  Execution  Operators   Spark  Core
  • 29.n First  released  in  Spark  1.0  (May,  2014)   n Initial  committed  by  Michael  Armbrust  &   Reynold  Xin  from  Databricks
  • 30.¡ MLlib  机器学习算法库:   § Initial  contribution  from  AMPLab,  UC  Berkeley     § Shipped  with  Spark  since  version  0.8  (Sep  2013)     ¡ 数据类型   § Dense   § Sparse  (  Since  1.0)   ▪ 现实世界中,众多的数据集都是稀疏的   ¡ 算法集   § Classification  /  Regression  /collaborative  filtering  /   Clustering  /  Decomposition
  • 31.¡ ¡ ¡ Bagel  :  Spark  0.6,  2013-­‐08   Graphx-­‐Branch  :  Spark  0.8,  2013-­‐09 Graphx-­‐Alpha  :  Spark  0.9,  2014-­‐03
  • 32.
  • 33.¡ 图计算的模型   § 类Pregel的思想   § Super  Step   ▪ 更新Vertex和Edge   ¡ 图切割   § 实现分布式的关键所在   § Move  vertex  to  Edge   ¡ 本质上是在RDD基础上 构建   § 合理的数据表达⽅方式   § 针对性的API设计
  • 34.¡ 用于交互式运⾏行测试Spark程序   § 便于快速测试程序局部逻辑   ¡ 构建在Scala  Repl的基础上   § Repl:读取 执⾏行 打印 循环   § 拓展:   ▪ Modified  wrapper  code  generation  so  that  each  line   typed  has  references  to  objects  for  its  dependencies   ▪ Distribute  generated  classes  over  the  network
  • 35.
  • 36.¡ Pluggable  shuffl゚e  Interface   § Hash  -­‐>  Sort   ▪ Memory/performance  etc. ¡ Improved  Data  transfer  mechanism   § Pluggable   § Employ  Netty   ¡ Others   § pySpark  /  JDBC  server  /  Dynamic  metric  …
  • 37.¡ Core   § Pluggable  Storage  Interface   ¡ ▪ To  support  various  Storage  type,  SSD,HDFS  Cache  etc ハ Spark ハSQL   § 更多的数据源的支持   ▪ (Cassandra, MongoDB)  RDMS  (SAP/Vertica/Oracle) § 性能优化(code  gen,  faster  joins,  etc)   § 语法增强(towards  SQL92)   ¡ Graphx   § Move  graphx  out  of  “Alpha”   ¡ 稳定性和可扩展性
  • 38.¡ Better  Yarn  Integration   § Security   § Dynamic  resource  adjustment ¡ More  Algorithms  for  Mllib   § On  June,  15+   § Should  Double  quickly. ¡ Spark ハStreaming § Streaming  SQL  /  More  data  source  etc.
  • 39.¡ 以推荐算法所需数据源的处理流程为例   § Log⽂文件  /  KaQa  /  HDFS  /  MapReduce  /  Hive  /   Hbase  /  DB  /  Solr  /  Redis   § 战线漫长,模块众多,关系复杂,模式各异   ¡ 离线模型训练   § 计算密集型,迭代运算   ¡ 实时推荐   § 离线和实时计算模型统⼀一?
  • 40.¡ 目前主要问题?   ¡ 相关项目   § Tez  /  Dryad  /  Flink
  • 41.
  • 42.
  • 43.
  • 44.
  • 45.蘑菇街 天火 tianhuo@mogujie.com Weibo: @冷冻蚂蚁http://blog.csdn.net/colorant