Ich verwende Docker 17.04.0-ce und Compose 1.12.0 in Windows um Elasticsearch Cluster (Version 5.4.0) über Docker bereitstellen . Bisher habe ich folgendes getan:Funkenjob (Java) kann nicht schreiben Daten Elasticsearch Cluster
1) Ich habe einen einzigen Elasticsearch erstellt Knoten über mit der folgenden Konfiguration
elasticsearch1:
build: elasticsearch/
container_name: es_1
cap_add:
- IPC_LOCK
environment:
- cluster.name=cp-es-cluster
- node.name=cloud1
- node.master=true
- http.cors.enabled=true
- http.cors.allow-origin="*"
- bootstrap.memory_lock=true
- discovery.zen.minimum_master_nodes=1
- xpack.security.enabled=false
- xpack.monitoring.enabled=false
- "ES_JAVA_OPTS=-Xms1g -Xmx1g"
ulimits:
memlock:
soft: -1
hard: -1
nofile:
soft: 65536
hard: 65536
volumes:
- esdata1:/usr/share/elasticsearch/data
ports:
- 9200:9200
- 9300:9300
networks:
docker_elk:
aliases:
- elasticsearch
im Knoten eingesetzt werden Dies führt zu komponieren, aber es ist nicht zugänglich Spark . Ich schreibe Daten als
JavaEsSparkSQL.saveToEs(aggregators.toDF(), collectionName +"/record");
und ich die folgende Fehlermeldung erhalten, obwohl der Knoten läuft
I/O exception (java.net.ConnectException) caught when processing request: Connection timed out: connect
2) Ich fand heraus, dass dieses Problem gelöst ist, wenn ich die folgende Zeile in der Knotenkonfiguration hinzufügen
- network.publish_host=${ENV_IP}
3) Dann habe ich ähnliche Konfigurationen für 2 weitere Knoten als
elasticsearch1:
build: elasticsearch/
container_name: es_1
cap_add:
- IPC_LOCK
environment:
- cluster.name=cp-es-cluster
- node.name=cloud1
- node.master=true
- http.cors.enabled=true
- http.cors.allow-origin="*"
- bootstrap.memory_lock=true
- discovery.zen.minimum_master_nodes=1
- xpack.security.enabled=false
- xpack.monitoring.enabled=false
- "ES_JAVA_OPTS=-Xms1g -Xmx1g"
- network.publish_host=${ENV_IP}
ulimits:
memlock:
soft: -1
hard: -1
nofile:
soft: 65536
hard: 65536
volumes:
- esdata1:/usr/share/elasticsearch/data
ports:
- 9200:9200
- 9300:9300
networks:
docker_elk:
aliases:
- elasticsearch
elasticsearch2:
build: elasticsearch/
container_name: es_2
cap_add:
- IPC_LOCK
environment:
- cluster.name=cp-es-cluster
- node.name=cloud2
- http.cors.enabled=true
- http.cors.allow-origin="*"
- bootstrap.memory_lock=true
- discovery.zen.minimum_master_nodes=2
- xpack.security.enabled=false
- xpack.monitoring.enabled=false
- "ES_JAVA_OPTS=-Xms512m -Xmx512m"
- "discovery.zen.ping.unicast.hosts=elasticsearch1"
- node.master=false
ulimits:
memlock:
soft: -1
hard: -1
nofile:
soft: 65536
hard: 65536
volumes:
- esdata2:/usr/share/elasticsearch/data
ports:
- 9201:9200
- 9301:9300
networks:
- docker_elk
elasticsearch3:
build: elasticsearch/
container_name: es_3
cap_add:
- IPC_LOCK
environment:
- cluster.name=cp-es-cluster
- node.name=cloud3
- http.cors.enabled=true
- http.cors.allow-origin="*"
- bootstrap.memory_lock=true
- discovery.zen.minimum_master_nodes=2
- xpack.security.enabled=false
- xpack.monitoring.enabled=false
- "ES_JAVA_OPTS=-Xms512m -Xmx512m"
- "discovery.zen.ping.unicast.hosts=elasticsearch1"
- node.master=false
ulimits:
memlock:
soft: -1
hard: -1
nofile:
soft: 65536
hard: 65536
volumes:
- esdata3:/usr/share/elasticsearch/data
ports:
- 9202:9200
- 9302:9300
networks:
- docker_elk
Dies führt dazu, dass ein Cluster von 3 Knoten erfolgreich erstellt wird. Derselbe Fehler trat jedoch erneut in Spark auf und Daten können nicht in den Cluster geschrieben werden. Ich bekomme das gleiche Verhalten, auch wenn ich network.publish_host
zu allen Knoten hinzufüge.
In Bezug auf Spark, verwende ich elasticsearch-spark-20_2.11 Version 5.4.0 (dasselbe wie ES-Version). Irgendwelche Ideen, wie man dieses Problem löst?