我使用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实现是否在内部使用它?如何解决这个异常?
答案 0 :(得分:1)
这与Titan的DynamoDB实现没有直接关系,但错误Too many open files
是* nix os的一个相当常见的问题。
了解如何提高操作系统中打开文件数量的信息,问题就会消失(例如How to increase Neo4j's maximum file open limit (ulimit) in Ubuntu?)。