Для новичков в разработке больших данных | с учебным пособием

задняя часть
qlik桌面版免费试用

Руководство:

  • Глава 1: Первое знакомствоHadoop
  • Глава 2. Более эффективный подсчет слов
  • Глава 3. Перенос данных из других источников в Hadoop
  • Глава 4: Получение данных из Hadoop в другом месте
  • Глава 5: Давай, мой SQL
  • Глава 6: Полигамия
  • Глава 7. Растущие аналитические задачи
  • Глава 8. Мои данные требуют реального времени
  • Глава 9: Мои данные будут внешними
  • Глава 10. Машинное обучение для крупнейших компаний

Новички часто спрашивают меня в блогах и QQ, что они хотят делать.Большие данныеНаправление развития, какие технологии изучать, какой маршрут обучения, я думаю, большие данные очень популярны, трудоустройство очень хорошее, а зарплата очень высокая. Если вы очень запутались, и вы хотите развиваться в направлении больших данных по этим причинам, вы можете, тогда я хотел бы спросить, какая у вас специальность, и каков ваш интерес к компьютеру/программному обеспечению? Вы специализируетесь на компьютерах, интересуетесь операционными системами, оборудованием, сетями, серверами? Вы специалист по программному обеспечению, интересуетесь разработкой программного обеспечения, программированием и кодированием? Также по специальности математика и статистика, с особым интересом к данным и числам. .

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

Начнем с характеристик 4V больших данных:

  • Большой объем данных, ТБ->ПБ
  • Есть много типов данных, структурированный, неструктурированный текст, журналы, видео, изображения, географические местоположения и т. д.;
  • Высокая коммерческая ценность, но эту ценность необходимо извлекать быстрее с помощью анализа данных и машинного обучения на основе массивных данных;
  • Эффективность обработки высока, а требования к обработке массивных данных больше не ограничиваются автономными вычислениями.

В настоящее время, чтобы иметь дело с этими характеристиками больших данных, открытый исходный кодструктура больших данныхВсе больше и больше, все больше и больше, сначала перечислим некоторые общие:

Файловое хранилище:Hadoop HDFS, тахион, KFS
Оффлайн расчет:Hadoop MapReduce, Spark
Потоковые вычисления в реальном времени:Шторм, Потоковая передача искры, S4, Цапля
K-V, база данных NOSQL:HBase, Redis, MongoDB
Управление ресурсами:ПРЯЖА, Месос
Сбор логов:Флюм, Писец, Логсташ, Кибана
система сообщений:Кафка, StormMQ, ZeroMQ, RabbitMQ
Анализ запроса:Улей, Импала, Свинья, Престо, Феникс, SparkSQL, Дрель, Флинк, Кайлин, Друид
Служба распределенной координации:Zookeeper
Управление кластером и мониторинг:Амбари, Ганглия, Нагиос, Клаудера Управляющий делами
Интеллектуальный анализ данных, машинное обучение:Mahout, Spark MLLib
синхронизация данных:Sqoop
Планирование задач:Oozie
...

Ослепительно, их более 30 видов, не говоря уже о профессиональных, все они будут использоваться, и предполагается, что их немного.

Лично у меня основной опыт во втором направлении (разработка/дизайн/архитектура), прислушайтесь к моему совету.

Глава 1: Знакомство с Hadoop

1.1 Изучите Baidu и Google

С какой бы проблемой вы ни столкнулись, попробуйте сначала поискать и решить ее самостоятельно.

Первый выбор Google, если вы не можете перевернуть его, просто используйте Baidu.

1.2 В качестве справочных материалов предпочтительны официальные документы

Особенно для начала официальная документация всегда предпочтительнее.

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

1.3 Пусть сначала запустится Hadoop

Hadoop можно считать первопроходцем в области хранения и вычислений больших данных.Сейчас большинство платформ больших данных с открытым исходным кодом полагаются на Hadoop или хорошо совместимы с ним.

