executor

storm拓扑的并行度(parallelism)概念

本小妞迷上赌 提交于 2020-01-07 08:29:56
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 1 storm并行的基本概念 一个运行中的拓扑是由什么构成的:工作进程(worker processes),执行器(executors)和任务(tasks) 在一个 Storm 集群中,Storm 主要通过以下三个部件来运行拓扑: 工作进程(worker processes)(进程数) 执行器(executors)(线程数) 任务(tasks)(实例组件数) storm集群中的一个机器可以运行一个或者多个worker,对应于一个或者多个topologies.1个worker进程运行1个或多个 excutor线程。每个worker从属于一个topology.executor是单线程。每1个executor运行着相同的组件(spout或 bolt)的1个或多个task。1个task执行着实际的数据处理。 下面是他们之间相互关系的简单图示。 2 是否需要提高workers数目 (1) 最好 一台机器上的一个topology只使用一个worker,主要原因时减少了worker之间的数据传输 (2) 有更多的worker可能会有更好的表现,这取决于你的瓶颈所在。每个worker都有通过一个线程将元组转移到其他的worker,所以如果你的瓶颈在CPU和每个worker正在处理大量的元组

Spark应用监控解决方案--使用Prometheus和Grafana监控Spark应用

℡╲_俬逩灬. 提交于 2020-01-06 05:11:33
Spark任务启动后,我们通常都是通过跳板机去Spark UI界面查看对应任务的信息,一旦任务多了之后,这将会是让人头疼的问题。如果能将所有任务信息集中起来监控,那将会是很完美的事情。 通过S park官网指导文档 ,发现Spark只支持以下sink Each instance can report to zero or more sinks . Sinks are contained in the org.apache.spark.metrics.sink package: ConsoleSink : Logs metrics information to the console. CSVSink : Exports metrics data to CSV files at regular intervals. JmxSink : Registers metrics for viewing in a JMX console. MetricsServlet : Adds a servlet within the existing Spark UI to serve metrics data as JSON data. GraphiteSink : Sends metrics to a Graphite node. Slf4jSink : Sends metrics to slf4j

Spark调优指南

情到浓时终转凉″ 提交于 2020-01-03 08:13:03
Spark相关问题 Spark 比 MR 快的原因? 1) Spark 的计算结果可以放入内存,支持基于内存的迭代, MR 不支持。 2) Spark 有 DAG 有向无环图,可以实现 pipeline 的计算模式。 3) 资源调度模式: Spark 粗粒度资源调度, MR 是细粒度资源调度。 资源复用: Spark 中的 task 可以复用同一批 Executor 的资源。 MR 里面每一个 map task 对应一个 jvm ,不能复用资源。 Spark 中主要进程的作用? Driver 进程:负责任务的分发和结果的回收。 Executor 进程:负责具体任务的执行。 Master 进程: Spark 资源管理的主进程,负责资源调度。 Worker 进程: Spark 资源管理的从进程, woker 节点主要运行 Executor Spark调优 1. 资源调优 1) .搭建Spark集群的时候要给Spark集群足够的资源(core,memory) 在 spark安装包的conf下spark-env.sh SPARK_WORKER_CORES SPARK_WORKER_MEMORY SPARK_WORKER_INSTANCE 2) .在提交Application的时候给Application分配更多的资源。 提交命令选项:(在提交 Application的时候使用选项) -

Java Executors and per-thread (not per-work unit) objects?

假装没事ソ 提交于 2020-01-02 07:47:27
问题 I have a task that would benefit from the Thread Pool design pattern (many small tasks to be performed in parallel). I initially implemented a naive thread pool from scratch, with n Runnables all pulling work units from the same ConcurrentLinkedQueue until the queue is empty, then terminating. I then decided "hey, let's try the Executor in Java, because that is probably better-tested and more reliable than my naively designed system." Problem: in my implementation, each thread persisted until

spark executor memory cut to 1/2

