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 发送消息;
  • 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;

Spark 原理 —— 从 akka 到 spark 集群的启动相关推荐

  1. Spark 1.2 发布,开源集群计算系统

    2019独角兽企业重金招聘Python工程师标准>>> Spark 1.2 发布,此版本包括 172 位贡献者和超过 1000 个 commits. 此版本包括 Spark 核心操作 ...

  2. 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 ...

  3. kafka入门:简介、使用场景、设计原理、主要配置及集群搭建

    为什么80%的码农都做不了架构师?>>>    kafka入门:简介.使用场景.设计原理.主要配置及集群搭建(转) 问题导读: 1.zookeeper在kafka的作用是什么? 2. ...

  4. kafka入门:简介、使用场景、设计原理、主要配置及集群搭

    李克华 云计算高级群: 292870151 195907286 交流:Hadoop.NoSQL.分布式.lucene.solr.nutch  kafka入门:简介.使用场景.设计原理.主要配置及集群搭 ...

  5. Hadoop集群如何启动

    Hadoop集群如何启动 1 hadoop软件安装的目录:/opt/app 有如下软件:hbase.spark-2.1.0-bin-hadoop2.4.hbconf.sqoop.hdconf.hive ...

  6. Zookeeper源码分析:集群模式启动概述

    参考资料 <<从PAXOS到ZOOKEEPER分布式一致性原理与实践>> zookeeper-3.0.0 Zookeeper概述 Zookeeper是一个分布式的,开放源码的分 ...

  7. windows下配置redis集群,启动节点报错:createing server TCP listening socket *:7000:listen:Unknown error...

    windows下配置redis集群,启动节点报错:createing server TCP listening socket *:7000:listen:Unknown error 学习了:https ...

  8. zookeeper做集群后启动不了,大部分原因是防火墙未关闭

    zookeeper做单机版,可以正常启动:但是zookeeper做集群后启动不了,大部分原因是防火墙未关闭. centos的关闭防火墙方法比较独立. systemctl stop firewalld. ...

  9. 大数据之-Hadoop完全分布式_集群的启动和停止方式总结---大数据之hadoop工作笔记0039

    然后我们来总结一下hadoop集群的,启动停止方式 可以看到上面的方法可以在一个服务器上,去停止或启动服务. 然后后面我们会用脚本,去启动 start-dfs.sh 或者 stop-dfs.sh 这个 ...

最新文章

  1. 为什么颜值越来越重要_看脸时代来了吗?为什么这个时代越来越注重颜值?
  2. 测序仪的序列:DNA测序的历史
  3. 推荐C、C++、Java、网络安全、Unix、Linux 一些编程书
  4. 【Spring】【JUnit】单元测试
  5. 在windows下安装PyPdf2
  6. C#并发编程之异步编程(一)
  7. 小二,先来两桂花豆沙包!
  8. Mysql学习总结(49)——从开发规范、选型、拆分到减压
  9. hadoop 集群间数据迁移
  10. 一文带你了解如何排查内存泄漏导致的页面卡顿现象
  11. 二叉树的层序遍历_二叉树:你真的会翻转二叉树么?
  12. ecshop 实现购物车退出不清空
  13. AirDisk创建网盘
  14. 使用计算机有关的活动,有关计算机的活动策划书
  15. 市场下行谁的锅?流动性短缺怎么破?衍生品大佬来解答 |「生机」云峰会
  16. Deployer php自动部署,PHP自动化部署工具-Deployer
  17. CNCF 新掌舵人首次亮相中国,KubeCon 2020 云原生峰会网上行
  18. php自我介绍50字,自我介绍50字
  19. NR/5G - PUSCH repetition次数
  20. matlab创建反正弦asin,JavaScript中反正弦函数Math.asin()的使用简介

热门文章

  1. 4个不错的Flash开源项目
  2. 浅谈jQuery Mobile设计思想
  3. 根据dpr设置html fontsize,如何为不同移动设备设置html不同的font-size?
  4. python数据分析与挖掘实战pdf_《Python数据分析与挖掘实战》PDF+完整源码
  5. JSP中application的用法
  6. mimes.php,php – Laravel文件上传验证
  7. 剑指offer面试题29. 顺时针打印矩阵(边界问题)
  8. 机器学习之监督学习(二)——神经网络
  9. 巧妇难为无米之炊 走出软件测试的困境
  10. datatables data bind json