Статьи

Hadoop на Azure: введение

  5xeb23px


Я в полном восторге от того, как эта технология находит отклик у современных разработчиков.
Если я приглашаю разработчиков на вечернее мероприятие, Big Data — это всегда распродажа.

Этот конкретный пост о том, как заставить всех узнать о том, что такое Hadoop на высоком уровне.

Большие данные — это технология, которая управляет огромным количеством неструктурированных и полуструктурированных данных.

Из-за своего размера и полуструктурированной природы он не подходит для реляционных баз данных для анализа.

Большие данные обычно в петабайтах и ​​эксабайтах данных.

  1. Однако речь идет не только об общем объеме данных (объеме).
  2. Это также касается скорости (насколько быстро поступают данные)
  3. Какова структура? Есть ли варианты?

Источники больших данных
Наука Ученые регулярно сталкиваются с большими массивами данных во многих областях, включая метеорологию, геномику, коннектомику, сложные физические симуляции, а также биологические и экологические исследования.
датчиков Наборы данных увеличиваются в размерах отчасти потому, что их все чаще собирают повсеместные мобильные устройства, чувствительные к информации, воздушные сенсорные технологии (дистанционное зондирование), журналы программного обеспечения, камеры, микрофоны, устройства считывания радиочастотной идентификации и беспроводные сенсорные сети.
Социальные сети Я думаю о Facebook, LinkedIn, Yahoo, Google
Социальные влияния Комментарии в блогах, лайки YELP, Twitter, лайки в Facebook, магазин приложений Apple, Amazon, ZDNet и т. Д.
Лог-файлы Файлы журналов компьютеров и мобильных устройств, информация об отслеживании веб-сайтов, журналы приложений и данные датчиков. Но есть и датчики от транспортных средств, видеоигр, кабельных коробок или, скоро, бытовой техники
Публичные хранилища данных Microsoft Azure MarketPlace / DataMarket, Всемирный банк, SEC / Эдгар, Википедия, IMDb
Техника хранилища данных Teradata, IBM Netezza, EMC Greenplum, которая включает внутренние транзакционные данные, которые уже подготовлены для анализа
Технологии сетевого и потокового мониторинга Пакеты в TCP / IP, электронная почта и т. Д.
Унаследованные документы Архивы выписок, страховых бланков, медицинской карты и корреспонденции клиентов

Две проблемы для решения
Проблема с хранением Как надежно хранить петабайт данных? В конце концов, петабайт составляет более 333 три ТБ дисков.
Проблема с деньгами 1 петабайт стоит дорого. Всего за 70 ТБ вы заплатите более 100 000 долларов. (eBay и Dell / EMC CLARiiON CX3-40 -70 ТБ — БЫСТРОЕ 4 ГБ 15 КБ SAN — всего 70 ТБ за 112 000 долларов США)

Два оригинальных документа
Файловая система Google Речь идет о масштабируемой распределенной файловой системе для больших распределенных приложений с интенсивным использованием данных. Он обеспечивает отказоустойчивость при работе на недорогом аппаратном оборудовании и обеспечивает высокую совокупную производительность для большого количества клиентов. http://research.google.com/archive/gfs.html
MapReduce: упрощенная обработка данных на крупных кластерах MapReduce — это модель программирования и связанная с ней реализация для обработки и генерации больших наборов данных. Пользователи указывают функцию карты, которая обрабатывает пару ключ / значение для генерации набора промежуточных пар ключ / значение, и функцию сокращения, которая объединяет все промежуточные значения, связанные с одним и тем же промежуточным ключом. http://research.google.com/archive/mapreduce.html

