问题标签 [executors]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1521 浏览

scala - Spark:Executor Lost Failure(添加 groupBy 作业后)

我正在尝试在 Yarn 客户端上运行 Spark 作业。我有两个节点,每个节点都有以下配置。 在此处输入图像描述

我收到“ExecutorLostFailure(执行者 1 丢失)”。

我已经尝试了大部分 Spark 调优配置。我已经减少到一个执行者丢失,因为最初我有 6 个执行者失败。

这些是我的配置(我的 spark-submit):

HADOOP_USER_NAME=hdfs spark-submit --class genkvs.CreateFieldMappings --master yarn-client --driver-memory 11g --executor-memory 11G --total-executor-cores 16 --num-executors 15 --conf "spark. executor.extraJavaOptions=-XX:+UseCompressedOops -XX:+PrintGCDetails -XX:+PrintGCTimeStamps" --conf spark.akka.frameSize=1000 --conf spark.shuffle.memoryFraction=1 --conf spark.rdd.compress=true --conf spark.core.connection.ack.wait.timeout=800 my-data/lookup_cache_spark-assembly-1.0-SNAPSHOT.jar -h hdfs://hdp-node-1.zone24x7.lk:8020 -p 800

我的数据大小是 6GB,我正在做一个 groupBy 我的工作。

我是 Spark 的新手,请帮我找出我的错误。我现在至少挣扎了一个星期。

非常感谢您提前。

0 投票
0 回答
232 浏览

java - 回收 Runnable 对象,我该怎么做?

在我的 Android 应用程序中,我使用单线程执行器,每 300 毫秒创建一个新的 MyRunnable,然后调用 SingleThreadExecutor 的方法 execute()。现在我的目标是回收 Runnable 对象。但我不知道何时以及如何发布 Runnable .. 你能帮帮我吗?

其他一些细节:我的实现 Runnable 的类称为 MyRunnable,其中有设置和重置 MyRunnable 参数的方法。每 300 毫秒我创建一个新的 MyRunnable 并在调用 execute 方法之前设置所有数据。

0 投票
1 回答
103 浏览

java - 在 Java 中使用计时器最推荐的方法是什么

我正在使用 java 中的套接字编程。我必须在每个连接中使用计时器,并且我正在使用类似以下代码的计时器:

我正在使用“stopTimer”函数来暂停定时器和“shutdownTimer”函数来删除定时器任务。但是当像这样使用定时器时,有时会运行数千个定时器线程,因为数千个时间同时存在。防止此问题的最佳方法是什么?

0 投票
0 回答
156 浏览

apache-spark - spark-1.6 和 spark-1.5 中的执行者数量

我已将 5 节点 spark 集群从 spark-1.5 升级到 spark-1.6(使用 mapWithState 函数)。使用 spark-1.6 后,我得到了一个奇怪的 spark 行为,作业一次没有使用不同节点的多个执行程序,这意味着如果每个节点都有单个工作程序和执行程序,则没有并行处理。我在 spark 独立模式下运行作业。

我观察到与此问题相关的以下几点。

  1. 如果我使用 spark-1.5 运行相同的作业,那么这将一次使用跨不同节点的多个执行器。
  2. 在 Spark-1.6 中,如果我增加核心数(spark.cores.max),那么作业将在并行线程中运行,但在同一个执行程序中。
  3. 在 Spark-1.6 中,如果我在每个节点上增加工作实例的数量,那么作业将并行运行,因为没有工作人员但在同一节点内。

任何人都可以建议,为什么 spark 1.6 不能一次跨不同节点使用多个执行器进行并行处理。您的建议将不胜感激。

0 投票
1 回答
1373 浏览

java - 在 HTTPServer 的 Executors.newFixedThreadPool 中设置可用的处理器

我正在构建一个需要同时处理多个请求的 HTTPServer。

我构建的主要功能如下所示:

现在我正在考虑这Executors.newCachedThreadPool()对于创建的线程数量是如何工作的。正如我所读到的,要创建的线程数没有限制,如果我同时收到一千个请求,它会创建一千个线程吗?

我正在考虑限制同时创建的线程数,以便在运行它的机器上正确处理。我想到了这样的事情:

目标是仅根据系统中的可用处理器创建给定数量的线程。

这行得通吗?

提前致谢!!

0 投票
0 回答
686 浏览

java - newFixedThreadPool 比单线程程序慢

这是我的困境的简要概述。我正在学习多线程,因此决定制作一个缩略图创建程序来处理大约 300 张图像。起初,我在一个线程上完成了所有缩略图的创建,这花费了大约 99 秒。所以我认为 usingnewFixedThreadPool()会使程序更快。我听说使用Executors.newFixedThreadPool()比手动创建线程便宜。所以我做了:

4 是我机器上的核心数。

奇怪的是,这样做会使程序变慢。当我在 中使用一个线程时newFixedThreadPool,任务在大约 118 秒内完成。当我使用 4 个线程时,任务在大约 99 秒内完成。比初始单线程操作慢几毫秒。当我使用 10 个线程时,所用时间约为 110 秒。

我完全不知道如何使程序更快。我在想使用 4 个线程是最佳的,它可以让工作在单线程操作所用时间的大约四分之一内完成。

有人对可以做什么有任何建议吗?这是我的(非常丑陋的代码)

0 投票
1 回答
1843 浏览

java - 为什么我应该使用 NIO(或 netty 之类的框架)而不是 java 执行器?

就在最近,我了解了 NIO。我的理解是,NIO 的主要优点是我们可以只用一个(或几个)线程处理许多连接,这要归功于 NIO 的非阻塞特性。但是我们不能使用 Executors 并拥有一个工作线程列表来实现这个目标吗?

我看不出 NIO 比 Executor 有任何优势。相反,我认为执行器比使用 NIO 更好,因为读取消息非常容易,例如我们只需要调用 readLin(),但是在 NIO 中,我们应该检查消息是否是部分的或缓冲区是否有多个消息。

非阻塞的特性也存在于executor的灵魂中,这里我们调用executor的execute函数,基本上就是将连接添加到一个buffer中,等待固定数量的线程空闲。

那么,为什么有人会使用 NIO 而不是使用 executors 呢?

谢谢

0 投票
1 回答
96 浏览

java - 在 Concurrent 框架中使用 shutdownNow

如果我使用Futures喜欢

或者

系统等待任务完成。

即使我executorService.shutdownNow();在上面提到的语句之后,我真的不明白系统何时会强制终止文档中提到的现有线程,因为系统在任务完成并返回未来之前永远不会到达线路。我错过了什么吗?是否有不同的测试用例场景来测试它?

shutdownNow仅当我们Runnable说 ie 时才 有效?executorService.submit(new MyRunnable())

编辑:

我尝试了一些不同的东西,发现

a)shutdownNow不适用于invokeAll.

b)shutdownNow如果在此之后存在,Future.get则该语句shutdownNow被阻塞,直到 Future被解决(在 的情况下Callable)。

c)shutdownNow完美地与Runnable.

以下是我为测试而编写的代码:

我正在测试它如下:

任务都在哪里Callables

底线是invokeAll并且Future.get正在阻止操作。有人可以验证吗?

0 投票
4 回答
1055 浏览

java - ExecutorService 永远不会停止。在另一个正在执行的任务中执行新任务时

再会。

我的网络爬虫项目有拦截器问题。逻辑很简单。首先创建一个Runnable,它下载 html 文档,扫描所有链接,然后在所有资助的链接上创建新Runnable对象。Runnable依次创建的每个新对象Runnable都会为每个链接创建新对象并执行它们。

问题是ExecutorService永远不会停止。

爬虫测试.java

爬虫服务.java

这个应用程序需要大约 20 秒来扫描 jsoup.org 以获取所有唯一链接。但它只是等待 10 分钟executorService.awaitTermination(10, TimeUnit.MINUTES); ,然后我看到死的主线程并且仍在工作的执行程序。

线程

如何强制ExecutorService正常工作?

我认为问题在于它在另一个任务中而不是在主线程中调用 executorService.execute。

0 投票
1 回答
151 浏览

apache-spark - 如何在 Apache Spark 中启用 ExecutorAllocationManagerSource 指标?

在 Apache Spark 中启用通用指标的文档有点薄:

在一个实例中,“源”指定一组特定的分组度量。有两种来源:

Spark 内部源,如 MasterSource、WorkerSource 等,它们将收集 Spark 组件的内部状态。每个实例都与自动添加的 Spark 源配对。

常见的来源,如 JvmSource,它将收集低级状态。这些可以通过配置选项添加,然后使用反射加载。

所有示例均采用以下形式:

然而,没有一个看似合理的变化允许我发布生成的指标ExecutorAllocationManagerSource

该类没有经过单元测试,我找不到任何其他文档或示例。