Niedrige Anzahl der Schreibvorgänge in elasticsearch mit Spark Java.Spark + Elastic Suche schreiben Leistungsproblem
Hier sind die Konfigurationen
Verwendung 13.xlarge Maschinen für ES-Cluster
4 instances each have 4 processors.
Set refresh interval to -1 and replications to '0' and other basic
configurations required for better writing.
Funken:
2 Knoten EMR-Cluster mit
2 Core instances
- 8 vCPU, 16 GiB memory, EBS only storage
- EBS Storage:1000 GiB
1 Master node
- 1 vCPU, 3.8 GiB memory, 410 SSD GB storage
ES Index hat 16 shards im Mapping definiert.
unter Config mit, wenn der Auftrag ausgeführt wird,
executor-memory - 8g
spark.executor.instances=2
spark.executor.cores=4
und mit
es.batch.size.bytes - 6MB
es.batch.size.entries - 10000
es.batch.write.refresh - false
mit dieser Konfiguration, versuche ich 1 Million Dokumente zu laden (jedes Dokument eine Größe von 1300 Bytes hat), so dass es Lädt die Last bei 500 Datensätzen/Dokumenten pro ES-Knoten.
und im Funken log bin jede Aufgabe sehen
-1116 bytes result sent to driver
Funken-Code
JavaRDD<String> javaRDD = jsc.textFile("<S3 Path>");
JavaEsSpark.saveJsonToEs(javaRDD,"<Index name>");
Auch wenn ich auf die Grafik In-Netzwerk sucht in ES-Cluster ist es sehr niedrig ist, und ich sehe, EMR sendet keine riesigen Daten über ein Netzwerk. Gibt es eine Möglichkeit, dass ich Spark anweisen kann, eine richtige Anzahl von Daten zu senden, um das Schreiben schneller zu machen?
ODER
Gibt es eine andere Konfiguration, die ich zu zwicken bin fehlt. Ursache Ich sehe 500docs pro Sekunde pro es-Instanz ist niedriger. Kann jemand bitte leitet, was mit dieser Einstellung ist fehlt meint es schreibt
Vielen Dank im Voraus Leistung
In Ihrem Verzeichnis s3, lesen Sie eine einzelne Datei oder viele Dateien? –
mit vielen Dateien – camelBeginner