Не удалось сохранить искру в эластичный поиск из-за ошибки подключения - PullRequest
0 голосов
/ 08 июня 2018

Я пытаюсь проиндексировать данные вasticsearch о 77M документах с 150 полями.У нас мало вычислительных ресурсов / ресурсов памяти, поэтому наш кластер состоит из 3 узлов (48 ГБ ОЗУ / 24 ЦП и 6 ТБ памяти)

Я отправляю данные из другого искрового кластера в другую виртуальную сеть, но эти две сети связаны друг с другоми я МОГУ ПИНГИТЬ ВСЕ узлы els от узлов искрового кластера.

проблема, с которой я сталкиваюсь: заключается в том, что при определенном количестве проиндексированных документов (около 8M) спарк не может подключиться к els и выдает следующую ошибку:

Job aborted due to stage failure: Task 173 in stage 9.0 failed 4 times, most recent failure: Lost task 173.3 in stage 9.0 (TID 17160, wn21-swspar.of12wietsveu3a3voc5bflf1pa.ax.internal.cloudapp.net, executor 3): org.elasticsearch.hadoop.rest.EsHadoopNoNodesLeftException: Connection error (check network and/or proxy settings)- all nodes failed; tried [[10.0.0.12:9200]] 
at org.elasticsearch.hadoop.rest.NetworkClient.execute(NetworkClient.java:149)
at org.elasticsearch.hadoop.rest.RestClient.execute(RestClient.java:466)
at org.elasticsearch.hadoop.rest.RestClient.execute(RestClient.java:450)
at org.elasticsearch.hadoop.rest.RestClient.bulk(RestClient.java:186)
at org.elasticsearch.hadoop.rest.RestRepository.tryFlush(RestRepository.java:248)
at org.elasticsearch.hadoop.rest.RestRepository.flush(RestRepository.java:270)
at org.elasticsearch.hadoop.rest.RestRepository.doWriteToIndex(RestRepository.java:210)
at org.elasticsearch.hadoop.rest.RestRepository.writeToIndex(RestRepository.java:187)
at org.elasticsearch.spark.rdd.EsRDDWriter.write(EsRDDWriter.scala:67)
at org.elasticsearch.spark.sql.EsSparkSQL$$anonfun$saveToEs$1.apply(EsSparkSQL.scala:101)
at org.elasticsearch.spark.sql.EsSparkSQL$$anonfun$saveToEs$1.apply(EsSparkSQL.scala:101)
at org.apache.spark.scheduler.ResultTask.runTask(ResultTask.scala:87)
at org.apache.spark.scheduler.Task.run(Task.scala:108)
at org.apache.spark.executor.Executor$TaskRunner.run(Executor.scala:338)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at java.lang.Thread.run(Thread.java:748)

Донне знаю, что может вызвать это.Размер кластера (RAM / CPU) не достаточно велик или существует специальная конфигурация для индексов с огромным объемом данных?Я уверен, что это не проблема сети.Версия ELS: 6.2.4

Ответы [ 3 ]

0 голосов
/ 08 июня 2018

Я думаю, что вы столкнулись с этой проблемой из-за неназначенных основных сегментов для индекса, из-за которых он не может подключиться к ES.Не могли бы вы проверить журналы, если есть какая-либо проблема с неназначенным осколком?

0 голосов
/ 12 июня 2019

У меня была такая проблема, и я исправил ее, изменив размер индекса.Другими словами, размер индекса по умолчанию равен 1000.

Измените размер индекса, изменив настройки: "index.mapping.total_fields.limit": 10000 (например)

0 голосов
/ 08 июня 2018

Я полагаю, что Spark пытается сделать так много запросов, которые не может обработать ваш кластер ES.Проверьте эту ссылку https://www.elastic.co/guide/en/elasticsearch/hadoop/current/configuration.html, чтобы больше узнать о том, как вы отправляете данные в ES, проверьте:

  • es.batch.size.bytes
  • es.batch.size.entries
  • es.batch.write.retry.count
  • es.http.retries
  • es.http.timeout

И, пожалуйста, проверьте, как вы хотите направить запросы, используя es.nodes.client.only и т. Д.

...