Что такое Yarn Hadoop: подробное объяснение и особенности

Yarn Hadoop - это распределенная система обработки больших данных, которая используется для хранения и обработки данных в масштабе кластера. Yarn Hadoop основан на фреймворке Hadoop, который обеспечивает надежность, масштабируемость и быстродействие. Yarn Hadoop позволяет эффективно управлять ресурсами кластера и выполнять параллельную обработку данных. Пример использования Yarn Hadoop:

// Создание задачи MapReduce
Job job = new Job();
job.setJarByClass(MyJob.class);
job.setMapperClass(MyMapper.class);
job.setReducerClass(MyReducer.class);
job.setOutputKeyClass(Text.class);
job.setOutputValueClass(IntWritable.class);
FileInputFormat.addInputPath(job, new Path("input"));
FileOutputFormat.setOutputPath(job, new Path("output"));

// Отправка задачи на выполнение в Yarn Hadoop
job.submit();
В приведенном выше примере мы создаем задачу MapReduce, устанавливаем классы маппера и редьюсера, указываем типы ключей и значений для выходных данных, а также задаем входные и выходные пути. Затем мы отправляем задачу на выполнение в Yarn Hadoop. Yarn Hadoop предоставляет мощные инструменты для работы с большими данными и обеспечивает высокую производительность и масштабируемость. Он является важной частью экосистемы Hadoop и широко используется в различных индустриях для анализа и обработки данных.

Детальный ответ

Что такое YARN Hadoop?

Приветствую! Сегодня мы поговорим о YARN Hadoop и рассмотрим его подробнее.

YARN (Yet Another Resource Negotiator) является фреймворком распределенной обработки данных, который принадлежит проекту Apache Hadoop. YARN входит в состав Hadoop и является одним из ключевых компонентов этой платформы.

Теперь давайте рассмотрим каждую часть названия YARN Hadoop отдельно, чтобы понять, что они означают и как они взаимосвязаны.


Apache Hadoop

Apache Hadoop - это фреймворк для обработки больших объемов данных, который позволяет распределенно обрабатывать и хранить данные на кластере из множества узлов. Он разработан для эффективного выполнения операций по обработке данных, таких как хранение, обработка и анализ.

Apache Hadoop состоит из двух основных компонентов:

  • Hadoop Distributed File System (HDFS): HDFS предоставляет распределенную файловую систему, которая хранит данные на узлах в кластере Hadoop. Он обеспечивает высокую отказоустойчивость и расширяемость для хранения и обработки крупномасштабных данных.
  • Hadoop MapReduce: MapReduce - это модель программирования и система выполнения, которая позволяет распределенно обрабатывать большие объемы данных на кластере Hadoop.

YARN

Теперь перейдем к фреймворку YARN. YARN был разработан для улучшения и расширения возможностей оригинального фреймворка MapReduce в Apache Hadoop. Он предоставляет более гибкую и эффективную платформу для распределенной обработки данных.

Основная задача YARN - эффективное распределение ресурсов и управление ими на кластере. Он отвечает за планирование задач, выделение ресурсов и мониторинг их выполнения. Это позволяет кластеру Hadoop эффективно использовать вычислительные и сетевые ресурсы, что приводит к повышению производительности и масштабируемости.

YARN состоит из следующих компонентов:

  • Resource Manager: Resource Manager является главным компонентом YARN. Он отвечает за управление ресурсами кластера и планирование выполнения задач на узлах. Resource Manager принимает запросы на выполнение задач от клиентов и обрабатывает их, назначая ресурсы и запуская соответствующие задачи.
  • Node Manager: Node Manager управляет ресурсами на каждом узле кластера. Он отслеживает доступные ресурсы, управляет запуском и остановкой контейнеров (изолированных и планируемых процессов) и сообщает об их состоянии Resource Manager'у.
  • Application Master: Application Master является интерфейсом между клиентами и Resource Manager'ом. Он отслеживает и управляет жизненным циклом выполнения приложения, запрашивает ресурсы у Resource Manager'а и взаимодействует с Node Manager'ами для выполнения задач приложения.

Важно отметить, что YARN позволяет запускать не только задачи MapReduce, но и другие фреймворки обработки данных, такие как Apache Spark.


Пример использования YARN Hadoop

Давайте рассмотрим пример использования YARN Hadoop для выполнения задачи MapReduce на кластере Hadoop.


import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.mapreduce.Job;
import org.apache.hadoop.mapreduce.Mapper;
import org.apache.hadoop.mapreduce.Reducer;
import org.apache.hadoop.mapreduce.lib.input.FileInputFormat;
import org.apache.hadoop.mapreduce.lib.output.FileOutputFormat;

public class WordCount {
  public static class TokenizerMapper
       extends Mapper<Object, Text, Text, IntWritable>{

    private final static IntWritable one = new IntWritable(1);
    private Text word = new Text();

    public void map(Object key, Text value, Context context
                    ) throws IOException, InterruptedException {
      StringTokenizer itr = new StringTokenizer(value.toString());
      while (itr.hasMoreTokens()) {
        word.set(itr.nextToken());
        context.write(word, one);
      }
    }
  }

  public static class IntSumReducer
       extends Reducer<Text,IntWritable,Text,IntWritable> {
    private IntWritable result = new IntWritable();

    public void reduce(Text key, Iterable<IntWritable> values,
                       Context context
                       ) throws IOException, InterruptedException {
      int sum = 0;
      for (IntWritable val : values) {
        sum += val.get();
      }
      result.set(sum);
      context.write(key, result);
    }
  }

  public static void main(String[] args) throws Exception {
    Configuration conf = new Configuration();
    Job job = Job.getInstance(conf, "word count");
    job.setJarByClass(WordCount.class);
    job.setMapperClass(TokenizerMapper.class);
    job.setCombinerClass(IntSumReducer.class);
    job.setReducerClass(IntSumReducer.class);
    job.setOutputKeyClass(Text.class);
    job.setOutputValueClass(IntWritable.class);
    FileInputFormat.addInputPath(job, new Path(args[0]));
    FileOutputFormat.setOutputPath(job, new Path(args[1]));
    System.exit(job.waitForCompletion(true) ? 0 : 1);
  }
}

Это простой пример приложения MapReduce, которое считает количество вхождений каждого слова во входных данных. Вы можете сохранить код в файл с именем WordCount.java и скомпилировать его с помощью команды javac.

После компиляции вы можете запустить приложение MapReduce с использованием YARN Hadoop, указав входные и выходные данные в качестве аргументов командной строки. Приложение будет распределено и выполнено на кластере Hadoop с помощью YARN.


Теперь, когда мы понимаем, что такое YARN Hadoop и как он функционирует, вы можете использовать его для эффективной обработки больших объемов данных на кластере Hadoop. Это позволяет вам использовать вычислительные ресурсы более эффективно и упрощает разработку и выполнение распределенных приложений.

Благодаря YARN Hadoop вы можете не только выполнять задачи MapReduce, но и использовать другие фреймворки обработки данных, такие как Apache Spark, что дает вам гибкость и возможности для решения разнообразных задач обработки данных.

Так что не бойтесь использовать YARN Hadoop и получайте максимум выгоды от обработки данных в кластере Hadoop!

Видео по теме

Hadoop. YARN

Hadoop Tutorial - The YARN

YARN Architecture

Похожие статьи:

Что такое Yarn Hadoop: подробное объяснение и особенности