Hadoop: что это?
  1. Hadoop — это программная среда с открытым исходным кодом, которая поддерживает распределенные приложения с интенсивным использованием данных. Hadoop написан на Java.
  2. Я встретил его создателя, Дуга Каттинга, который в то время работал в Yahoo. Hadoop назван в честь игрушечного слона его сына. В то время у меня был стенд, и я помню, что Дагу было любопытно найти какой-нибудь классный материал, который можно было бы принести домой из киоска, чтобы подарить его сыну. Еще одна отличная идея, Даг!
  3. Одна из целей Hadoop — запуск приложений на больших кластерах аппаратного обеспечения. Кластер состоит из одного главного и нескольких рабочих узлов.
  4. Hadoop использует модель программирования карты / уменьшить. Он оптимизирован для обработки больших наборов данных.
  5. MapReduce обычно используется для распределенных вычислений на кластерах компьютеров. В кластере было много «узлов», где каждый узел — это компьютер в кластере.
  6. Цель сокращения карты — разбить огромные наборы данных на более мелкие части, распределить их по различным ведомым или рабочим узлам в кластере и параллельно обрабатывать данные. Hadoop использует распределенную файловую систему для хранения данных на разных узлах.

Речь идет о двух функциях

Hadoop сводится к двум функциям.
Пока вы можете писать функции map () и redu (), ваш тип данных поддерживается, говорим ли мы о abuot (1) текстовых файлах (2) xml-файлах (3) json-файлах (4) даже графике, звуке или видео файлы.

Ядро map () и Reduce ()
Понимание этих методов является ключом к овладению Hadoop

Шаг карты Шаг карты — это разделение проблемы на более мелкие подзадачи. Главный узел выполняет работу по распределению работы между рабочими узлами. Рабочий узел просто делает одну вещь и возвращает работу обратно в главный узел.
Уменьшить шаг Как только мастер получит работу от рабочих узлов, шаг redu () вступит во владение и объединит всю работу. Комбинируя работу, вы можете сформировать некоторый ответ и в конечном итоге получить результат.

public class WordCount {

  public static class Map extends MapReduceBase
  implements Mapper<LongWritable, Text, Text, IntWritable>
  {

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

  public void map(LongWritable key, Text value,
  OutputCollector<Text, IntWritable> output,
  Reporter reporter) throws IOException
  {

  String line = value.toString();
  StringTokenizer tokenizer = new StringTokenizer(line);
  while (tokenizer.hasMoreTokens())
  {
  word.set(tokenizer.nextToken());
  output.collect(word, one);
  }
  }
  }

  public static class Reduce
  extends MapReduceBase
  implements Reducer<Text, IntWritable, Text, IntWritable>
  {

  public void reduce(Text key, Iterator<IntWritable> values,
  OutputCollector<Text, IntWritable> output,
  Reporter reporter) throws IOException
  {
  int sum = 0;
  while (values.hasNext())
  {
  sum += values.next().get();
  }
  output.collect(key, new IntWritable(sum));
  }
  }

  public static void main(String[] args) throws Exception
  {
  JobConf conf = new JobConf(WordCount.class);
  conf.setJobName("wordcount");

  conf.setOutputKeyClass(Text.class);
  conf.setOutputValueClass(IntWritable.class);

  conf.setMapperClass(Map.class);
  conf.setCombinerClass(Reduce.class);
  conf.setReducerClass(Reduce.class);

  conf.setInputFormat(TextInputFormat.class);
  conf.setOutputFormat(TextOutputFormat.class);

  FileInputFormat.setInputPaths(conf, new Path(args[0]));
  FileOutputFormat.setOutputPath(conf, new Path(args[1]));

  JobClient.runJob(conf);
  }
}

«Карта» в MapReduce

  1. Существует главный узел и множество подчиненных узлов.
  2. Главный узел принимает входные данные, разделяет их на более мелкие подзадачи и распределяет входные данные для рабочих или подчиненных узлов. Рабочий узел может сделать это снова по очереди, что приведет к многоуровневой древовидной структуре.
  3. Рабочий / подчиненный узлы обрабатывают данные в меньшую проблему и передают ответ обратно в свой главный узел.
  4. Каждая операция отображения не зависит от других, все карты могут выполняться параллельно.

Сокращение в MapReduce

  1. Главный узел затем собирает ответы от рабочего или подчиненного узлов. Затем он объединяет ответы и создает необходимый вывод, который является ответом на проблему, которую он первоначально пытался решить.
  2. Редукторы также могут предварительно формировать фазу восстановления параллельно. Именно так система может обрабатывать петабайты за считанные часы.