Что касается Hadoop, вам нужно выяснить как минимум следующее:

  • Хадуп 1.0, Хадуп 2.0
  • MapReduce, HDFS
  • NameNode, DataNode
  • ДжобТрекер, ТаскТрекер
  • Пряжа, ResourceManager, NodeManager

Чтобы собрать Hadoop самостоятельно, выполните первый и второй шаги, чтобы запустить его.

Рекомендуется сначала использовать командную строку установочного пакета для установки, а не использовать инструмент управления для установки.

Вдобавок: Hadoop 1.0 это знает, и теперь все используют Hadoop 2.0.

1.4 Попробуйте использовать Hadoop

команда работы с каталогом HDFS;
Команды загрузки и загрузки файлов;
Отправьте и запустите пример программы MapReduce;

Откройте веб-интерфейс Hadoop, просмотрите статус выполнения задания и просмотрите журнал выполнения задания.

Знайте, где находятся системные журналы Hadoop.

1.5 Вы должны понимать, как они работают

MapReduce: как разделять и властвовать;
HDFS: где данные и что такое копия;
Что такое пряжа и что она умеет?
Что делает NameNode?
Что именно делает ResourceManager;

1.6 Напишите программу MapReduce самостоятельно

Пожалуйста, повторите пример WordCount и напишите программу WordCount самостоятельно (или скопируйте ее),
Упакуйте и отправьте в Hadoop для запуска.

Вы не знаете Java? Shell, Python можно, есть штука Hadoop Streaming.

Если вы тщательно выполнили вышеуказанные шаги, поздравляю, одна из ваших ног вошла.

Глава 2. Более эффективный подсчет слов

2.1 Изучите немного SQL

вы знаете базу данных? Вы умеете писать SQL?
Если нет, изучите SQL.

2.2 Счетчик слов для SQL

В 1.6, сколько строк кода вы написали (или скопировали) WordCount?

Покажу тебе мой:

SELECT word,COUNT(1) FROM wordcount GROUP BY word;

В этом прелесть SQL. Для программирования требуются десятки, а то и сотни строк кода, и я могу сделать это всего одним предложением. Использование SQL для обработки и анализа данных в Hadoop удобно, эффективно, просто в использовании и является тенденцией. Будь то автономные вычисления или вычисления в реальном времени, все больше и больше платформ обработки больших данных активно предоставляют интерфейсы SQL.

2.3 Куст SQL на Hadoop

Что такое Улей? Официальное объяснение:

The Apache Hive data warehouse software facilitates reading, writing, and managing large datasets residing in distributed storage and queried using SQL syntax.

Почему Hive — это инструмент хранилища данных, а не инструмент базы данных? Некоторые друзья могут не знать, что такое хранилище данных. Хранилище данных — это логическое понятие. Нижний слой использует базу данных. Данные в хранилище данных имеют следующие две характеристики: наиболее полные исторические данные (массивные), относительно стабильные; называется относительно стабильным , что означает, что хранилище данных отличается от базы данных бизнес-системы, и данные часто обновляются.После того, как данные поступают в хранилище данных, они редко обновляются и удаляются и будут запрашиваться только в больших количествах. Hive также обладает этими двумя характеристиками, поэтому Hive подходит в качестве инструмента хранилища данных для больших объемов данных, а не инструмента базы данных.

2.4 Установка и настройка Hive

Пожалуйста, обратитесь к 1.1 и 1.2, чтобы завершить установку и настройку Hive. Вы можете войти в командную строку Hive как обычно.

2.5 Попробуйте использовать Hive

Пожалуйста, обратитесь к 1.1 и 1.2, чтобы создать таблицу количества слов в Hive и запустить оператор SQL в 2.2.
Найдите задачу SQL, которую вы только что выполнили, в веб-интерфейсе Hadoop.

Проверьте, согласуется ли результат SQL-запроса с результатом MapReduce в версии 1.4.

2.6 Как работает улей

Он явно написан на SQL, почему я вижу задачи MapReduce в WEB-интерфейсе Hadoop?

2.7 Изучите основные команды Hive

