На устройстве не осталось места, задание Spark прекращено: пока нет подходящего решения в stackoverflow

У меня есть следующая файловая структура, если я использую df -h на любом из подчиненных или ведущих устройств

  Filesystem            Size  Used Avail Use% Mounted on
    /dev/xvda1            7.9G  4.4G  3.5G  57% /
    tmpfs                 7.4G  4.0K  7.4G   1% /dev/shm
    /dev/xvdb              37G  3.3G   32G  10% /mnt
    /dev/xvdf              37G  2.0G   34G   6% /mnt2
    /dev/xvdv             500G   33M  500G   1% /vol0

Мой spark-env.sh выглядит так

export SPARK_WORKER_DIR="/vol0"
export SPARK_WORKER_CORES=2
export SPARK_WORKER_OPTS="-Dspark.local.dir=/vol0"
export SPARK_LOCAL_DIRS="/vol0/"

Но все же я получаю сообщение об ошибке «Нет свободного места на устройстве», и задание прерывается во время сохранения файлов.

У меня есть один набор данных с 200 файлами по 1 ГБ каждый и другой набор данных с 200 файлами по 45 МБ каждый. Я присоединяюсь к ним и сохраняю в новый файл в s3.

DataFrame dataframe1= sqlContext.read().format("json").json(outputGrowth).coalesce(50);
        dataframe1.registerTempTable("dataframe1");



        DataFrame dataframe2 = sqlContext.read().format("json").json(pdiPath);
        dataframe2.registerTempTable("dataframe2");

        //Joining two tables
        String query = "join dataframe1 and dataframe2";
        DataFrame resultPDI = sqlContext.sql(query);
        dataPDI.unpersist();
        growthData.unpersist();
        resultPDI.write().mode("overwrite").json(outputPDI);

Итак, как мне настроить искру для хранения данных в /vol0 вместо другого файла /mnt/spark.

Я пробовал разные решения из stackoverflow, и в некоторых блогах у меня не работают какие-либо решения.

Может ли кто-нибудь помочь мне избавиться от этой проблемы. я использую 10 устройств m1.large на сервере Aws.


person Ashis Parajuli    schedule 07.12.2016    source источник
comment
Существуют и другие конфигурации, которые могут вызвать такие проблемы. Например, размещение журналов, локальные каталоги HDFS и т. д. Все они по умолчанию указывают на /tmp. Я бы начал их исследовать.   -  person Assaf Mendelson    schedule 07.12.2016
comment
Спасибо @AssafMendelson за ваше предложение. что это могут быть за параметры? можете вы помочь мне . и можете ли вы предложить мне, какой тип экземпляров мне следует использовать?   -  person Ashis Parajuli    schedule 07.12.2016
comment
@АссафМендельсон. где находится файл, в котором можно настроить параметры размещения журнала?   -  person Ashis Parajuli    schedule 07.12.2016
comment
Логов много. Для искры, для hdfs, для пряжи и т. д. Каждый из них может вызвать проблему. Для самой искры это настраивается с помощью spark.eventLog.dir. или используя переменную среды SPARK_LOG_DIR. В любом случае я бы просмотрел документацию по конфигурации для spark, hdfs и yarn и выяснил все каталоги, которые можно настроить.   -  person Assaf Mendelson    schedule 07.12.2016


Ответы (1)


Вы можете создать символическую ссылку для /mnt/spark на /val0, если вы используете Ubuntu, как показано ниже.

ln -s /val0 /mnt/spark

поэтому с помощью символической ссылки вы можете ссылаться на /val0 с помощью /mnt/spark. Для получения дополнительной информации перейдите по ссылке ниже http://ubuntuhak.blogspot.in/2013/04/symbolic-links-in-ubuntu.html

person Sandeep Purohit    schedule 07.12.2016
comment
но как сделать то же самое на всех ведомых вручную? или мы можем установить это в любом файле конфигурации? - person Ashis Parajuli; 07.12.2016
comment
да, вам нужно вручную создать символическую ссылку на всех рабочих узлах, но вы также можете попробовать с этой конфигурацией. - person Sandeep Purohit; 07.12.2016
comment
Я думаю, что это невозможно сделать вручную, так как данные будут расти, рабов будет больше сотни. - person Ashis Parajuli; 07.12.2016