【发布时间】:2015-09-24 05:44:05
【问题描述】:
所以我正在运行一个 Hadoop 查询,该查询需要来自在 Amazon EC2 上运行的 ElasticSearch 索引中的字段的信息。问题是,我不断收到“没有配置的节点可用”错误。更令人沮丧的是,几天前我有这个工作,然后由于缺乏 CPU 操作,它在查询中间退出。但我的伙伴不知道这一点,所以他试图弄清楚为什么它在查询过程中失去连接似乎导致了这个问题。而且他不记得自己做了什么。
我知道之前有人问过这个问题,但我确定我的集群名称是正确的,并且我在 ES 上运行的查询不应该导致超时,而且之前运行时也不会。此外,不应该有防火墙问题,因为我直接在 EC2 实例上运行程序。它是一个使用yarn的伪分布式单节点集群。 EC2 实例具有关联的弹性 IP(这意味着其公共 IP 将保持不变),并且正在运行 Amazon 的 ubuntu 映像。
这是java代码(识别信息已删除):
public static String getAccountNumber(int fieldValue){
//tried it without the Settings, but still no dice.
Settings settings = ImmutableSettings.settingsBuilder().put("cluster.name", "elasticsearch").build();
TransportClient client = new TransportClient(settings)
.addTransportAddress(new InetSocketTransportAddress("ec2-<ELASTIC_IP>.compute-1.amazonaws.com", 9300));
FilterBuilder filter = boolFilter()
.should(termFilter("objectName1.field", fieldValue))
.should(termFilter("objectName2.field", fieldValue));
SearchResponse response= client.prepareSearch("indexName")
.setTypes("type")
.setPostFilter(filter)
.setSize(1000)
.execute()
.actionGet();
//other logic
如果您需要我提供我的 core-site.xml、hdfs-site.xml 或其他任何内容,请告诉我。
【问题讨论】:
标签: java hadoop elasticsearch amazon-ec2