Что такое 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!