不想你离开。 提交于 2020-01-01 18:21:19
问题 I am doing a spark-submit like this spark-submit --class com.mine.myclass --master yarn-cluster --num-executors 3 --executor-memory 4G spark-examples_2.10-1.0.jar in the web ui, I can see indeed there are 3 executor nodes, but each has 2G of memory. When I set --executor-memory 2G, then ui shows 1G per node. How did it figure to reduce my setting by 1/2? 回答1: The executor page of the Web UI is showing the amount of storage memory, which is equal to 54% of Java heap by default (spark.storage

spark executor memory cut to 1/2

扶醉桌前 提交于 2020-01-01 18:21:05
问题 I am doing a spark-submit like this spark-submit --class com.mine.myclass --master yarn-cluster --num-executors 3 --executor-memory 4G spark-examples_2.10-1.0.jar in the web ui, I can see indeed there are 3 executor nodes, but each has 2G of memory. When I set --executor-memory 2G, then ui shows 1G per node. How did it figure to reduce my setting by 1/2? 回答1: The executor page of the Web UI is showing the amount of storage memory, which is equal to 54% of Java heap by default (spark.storage

【Java多线程】Executor框架的详解

安稳与你 提交于 2020-01-01 10:16:03
在Java中,使用线程来异步执行任务。Java线程的创建与销毁需要一定的开销,如果我们为每一个任务创建一个新线程来执行,这些线程的创建与销毁将消耗大量的计算资源。同时,为每一个任务创建一个新线程来执行,这种策略可能会使处于高负荷状态的应用最终崩溃。 Java线程既是工作单元,也是执行单元。从JDK1.5开始,把工作单元与执行机制分离开来。工作单元包括Runnable 和 Callable,而执行机制由Executor框架提供。 Executor框架简介 Executor框架的两级调度模型 在HotSpot VM的线程模型中,Java线程被一对一映射为本地操作系统线程。Java线程启动时会创建一个本地操作系统线程;当Java线程终止时,这个操作系统线程也会被回收。操作系统会调用所有线程并将他们分配给可用的CPU。 可以将此种模式分为两层,在上层,Java多线程程序通常把应用程序分解为若干任务,然后使用用户级的调度器(Executor框架)讲这些任务映射为固定数量的线程;在底层,操作系统内核将这些线程映射到硬件处理器上。 两级调度模型的示意图: 从图中可以看出,该框架用来控制应用程序的上层调度(下层调度由操作系统内核控制,不受应用程序的控制)。 Executor框架的结构和成员 Executor框架的结构 1. 任务 包括被执行任务需要实现的接口

Java Executor并发框架(三)ThreadPoolExecutor 队列缓存策略

断了今生、忘了曾经 提交于 2020-01-01 10:15:08
前面两篇讲解了线程池中线程创建后的运行情况,其中有一系列的策略来保证线程正常运行。但是我们知道线程池是可以设置容量的,而且这容量的设置也是至关重要的,如果容量设置的太小,那么将会影响系统的运行效率,如果设置的过大,也可能造成无止尽的线程堆积,最终造成系统内存溢出。对于此,线程池也提供了一些设置来防止这些现象。下面我们将会介绍。 线程初始化 当我们创建线程池后,如果没有新任务进来的话,默认是没有线程的,提交任务后线程池才会创建新的线程。如果你想创建线程池时就初始化 corePoolSize 数量的线程的话,线程池提供了以下两个方法: prestartCoreThread() : 立即初始化一个线程 prestartAllCoreThreads() :立即初始化 corePoolSize 数量的线程 以下是具体方法实现: public int prestartAllCoreThreads() { int n = 0; while (addIfUnderCorePoolSize(null)) ++n; return n; } public boolean prestartCoreThread() { return addIfUnderCorePoolSize(null); } 底层都是调用 addIfUnderCorePoolSize() 方法,上一篇有讲过,如果传入的参数为null的话

Executor框架学习笔记

瘦欲@ 提交于 2020-01-01 09:55:30
关于ThreadPoolExecutor的源码解读,请参考我的最新博客 《ThreadPoolExecutor源码解读》 。 Java中的线程即是工作单元也是执行机制,从JDK 5后,工作单元与执行机制被分离。工作单元包括Runnable和Callable,执行机制由JDK 5中增加的java.util.concurrent包中Executor框架提供。 HotSpot VM的线程模型中将java的线程映射为本地操作系统的线程,java线程的启动意味着一个本地操作系统线程的创建,而java线程的终止也就意味着对应的系统线程的回收。 Executor框架主要包含三个部分: 任务: 包括Runnable和Callable,其中Runnable表示一个可以异步执行的任务,而Callable表示一个会产生结果的任务 任务的执行: 包括Executor框架的核心接口Executor以及其子接口ExecutorService。在Executor框架中有两个关键类ThreadPoolExecutor和ScheduledThreadPoolExecutor实现了ExecutorService接口。 异步计算的结果: 包括接口Future和其实现类FutureTask。 下面是对Executor框架中的一些关键接口与类的简介 Executor接口(java.util.concurrent

一文带你看懂java线程池

一曲冷凌霜 提交于 2019-12-29 09:40:17
一文带你看懂java线程池 总览 Executor 接口 ExecutorService AbstractExecutorService ThreadPoolExecutor Executors 总结 本文转载至:www.javadoop.com 我相信大家都看过很多的关于线程池的文章,基本上也是面试的时候必问的,如果你在看过很多文章以后,还是一知半解的,那希望这篇文章能让你真正的掌握好 Java 线程池。 本文一大重点是源码解析,同时会有少量篇幅介绍线程池设计思想以及作者 Doug Lea 实现过程中的一些巧妙用法。本文还是会一行行关键代码进行分析,目的是为了让那些自己看源码不是很理解的同学可以得到参考。 线程池是非常重要的工具,如果你要成为一个好的工程师,还是得比较好地掌握这个知识,很多线上问题都是因为没有用好线程池导致的。即使你为了谋生,也要知道,这基本上是面试必问的题目,而且面试官很容易从被面试者的回答中捕捉到被面试者的技术水平。 本文略长,建议在 pc 上阅读,边看文章边翻源码(Java7 和 Java8 都一样),建议想好好看的读者抽出至少 30 分钟的整块时间来阅读。当然,如果读者仅为面试准备,可以直接滑到最后的 总结 部分。 总览 开篇来一些废话。下图是 java 线程池几个相关类的继承结构: 先简单说说这个继承结构,Executor 位于最顶层,也是最简单的