Раздувание памяти при кешировании в Spark - PullRequest
2 голосов
/ 26 июня 2019

У меня кластер из 5 узлов, каждый из которых имеет физическую память по 132 ГБ и управляется Cloudera. Однако оба свойства yarn.nodemanager.resource.memory-mb и yarn.scheduler.maximum-allocation-mb были установлены на 100 ГБ. Я отправляю работу с 5 исполнителями, 5 ядрами на исполнителя и 40 ГБ памяти на исполнителя. Этот код просто берет файл размером 16 ГБ, помещает его в RDD и кэширует следующим образом

try {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        System.out.println("Enter the file name");
        String file = br.readLine();

        // getting the context and spark configuration
        SparkConf sparkConf = new SparkConf();
        JavaSparkContext ctx = new JavaSparkContext(sparkConf);

        // getting the input file into JavaRDD of strings
        JavaRDD<String> lines = ctx.textFile("hdfs:/root/utkarsh/stark/" + file).cache();
        lines.count();
        ctx.close();
    } catch (IOException e) {
        e.printStackTrace();
    }

Во время работы я наблюдаю потребление физической памяти 3-мя узлами с 2 + 2 + 1 исполнителями соответственно. Пиковая память для узлов составляет 54, 26, 48 ГБ соответственно.

Почему память раздувается, тогда как мой ввод составляет всего 16 ГБ.

Заранее спасибо !!

...