为什么 Amazon Titan 会抛出 Elasticsearch 异常



我正在使用Spark编写一个繁重的应用程序,需要在集群上安装50台机器来读取/写入图形。

目前,我正在本地测试它,这意味着有 50 个线程并行启动。它们中的每一个都初始化数据库连接。

由于某种原因,我收到此错误:

16/03/16 21:18:19 WARN state.meta: [Jacob "Jake" Fury] failed to find dangling indices
java.nio.file.FileSystemException: /tmp/searchindex/data/elasticsearch/nodes/32/indices: Too many open files
    at sun.nio.fs.UnixException.translateToIOException(UnixException.java:91)
    at sun.nio.fs.UnixException.rethrowAsIOException(UnixException.java:102)
    at sun.nio.fs.UnixException.rethrowAsIOException(UnixException.java:107)
    at sun.nio.fs.UnixFileSystemProvider.newDirectoryStream(UnixFileSystemProvider.java:427)
    at java.nio.file.Files.newDirectoryStream(Files.java:457)
    at org.elasticsearch.env.NodeEnvironment.findAllIndices(NodeEnvironment.java:530)
    at org.elasticsearch.gateway.local.state.meta.LocalGatewayMetaState.clusterChanged(LocalGatewayMetaState.java:245)
    at org.elasticsearch.gateway.local.LocalGateway.clusterChanged(LocalGateway.java:215)
    at org.elasticsearch.cluster.service.InternalClusterService$UpdateTask.run(InternalClusterService.java:467)
    at org.elasticsearch.common.util.concurrent.PrioritizedEsThreadPoolExecutor$TieBreakingPrioritizedRunnable.runAndClean(PrioritizedEsThreadPoolExecutor.java:188)
    at org.elasticsearch.common.util.concurrent.PrioritizedEsThreadPoolExecutor$TieBreakingPrioritizedRunnable.run(PrioritizedEsThreadPoolExecutor.java:158)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
    at java.lang.Thread.run(Thread.java:745)

我在配置文件中根本没有使用 ElasticSearch。 我所有的索引都是复合的。Titan DynamoDB 实施是否在内部使用它?如何解决此异常?

这与 Titan 的 DynamoDB 实现没有直接关系,但错误Too many open files是 *nix os 的一个相当普遍的问题。

挖掘有关如何提高操作系统中打开文件数量的信息,问题就会消失(例如,如何在 Ubuntu 中增加 Neo4j 的最大文件打开限制 (ulimit)?)。

最新更新