2017-06-13 4 views
0

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?

Antwort

0

Ich habe es geschafft, dies zu lösen. Abgesehen von der Einstellung es.nodes und es.port in Spark, verschwindet das Problem, wenn ich es.nodes.wan.only auf true setzen.

Verwandte Themen