Создавать и удалять таблицы;
загрузить данные в таблицу;
Загрузите данные таблицы Hive;

Пожалуйста, обратитесь к 1.2, чтобы узнать больше о синтаксисе и командах Hive.

Если вы внимательно и полностью выполнили процедуры глав 1 и 2 в «Письмо для начинающих разработчиков больших данных», то у вас уже должны быть следующие навыки и знания:

  • Разница между 0 и Hadoop2.0;
  • Принцип MapReduce (все еще классическая тема, файл 10G, учитывая память 1G, как использовать программу Java для подсчета 10 наиболее часто встречающихся слов и их времени);
  • Процесс чтения и записи данных в HDFS, PUT данных в HDFS, загрузки данных из HDFS и т.д.
  • Я могу сам написать простую программу MapReduce, если возникнут проблемы с операцией, я знаю, где посмотреть лог;
  • Может писать простые операторы SELECT, WHERE, GROUP BY и другие операторы SQL;
  • Общий процесс преобразования Hive SQL в MapReduce;
  • Общие операторы в Hive: создать таблицу, удалить таблицу, загрузить данные в таблицу, разделить, загрузить данные из таблицы на локальный диск;

Из приведенного выше исследования вы узнали, что HDFS — это платформа распределенного хранения, предоставляемая Hadoop, которую можно использовать для хранения массивных данных, а MapReduce — это распределенная вычислительная платформа, предоставляемая Hadoop, которую можно использовать для подсчета и анализа массивных данных на HDFS, а Hive — это SQL On Hadoop. Hive предоставляет интерфейс SQL. Разработчикам нужно только написать простые и удобные в использовании операторы SQL. Hive отвечает за преобразование SQL в MapReduce и отправку в эксплуатацию.

На данный момент ваша «платформа больших данных» выглядит так:

Итак, вопрос в том, как получить массив данных в HDFS?

Глава 3. Перенос данных из других источников в Hadoop

Здесь также можно назвать сбор данных, сбор данных из различных источников данных в Hadoop.

3.1 Команда HDFS PUT

Вы должны были использовать это раньше.

Команда put также часто используется в реальной среде и обычно используется в сочетании с языками сценариев, такими как оболочка и python.

Рекомендуется навык.

3.2 HDFS API

HDFS предоставляет API для записи данных. Вы можете записывать данные в HDFS на своем собственном языке программирования. Сама команда put также использует API.

В реальной среде, как правило, реже пишут программы и используют API для записи данных в HDFS, обычно используя методы, инкапсулированные другими платформами. Например: оператор INSERT в Hive, saveAsTextfile в Spark и т. д.

Рекомендуется понять принцип и написать Demo.

3.3 Sqoop

Sqoop — это платформа с открытым исходным кодом, которая в основном используется для обмена данными между Hadoop/Hive и традиционными реляционными базами данных, такими как Oracle/MySQL/SQLServer.

Точно так же, как Hive переводит SQL в MapReduce, Sqoop переводит указанные вами параметры в MapReduce, отправляет их в Hadoop для запуска и завершает обмен данными между Hadoop и другими базами данных.

Скачайте и настройте Sqoop самостоятельно (рекомендуется сначала использовать Sqoop1, Sqoop2 сложнее).

Узнайте о параметрах конфигурации и методах, обычно используемых Sqoop.

Используйте Sqoop для синхронизации данных из MySQL в HDFS;
Используйте Sqoop для синхронизации данных из MySQL в таблицу Hive;

PS: Если последующий выбор определяет использование Sqoop в качестве инструмента обмена данными, рекомендуется быть опытным, в противном случае достаточно понять и использовать Demo.

3.4 Flume

Flume — это распределенная платформа для сбора и передачи массивных журналов. Из-за «среды сбора и передачи» она не подходит для сбора и передачи данных реляционных баз данных.

Flume может собирать журналы сетевых протоколов, систем сообщений и файловых систем в режиме реального времени и передавать их в HDFS.

Поэтому, если ваш бизнес имеет данные из этих источников данных и нуждается в сборе данных в режиме реального времени, вам следует рассмотреть возможность использования Flume.

