Журнал событий Spark Согласованность HDFS - PullRequest
1 голос
/ 06 марта 2019

Я сталкиваюсь с этой странной проблемой, когда длины журналов событий Spark не обновляются должным образом. Например, мы рассмотрим файл application_1551818805190_0006_1.inprogress.

Когда я использую hdfs dfs -ls /var/log/spark/apps/, я вижу, что размер файла составляет всего 309 байт:

[hadoop ~]$ hdfs dfs -ls hdfs:///var/log/spark/apps
-rwxrwx---   2 hadoop spark  138180350 2019-03-05 22:47 hdfs:///var/log/spark/apps/application_1551818805190_0004_1
-rwxrwx---   2 hadoop spark  138184198 2019-03-05 22:57 hdfs:///var/log/spark/apps/application_1551818805190_0005_1
-rwxrwx---   2 hadoop spark        309 2019-03-05 23:59 hdfs:///var/log/spark/apps/application_1551818805190_0006_1.inprogress

Но когда я получаю файл из HDFS (hdfs dfs -get) и выполняю ls в локальной файловой системе, тогда длина файла на самом деле составляет 85695488 байт! Я в замешательстве, потому что Spark EventLoggingListener использует метод .hflush(), который должен сделать данные видимыми для всех читателей.

Я сталкиваюсь с той же проблемой, когда использую API-интерфейсы Java для Hadoop. Помимо открытия FSDataInputStream и использования skip для ручного вычисления фактической длины файла в байтах, что я могу сделать?

1 Ответ

0 голосов
/ 02 апреля 2019

решаемая.Оказывается, что средство записи для Spark History Server, EventLoggingListener, будет «сбрасывать» данные в HDFS, но клиент будет сбрасывать только при выделении нового блока.

...