spark context理解—TaskScheduler
笔记 / 2018年12月2日

  TaskScheduler作用是为创建它的SparkContext调度任务,即从DAGScheduler接受不同Stage的任务,并且向集群提交这些任务,并对未执行、特别慢的任务启动备份任务。主要由2部分组成: taskScheduler 任务调度:调度模式有FAIR和FIFO两种, 对应2种模式的队列存放taskset; SchedulerBackend: 是TaskSchedul…

spark 任务提交到集群执行的流程
笔记 / 2018年12月1日

Spark任务怎么提交到worker集群执行? Spark 应用程序从编写到提交、执行、输出的整个过程如下图所示,图中描述的步骤如下: 1)         用户使用SparkContext提供的API(常用的有textFile、sequenceFile、runJob、stop等)编写Driver application程序。程序先离线被打成Jar包存储起来等待被加载执行,存储的位置有3种: fi…

spark 简单实践1
大数据 , 笔记 / 2018年11月29日

Spark核心概念之间的关系: Spark Driver用于提交用户应用程序,实际可以看作Spark的客户端; Spark Driver的初始化始终围绕着SparkContext的初始化。SparkContext可以算得上是所有Spark应用程序的发动机引擎; SparkContext初始化完毕,才能向Spark集群提交任务执行。   Spark context 处理原理如下图: &nb…

使用zookeeper实现分布式锁
笔记 / 2018年11月28日

最近定位一个问题, 发现读取的ZK中存储的数据 不符合预期, 后来发现该Znode节点有2个 服务会有写入操作,  所以造成了数据重入; 因此需要一个分布式环境下的同步机制, 方案有很多, 最终选择使用Zookeeper实现 分布式锁的功能 ; 原理是利用ZK的顺序节点+watcher机制实现: 在zookeeper指定节点下创建临时顺序节点node_lock_rsX 作为 对资源X访问的Lock…

Java多线程–阻塞队列
笔记 / 2018年11月20日

如何实现一个有并发多任务访问的阻塞队列? 使用synchronized ,object.wait(),object.notifyall() 1、当调用put()方法时,如果此时容器的长度等于限定的最大长度,那么该方法需要阻塞直到队列可以有空间容纳下添加的元素 2、当调用take()方法时,如果此时容器的长度等于最小长度0,那么该方法需要阻塞直到队列中有了元素能够取出 3、put() 和 take(…

java多线程–runable & thread
笔记 / 2018年11月19日

Java多线程定义方式可以通过继承Thead实现, 也可以通过实现Runable接口实现,它们之间关系如下图:   Thead类实际上是Run able类的实现类,所以最后不管是使用哪种方式,最终都是通过Thread类从OS申请资源分配启动线程; 下面的3段代码中,前2个效果等价: class MyThread extends Thread { private int i = 0; @O…

常见网络IO模型原理 & JAVA NIO模型
性能 , 笔记 / 2018年11月7日

网络IO传输模式和编解码方案对系统的性能影响至关重要, 作为HTTP Server, 为什么Nginx 的网络IO性能很高, 而Tomcat 之类的Web Server 网络IO 性能相对较低 ? 系统选择的网络IO模型不同, Nginx使用的poll/epoll属于 多路复用型网络模型; Tomcat 6 之前的版本都是用的阻塞式IO模型 (6版本之后支持 NIO模式了,网络IO有所提升) , …

简易智能识别服务4–使用MQ+线程池实现异步消息监听
笔记 / 2018年11月1日

使用activeMQ做消息异步传输,  消息从Agent端(Python)发送, springboot 端接受异步消息 需求:   需要支持创建多个Consumer  同时消费 多个Queue的场景. 本来考虑直接把consumer做成单例模式, 但对上面需求支持会比较困难;   有效的资源利用: 不能太频繁的做线程创建和 销毁操作,影响系统性能 使用全局线程池就比 局部线程池 更节约资源 综上因…

简易智能识别服务3.1–使用zookeeper 实现简单的分布式信息同步
笔记 / 2018年10月22日

zk 分布式同步功能,可以由3个角色组成:  zk config manager(消息生产) ,   zk config server(消息生产2),   zk config client(消息消费) zk config manager:  任务部署在web server端,主要功能: 负责创建管理所有的“serverType” ,即一级节点,用于区分不同的配置内容,   可由 管理员通过前台界面…

zookeeper 如何实现分布式状态通知?
笔记 / 2018年10月14日

在zookeeper中,watcher机制来通知客户端其服务端的节点信息发生的变化。原理图如下: 多个分布式进程通过ZooKeeper提供的API来操作共享的ZooKeeper内存数据对象ZNode来达成某种一致的行为或结果,这种模式本质上是基于状态共享的并发模型,与Java的多线程并发模型一致,他们的线程或进程都是”共享式内存通信“。 Watch机制是异步非阻塞的主动通知模式即,使得分布式进程之…