Это 3 ключевых метода
Функция map () сгенерирует список пар ключ / значение на основе данных
Перетасовка () фаза будет принести вещи вместе для уменьшения) фаз (
Уменьшить () фаза будет принимать список пар ключ / значение и руки , что вы что — то сделать с.
  1. Пример Hello World для Hadoop — это пример подсчета слов.
  2. Давайте предположим, что наша цитата такая:

    • Настало время всем добрым людям прийти на помощь своей стране.
  3. Функция map () (см. часть
    «to») дважды находит «to»
    (Это, 1) (есть, 1) (время, 1) (для, 1) (все, 1) (хорошо, 1) (до, 1) (мужчины, 1) (до, 1) (приходят, 1) (the, 1) (помощь, 1) (of, 1) (их, 1) (страна, 1)
    Функция shuffle ()
    (см. часть «to»)
    создает (to, 1, 1)
    (Это, 1) (есть, 1) (время, 1) (для, 1) (все, 1) (хорошо, 1) (до, 1, 1) (мужчины, 1) (приходят, 1) (, 1) (помощь, 1) (оф, 1) (их, 1) (страна, 1)
    Функция Reduce ()
    (см. часть «to») создает (to, 2)
    (Это, 1) (есть, 1) (время, 1) (для, 1) (все, 1) (хорошо, 1) (мужчины, 1) (до, 2) (приходят, 1) (,, 1) (помощь, 1) (оф, 1) (их, 1) (страна, 1)

gsnjbqtb


Архитектура высокого уровня

zlkw4wsp

  1. Существует два основных уровня как для главного узла, так и для подчиненных узлов — уровень MapReduce и уровень распределенной файловой системы. Главный узел отвечает за отображение данных на подчиненные или рабочие узлы.

Hadoop — это платформа
Hadoop Common Общие утилиты, которые поддерживают другие модули Hadoop.
Распределенная файловая система Hadoop (HDFS) Распределенная файловая система, обеспечивающая высокопроизводительный доступ к данным приложения.
Hadoop YARN Основа для планирования заданий и управления ресурсами кластера.
Hadoop MapReduce Система YARN для параллельной обработки больших массивов данных.

Там также связаны модули, которые обычно связаны с Hadoop.
Apache Pig Платформа для анализа больших массивов данных.

Включает язык высокого уровня для выражения программ анализа данных

Ключевым моментом программ Pig является то, что они поддерживают существенное распараллеливание

Pig состоит из компилятора, который создает последовательности программ Map-Reduce

Языковой слой Pig в настоящее время состоит из текстового языка, который называется Pig Latin

улей Hive — это система хранения данных для Hadoop.

Он обеспечивает SQL-подобный язык.

Помогает в суммировании данных и специальных запросах.

Я еще не уверен, требуется ли это для Hadoop в Azure.

Если нет, просто выполните несколько задач командной строки:

Установить улей tar -xzvf hive-xyztar.gz
Установите переменную среды HIVE_HOME $ cd hive-xyz / $ export HIVE_HOME = {{pwd}}
Добавьте $ HIVE_HOME / bin в ваш PATH: $ export PATH = $ HIVE_HOME / bin: $ PATH

Но из того, что я здесь увидел, похоже, что есть модуль настройки ODBC Hive.
WehnMing Ye имеет это видео:
http://channel9.msdn.com/Events/windowsazure/learn/Hadoop-on-Windows-Azure


Я подписал

Я недавно зарегистрировался для службы Windows Azure HDInsight здесь
https://www.hadooponazure.com/.

Вход в систему

cezw1k2b


После входа вы увидите этот экран:

qf2laifm


Следующее сообщение: Расчет PI с Hadoop
  1. Мы создадим имя задания под названием «Пример Пи». Этот очень простой пример вычислит PI, используя кластер comptuers.
  2. Это не обязательно лучший пример больших данных, это скорее проблема вычислений.
  3. Последняя командная строка будет выглядеть так:
    1. Jad Hadoop hadoop-examples-0.20.203.1-SNAPSHOT.jar pi 16 10000000
  4. Более подробная информация об этом образце в ближайшее время.