Загрузите и настройте Flume.

Используйте Flume для мониторинга файла, который продолжает добавлять данные и передавать данные в HDFS;

PS: Настройка и использование Flume более сложны.Если вы не заинтересованы и недостаточно терпеливы, вы можете сначала пропустить Flume.

3.5 Данные X с открытым исходным кодом Alibaba

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

Вы можете обратиться к моему сообщению в блоге «Инструмент массового обмена данными с гетерогенными источниками данных - загрузка и использование Taobao DataX».

Сейчас DataX версии 3.0 поддерживает множество источников данных.

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

PS: Кому интересно, могут изучить и использовать, и сравнить со Sqoop.

Если вы прошли вышеуказанное исследование и серьезно занимаетесь практикой, ваша «платформа больших данных» должна выглядеть так:

Глава 4: Получение данных из Hadoop в другом месте

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

Фактически, метод здесь в основном такой же, как в главе 3.

4.1 Команда HDFS GET

ПОЛУЧИТЬ файлы с HDFS на локальные. Требует мастерства.

4.2 HDFS API

То же, что 3.2.

4.3 Sqoop

То же, что 3.3.

Используйте Sqoop для завершения синхронизации файлов на HDFS с MySQL;
Используйте Sqoop для завершения синхронизации данных в таблице Hive с MySQL;

4.4 DataX

То же, что 3.5.

Если вы прошли вышеуказанное исследование и серьезно занимаетесь практикой, ваша «платформа больших данных» должна выглядеть так:

Если вы внимательно и полностью следовали процедурам глав 3 и 4 в «Словах для начинающих разработчиков больших данных 2», то у вас уже должны быть следующие навыки и знания:

Знать, как собирать существующие данные в HDFS, включая автономный сбор и сбор в режиме реального времени;

Вы уже знаете, что sqoop (или также DataX) — это инструмент обмена данными между HDFS и другими источниками данных;

Вы уже знаете, что Flume можно использовать для сбора журналов в реальном времени.

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

Следующий вопрос, Hive используется все больше и больше, вы найдете много неприятных мест, особенно медленная скорость.В большинстве случаев, очевидно, мой объем данных очень мал, он должен подать заявку на ресурсы и запустить MapReduce для выполнения.

Глава 5: Давай, мой SQL

На самом деле, все обнаружили, что Hive использует MapReduce в качестве механизма выполнения в фоновом режиме, что очень медленно.

Поэтому фреймворков для SQL на Hadoop становится все больше и больше, насколько я знаю, самые часто используемые — это SparkSQL, Impala и Presto в порядке популярности.

Эти три платформы основаны на половинной или полной памяти и предоставляют интерфейсы SQL для быстрого запроса и анализа данных в Hadoop. Для сравнения трех, пожалуйста, обратитесь к 1.1.

В настоящее время мы используем SparkSQL.Что касается того, почему мы используем SparkSQL, вероятно, есть следующие причины:

Я также делаю другие вещи со Spark и не хочу вводить слишком много фреймворков;

Требования к памяти для Impala слишком велики, а развертывание ресурсов невелико;

5.1 О Spark и SparkSQL

Что такое Spark и что такое SparkSQL.
В Spark есть основные понятия и пояснения к существительным.
Какая связь между SparkSQL и Spark и какая связь между SparkSQL и Hive.
Почему SparkSQL работает быстрее, чем Hive?

5.2 Как развернуть и запустить SparkSQL

Какие режимы развертывания есть в Spark?
Как запустить SparkSQL на Yarn?
Запрашивайте таблицы в Hive с помощью SparkSQL.

PS: Spark — это не та технология, которую можно освоить за короткое время, поэтому рекомендуется после понимания Spark начать с SparkSQL и двигаться дальше шаг за шагом.

Для Spark и SparkSQL см. http://lxw1234.com/archives/category/spark.

Если вы прошли вышеуказанное исследование и серьезно занимаетесь практикой, ваша «платформа больших данных» должна выглядеть так:

Глава 6: Полигамия

Пожалуйста, не соблазняйтесь этим именем. На самом деле то, что я хочу сказать, это одноразовый сбор и многократное потребление данных.

В реальных бизнес-сценариях, особенно для некоторых журналов мониторинга, если вы хотите узнать некоторые показатели из журналов в режиме реального времени (о вычислениях в реальном времени, которые будут представлены в следующих главах), в настоящее время анализ из HDFS является слишком медленный, хоть Flume и используется собранный, но Flume не может накатывать файлы на HDFS через короткие промежутки времени, что приведет к большому количеству мелких файлов.

Чтобы удовлетворить потребности в одноразовом сборе и многократном потреблении данных, мы хотим поговорить здесь о Kafka.

6.1 О Кафке

Что такое Кафка?

Объяснение основных понятий и существительных Кафки.

6.2 Как развернуть и использовать Kafka

Разверните Kafka на одном компьютере и успешно запустите встроенные примеры производителя и потребителя.

Пишите и запускайте программы-производители и потребители самостоятельно, используя программы Java.

Интеграция Flume и Kafka, использование Flume для мониторинга журналов и отправка данных журналов в Kafka в режиме реального времени.

Если вы прошли вышеуказанное исследование и серьезно занимаетесь практикой, ваша «платформа больших данных» должна выглядеть так:

В настоящее время данные, собранные с помощью Flume, поступают не напрямую в HDFS, а сначала в Kafka.Данные в Kafka могут одновременно потребляться несколькими потребителями, одним из которых является синхронизация данных с HDFS.

Если вы следовали процедурам, описанным в главах 5 и 6 в «Словах для начинающих в разработке больших данных 3», вы должны обладать следующими навыками и знаниями:

  • Почему Spark быстрее, чем MapReduce.
  • Используйте SparkSQL вместо Hive, чтобы быстрее запускать SQL.
  • Используйте Kafka, чтобы выполнить сбор данных один раз и использовать их несколько раз.
  • Вы можете написать свои собственные программы для создания производителей и потребителей Kafka.

Из предыдущего исследования вы освоили большинство навыков работы с платформой больших данных, таких как сбор данных, хранение и расчет данных, а также обмен данными, и каждый шаг этого требует выполнения задачи (программы). Например, задача вычисления данных не может быть запущена, пока задача сбора данных не будет успешно завершена. Если задача не может быть выполнена, необходимо отправить предупреждение персоналу, занимающемуся разработкой и техническим обслуживанием, а также предоставить полный журнал для облегчения проверки ошибок.

Глава 7. Растущие аналитические задачи

Не только задачи анализа, но и сбор данных и обмен данными также являются задачами. Некоторые из этих задач запускаются периодически, в то время как другие должны запускаться другими задачами. Когда на платформе есть сотни или тысячи задач, которые необходимо поддерживать и запускать, одного crontab недостаточно, и для этого необходима система мониторинга планирования. Система мониторинга планирования — это центральная система всей платформы данных, аналогичная AppMaster, отвечающая за распределение и мониторинг задач.

7.1 Apache Oozie

1. Что такое Узи? Каковы функции?
2. Какие типы задач (программ) может запланировать Oozie?
3. Какие методы запуска задач поддерживает Oozie?
4. Установите и настройте Oozie.

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

Азкабан:

https://azkaban.github.io/

планировщик легких задач:

https://github.com/ltsopensource/light-task-scheduler

Зевс:

https://github.com/alibaba/zeus

и т.д……

Кроме того, моя сторона - это система планирования и мониторинга задач, разработанная ранее отдельно.Подробности см. в разделе «Система планирования и мониторинга задач платформы больших данных».

Если вы прошли вышеуказанное исследование и серьезно занимаетесь практикой, ваша «платформа больших данных» должна выглядеть так:

Глава 8. Мои данные требуют реального времени

