为什么亚马逊Titan抛出Elasticsearch异常?

时间:2016-03-16 21:30:30

标签: amazon-dynamodb titan

我使用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实现是否在内部使用它?如何解决这个异常?

1 个答案:

答案 0 :(得分:1)

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

了解如何提高操作系统中打开文件数量的信息,问题就会消失(例如How to increase Neo4j's maximum file open limit (ulimit) in Ubuntu?)。