Spark 原理 —— 从 akka 到 spark 集群的启动
1. actor 到 akka
- Actor 是一种消息并发模型,基于事件模型的并发机制。
- Scala 的 Actor 类似于 Java 中的多线程编程,不同在于:
- Scala 的 Actor 设计的初衷在于尽可能地避免锁和共享状态,从而避免多线程并发时出现资源征用的情况;
- 原因在于,Java 中多数使用的是可变状态的对象资源,对这些资源进行共享实现多线程编程的话,需要控制好资源竞争与防止对象状态被意外修改,而对象状态的不变形往往很难保证;
- scala中,我们可以通过复制不可变状态的资源(即对象,scala中一切皆对象,函数方法也是)的一个副本,再基于 Actor 的消息发送和接收机制进行并行编程;
- Akka
- Akka 使用 Scala 语言开发,基于 actor 并发模型实现;
- Spark 的 RPC 便是通过 Akka 类库实现的;
- Actor是Akka中最核心的概念,它是一个封装了状态和行为的对象,Actor 之间可以通过交换消息的方式进行通信;
- 每个 Actor 都有自己的收件箱(mailbox),通过 Actor 能够简化锁及线程管理;
- ActorSystem
- 使用ActorSystem这一重量级结构,能够创建很多 Actor
- 它回去分配多个线程,在实际应用中,ActorSystem 通常是一个单例对象;
2. actor 用法
- Actor 方法的执行顺序:
- 创建 Actor
- 通过 ActorSystem
- 调用 Actor 的 start() 方法启动 Actor(类似于 Java 线程的 start() 方法)
- 便会去执行 act() 方法(对于 Java 线程即是执行线程中定义的 run 方法)
- 向 Actor 发送消息;
- 创建 Actor
- Akka 中的 Actor,Actor 负责通信,
- preStart():该方法在 Actor 对象构造方法执行后执行,整个 Actor 生命周期仅执行一次;
- receive():该方法在 Actor 的 preStart 方法执行完成后执行,用于接收消息,会被反复执行;
- Spark 集群模式下的启动调用顺序:
- 首先需要 Master 及 Worker 两个角色(模块)
- Master 中的 ActorSystem 创建名为 “master” 的 actor
- Worker 中的 ActorSystem 创建名为 “worker” 的 actor
- 然后两个 actor 进行通信;
- Master 及 Worker 中的 Actor 通信流程如下:
- worker actor 将请求的参数封装进一个 case class 中(序列化后)发送给 master actor;
- master actor 收到请求,对其进行反序列化,经过模式匹配后,获取到函数调用及其参数;
- master actor 将计算后的结果返回给 worker actor;
- 首先需要 Master 及 Worker 两个角色(模块)
Spark 原理 —— 从 akka 到 spark 集群的启动相关推荐
- Spark 1.2 发布,开源集群计算系统
2019独角兽企业重金招聘Python工程师标准>>> Spark 1.2 发布,此版本包括 172 位贡献者和超过 1000 个 commits. 此版本包括 Spark 核心操作 ...
- yarn集群下启动spark错误WARN:66 - Neither spark.yarn.jars nor spark.yarn.archive is set
yarn集群下启动spark错误如下: WARN Client:66 - Neither spark.yarn.jars nor spark.yarn.archive is set, falling ...
- kafka入门:简介、使用场景、设计原理、主要配置及集群搭建
为什么80%的码农都做不了架构师?>>> kafka入门:简介.使用场景.设计原理.主要配置及集群搭建(转) 问题导读: 1.zookeeper在kafka的作用是什么? 2. ...
- kafka入门:简介、使用场景、设计原理、主要配置及集群搭
李克华 云计算高级群: 292870151 195907286 交流:Hadoop.NoSQL.分布式.lucene.solr.nutch kafka入门:简介.使用场景.设计原理.主要配置及集群搭 ...
- Hadoop集群如何启动
Hadoop集群如何启动 1 hadoop软件安装的目录:/opt/app 有如下软件:hbase.spark-2.1.0-bin-hadoop2.4.hbconf.sqoop.hdconf.hive ...
- Zookeeper源码分析:集群模式启动概述
参考资料 <<从PAXOS到ZOOKEEPER分布式一致性原理与实践>> zookeeper-3.0.0 Zookeeper概述 Zookeeper是一个分布式的,开放源码的分 ...
- windows下配置redis集群,启动节点报错:createing server TCP listening socket *:7000:listen:Unknown error...
windows下配置redis集群,启动节点报错:createing server TCP listening socket *:7000:listen:Unknown error 学习了:https ...
- zookeeper做集群后启动不了,大部分原因是防火墙未关闭
zookeeper做单机版,可以正常启动:但是zookeeper做集群后启动不了,大部分原因是防火墙未关闭. centos的关闭防火墙方法比较独立. systemctl stop firewalld. ...
- 大数据之-Hadoop完全分布式_集群的启动和停止方式总结---大数据之hadoop工作笔记0039
然后我们来总结一下hadoop集群的,启动停止方式 可以看到上面的方法可以在一个服务器上,去停止或启动服务. 然后后面我们会用脚本,去启动 start-dfs.sh 或者 stop-dfs.sh 这个 ...
最新文章
- 为什么颜值越来越重要_看脸时代来了吗?为什么这个时代越来越注重颜值?
- 测序仪的序列:DNA测序的历史
- 推荐C、C++、Java、网络安全、Unix、Linux 一些编程书
- 【Spring】【JUnit】单元测试
- 在windows下安装PyPdf2
- C#并发编程之异步编程(一)
- 小二,先来两桂花豆沙包!
- Mysql学习总结(49)——从开发规范、选型、拆分到减压
- hadoop 集群间数据迁移
- 一文带你了解如何排查内存泄漏导致的页面卡顿现象
- 二叉树的层序遍历_二叉树:你真的会翻转二叉树么?
- ecshop 实现购物车退出不清空
- AirDisk创建网盘
- 使用计算机有关的活动,有关计算机的活动策划书
- 市场下行谁的锅?流动性短缺怎么破?衍生品大佬来解答 |「生机」云峰会
- Deployer php自动部署,PHP自动化部署工具-Deployer
- CNCF 新掌舵人首次亮相中国,KubeCon 2020 云原生峰会网上行
- php自我介绍50字,自我介绍50字
- NR/5G - PUSCH repetition次数
- matlab创建反正弦asin,JavaScript中反正弦函数Math.asin()的使用简介
热门文章
- 4个不错的Flash开源项目
- 浅谈jQuery Mobile设计思想
- 根据dpr设置html fontsize,如何为不同移动设备设置html不同的font-size?
- python数据分析与挖掘实战pdf_《Python数据分析与挖掘实战》PDF+完整源码
- JSP中application的用法
- mimes.php,php – Laravel文件上传验证
- 剑指offer面试题29. 顺时针打印矩阵(边界问题)
- 机器学习之监督学习(二)——神经网络
- 巧妇难为无米之炊 走出软件测试的困境
- datatables data bind json