Представляя Kafka в главе 6, я упомянул некоторые бизнес-сценарии, требующие индикаторов в реальном времени.Реальное время в основном можно разделить на абсолютное реальное время и квази-реальное время.Требования к абсолютной задержке в реальном времени обычно измеряются в миллисекундах. а требования к задержке в квазиреальном времени обычно указываются в секундах и минутах. Для бизнес-сценариев, требующих абсолютного реального времени, больше используется Storm, для других бизнес-сценариев квазиреального времени это может быть Storm или Spark Streaming. Конечно, если вы можете, вы также можете написать свою собственную программу для этого.

8.1 Storm

1. Что такое Шторм? Каковы возможные сценарии применения?
2. Каковы основные компоненты Storm и какую роль играет каждый из них?
3. Простая установка и развертывание Storm.
4. Напишите свою собственную демонстрационную программу и используйте Storm для расчетов потоков данных в реальном времени.

8.2 Spark Streaming

1. Что такое Spark Streaming и как оно связано со Spark?
2. Каковы преимущества и недостатки Spark Streaming и Storm?
3. Используйте Kafka + Spark Streaming для завершения демонстрационной программы вычислений в реальном времени.

Если вы прошли вышеуказанное исследование и серьезно занимаетесь практикой, ваша «платформа больших данных» должна выглядеть так:

На данный момент сформирована базовая архитектура вашей платформы больших данных, включая сбор данных, хранение данных и вычисления (в автономном режиме и в режиме реального времени), синхронизацию данных, планирование задач и мониторинг. Тогда пора подумать о том, как лучше предоставлять данные внешнему миру.

Глава 9: Мои данные будут внешними

Обычно предоставляется внешний (бизнес) доступ к данным, который обычно включает следующие аспекты:

Не в сети:Например, данные за предыдущий день предоставляются в указанный источник данных (БД, ФАЙЛ, FTP) каждый день; офлайн-данные могут быть предоставлены с помощью офлайн-инструментов обмена данными, таких как Sqoop и DataX.

в реальном времени:Например, рекомендательная система онлайн-сайта должна получать рекомендательные данные для пользователей с платформы данных в режиме реального времени, и задержка выполнения этого требования очень мала (в пределах 50 миллисекунд).

В соответствии с требованиями к задержке и требованиям к запросам данных в реальном времени, возможные решения включают: HBase, Redis, MongoDB, ElasticSearch и т. д.

OLAP-анализ:Помимо требования относительной стандартизации базовой модели данных, OLAP также требует все более высокой скорости ответа на запрос.Возможные решения включают Impala, Presto, SparkSQL и Kylin. Если ваша модель данных относительно велика, Kylin — лучший выбор.

Специальный запрос:Данные специального запроса относительно случайны, и, как правило, сложно установить общую модель данных, поэтому возможные решения: Impala, Presto и SparkSQL.

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

Если вы хорошо освоили, как предоставлять данные внешнему миру (бизнесу), то ваша «платформа больших данных» должна выглядеть так:

Глава 10. Машинное обучение для крупнейших компаний

По этому поводу я, неспециалист, могу лишь кратко представить. Мне было очень стыдно, как специалисту по математике, и я сожалел, что в то время плохо изучал математику.

В нашем бизнесе есть примерно три типа проблем, которые можно решить с помощью машинного обучения:

  • Проблема классификации: в том числе бинарная классификация и мультиклассификация, бинарная классификация предназначена для решения проблемы прогнозирования, например, предсказания того, является ли электронное письмо спамом, мультиклассификация решает классификацию текста;
  • Проблема кластеризации: по ключевым словам, которые ищут пользователи, грубо классифицируйте пользователей.
  • Проблема с рекомендациями: дайте соответствующие рекомендации, основанные на истории просмотров и кликов пользователей.

Большинство отраслей используют машинное обучение для решения подобных задач.

Маршрут «Начало обучения»:

Математическая основа;

Машинное обучение в действии, лучше всего Python;

SparkMlLib предоставляет несколько инкапсулированных алгоритмов, а также методы обработки и выбора функций.

Машинное обучение — это действительно круто, и это также моя цель обучения.

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

Выбор редактора: