问题标签 [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.
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 的新手,请帮我找出我的错误。我现在至少挣扎了一个星期。
非常感谢您提前。
java - 回收 Runnable 对象,我该怎么做?
在我的 Android 应用程序中,我使用单线程执行器,每 300 毫秒创建一个新的 MyRunnable,然后调用 SingleThreadExecutor 的方法 execute()。现在我的目标是回收 Runnable 对象。但我不知道何时以及如何发布 Runnable .. 你能帮帮我吗?
其他一些细节:我的实现 Runnable 的类称为 MyRunnable,其中有设置和重置 MyRunnable 参数的方法。每 300 毫秒我创建一个新的 MyRunnable 并在调用 execute 方法之前设置所有数据。
java - 在 Java 中使用计时器最推荐的方法是什么
我正在使用 java 中的套接字编程。我必须在每个连接中使用计时器,并且我正在使用类似以下代码的计时器:
我正在使用“stopTimer”函数来暂停定时器和“shutdownTimer”函数来删除定时器任务。但是当像这样使用定时器时,有时会运行数千个定时器线程,因为数千个时间同时存在。防止此问题的最佳方法是什么?
apache-spark - spark-1.6 和 spark-1.5 中的执行者数量
我已将 5 节点 spark 集群从 spark-1.5 升级到 spark-1.6(使用 mapWithState 函数)。使用 spark-1.6 后,我得到了一个奇怪的 spark 行为,作业一次没有使用不同节点的多个执行程序,这意味着如果每个节点都有单个工作程序和执行程序,则没有并行处理。我在 spark 独立模式下运行作业。
我观察到与此问题相关的以下几点。
- 如果我使用 spark-1.5 运行相同的作业,那么这将一次使用跨不同节点的多个执行器。
- 在 Spark-1.6 中,如果我增加核心数(spark.cores.max),那么作业将在并行线程中运行,但在同一个执行程序中。
- 在 Spark-1.6 中,如果我在每个节点上增加工作实例的数量,那么作业将并行运行,因为没有工作人员但在同一节点内。
任何人都可以建议,为什么 spark 1.6 不能一次跨不同节点使用多个执行器进行并行处理。您的建议将不胜感激。
java - 在 HTTPServer 的 Executors.newFixedThreadPool 中设置可用的处理器
我正在构建一个需要同时处理多个请求的 HTTPServer。
我构建的主要功能如下所示:
现在我正在考虑这Executors.newCachedThreadPool()
对于创建的线程数量是如何工作的。正如我所读到的,要创建的线程数没有限制,如果我同时收到一千个请求,它会创建一千个线程吗?
我正在考虑限制同时创建的线程数,以便在运行它的机器上正确处理。我想到了这样的事情:
目标是仅根据系统中的可用处理器创建给定数量的线程。
这行得通吗?
提前致谢!!
java - newFixedThreadPool 比单线程程序慢
这是我的困境的简要概述。我正在学习多线程,因此决定制作一个缩略图创建程序来处理大约 300 张图像。起初,我在一个线程上完成了所有缩略图的创建,这花费了大约 99 秒。所以我认为 usingnewFixedThreadPool()
会使程序更快。我听说使用Executors.newFixedThreadPool()
比手动创建线程便宜。所以我做了:
4 是我机器上的核心数。
奇怪的是,这样做会使程序变慢。当我在 中使用一个线程时newFixedThreadPool
,任务在大约 118 秒内完成。当我使用 4 个线程时,任务在大约 99 秒内完成。比初始单线程操作慢几毫秒。当我使用 10 个线程时,所用时间约为 110 秒。
我完全不知道如何使程序更快。我在想使用 4 个线程是最佳的,它可以让工作在单线程操作所用时间的大约四分之一内完成。
有人对可以做什么有任何建议吗?这是我的(非常丑陋的代码)
java - 为什么我应该使用 NIO(或 netty 之类的框架)而不是 java 执行器?
就在最近,我了解了 NIO。我的理解是,NIO 的主要优点是我们可以只用一个(或几个)线程处理许多连接,这要归功于 NIO 的非阻塞特性。但是我们不能使用 Executors 并拥有一个工作线程列表来实现这个目标吗?
我看不出 NIO 比 Executor 有任何优势。相反,我认为执行器比使用 NIO 更好,因为读取消息非常容易,例如我们只需要调用 readLin(),但是在 NIO 中,我们应该检查消息是否是部分的或缓冲区是否有多个消息。
非阻塞的特性也存在于executor的灵魂中,这里我们调用executor的execute函数,基本上就是将连接添加到一个buffer中,等待固定数量的线程空闲。
那么,为什么有人会使用 NIO 而不是使用 executors 呢?
谢谢
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
正在阻止操作。有人可以验证吗?
java - ExecutorService 永远不会停止。在另一个正在执行的任务中执行新任务时
再会。
我的网络爬虫项目有拦截器问题。逻辑很简单。首先创建一个Runnable
,它下载 html 文档,扫描所有链接,然后在所有资助的链接上创建新Runnable
对象。Runnable
依次创建的每个新对象Runnable
都会为每个链接创建新对象并执行它们。
问题是ExecutorService
永远不会停止。
爬虫测试.java
爬虫服务.java
这个应用程序需要大约 20 秒来扫描 jsoup.org 以获取所有唯一链接。但它只是等待 10 分钟executorService.awaitTermination(10, TimeUnit.MINUTES);
,然后我看到死的主线程并且仍在工作的执行程序。
如何强制ExecutorService
正常工作?
我认为问题在于它在另一个任务中而不是在主线程中调用 executorService.execute。
apache-spark - 如何在 Apache Spark 中启用 ExecutorAllocationManagerSource 指标?
在 Apache Spark 中启用通用指标的文档有点薄:
在一个实例中,“源”指定一组特定的分组度量。有两种来源:
Spark 内部源,如 MasterSource、WorkerSource 等,它们将收集 Spark 组件的内部状态。每个实例都与自动添加的 Spark 源配对。
常见的来源,如 JvmSource,它将收集低级状态。这些可以通过配置选项添加,然后使用反射加载。
所有示例均采用以下形式:
然而,没有一个看似合理的变化允许我发布生成的指标ExecutorAllocationManagerSource
该类没有经过单元测试,我找不到任何其他文档或示例。