讲一下spark的几种部署方式?

Johngo学长 Spark 108

目前,除了local模式为本地调试模式以为。

Spark支持三种分布式部署方式,分别是standalone、spark on mesos 和 spark on YARN。

 

  • Standalone模式
    即独立模式,自带完整的服务,可单独部署到一个集群中,无需依赖任何其他资源管理系统。从一定程度上说,该模式是其他两种的基础。目前Spark在standalone模式下是没有任何单点故障问题的,这是借助 zookeeper实现的,思想类似于Hbase master单点故障解决方案。将Spark standalone与MapReduce比 较,会发现它们两个在架构上是完全一致的:
    • 都是由master/slaves服务组成的,且起初master均存在单点故障,后来均通过zookeeper解决 (Apache MRv1的JobTracker仍存在单点问题,但CDH版本得到了解决);
    • 各个节点上的资源被抽象成粗粒度的slot,有多少slot就能同时运行多少task。不同的是,MapReduce 将slot分为map slot和reduce slot,它们分别只能供Map Task和Reduce Task使用,而不能共享,这是 MapReduce资源利率低效的原因之一,而Spark则更优化一些,它不区分slot类型,只有一种slot,可 以供各种类型的Task使用,这种方式可以提高资源利用率,但是不够灵活,不能为不同类型的Task定制 slot资源。总之,这两种方式各有优缺点。
  • Spark On YARN模式
    spark on yarn 的支持两种模式:
    • yarn-cluster:适用于生产环境;
    • yarn-client:适用于交互、调试,希望立即看到app的输出
      yarn-cluster 和 yarn-client的区别在于 yarn appMaster,每个yarn app实例有一个appMaster进程,是为app 启动的第一个container;负责从ResourceManager请求资源,获取到资源后,告诉NodeManager为其启动 container。yarn-cluster和yarn-client模式内部实现还是有很大的区别。如果你需要用于生产环境,那么请 选择yarn-cluster;而如果你仅仅是Debug程序,可以选择yarn-client。
  • Spark On Mesos模式
    Spark运行在Mesos上会比运行在YARN上更加灵活,更加自然。目前在Spark On Mesos环境中,用户可选择两种调度模式之一运行自己的应用程序
    • 粗粒度模式(Coarse-grained Mode):每个应用程序的运行环境由一个Dirver和若干个Executor组 成,其中,每个Executor占用若干资源,内部可运行多个Task(对应多少个“slot”)。应用程序的各个任务正式运行之前,需要将运行环境中的资源全部申请好,且运行过程中要一直占用这些资源,即使不 用,最后程序运行结束后,回收这些资源。
    • 细粒度模式(Fine-grained Mode):鉴于粗粒度模式会造成大量资源浪费,Spark On Mesos还提供了 另外一种调度模式:细粒度模式,这种模式类似于现在的云计算,思想是按需分配。与粗粒度模式一 样,应用程序启动时,先会启动executor,但每个executor占用资源仅仅是自己运行所需的资源,不需 要考虑将来要运行的任务,之后,mesos会为每个executor动态分配资源,每分配一些,便可以运行一 个新任务,单个Task运行完之后可以⻢上释放对应的资源。

回复

我来回复
  • 暂无回复内容

免费咨询
免费咨询
扫码关注
扫码关注
联系站长

站长Johngo!

大数据和算法重度研究者!

持续产出大数据、算法、LeetCode干货,以及业界好资源!

2022012703491714

微信来撩,免费咨询:xiaozhu_tec

分享本页
返回顶部
最近整理资源【免费获取】:   👉 程序员最新必读书单  | 👏 互联网各方向面试题下载 | ✌️计算机核心资源汇总