Содержание
- Что такое анализ больших данных?
- Источники больших данных
- Характеристики больших данных
- Объем
- Скорость
- Разнообразие
- Достоверность
- Жизненный цикл больших данных
- Преимущества анализа больших данных
- Технологии и инструменты больших данных
- Apache Hadoop и экосистема
- Apache Spark
- Улей
- Свинья
- Совок
- Престо
- Apache Flink
- Апач Кафка
- Apache Ambari
- Apache Zeppelin
- Базы данных больших данных
- Базы данных NoSQL
- Более быстрые поиски
- Архитектура Hadoop
- Архитектура
- Уменьшение карты
- HDFS (Распределенная файловая система Hadoop)
- ПРЯЖА (еще один переговорщик ресурсов)
- Как работает архитектура MapReduce
- Hadoop - Настройка среды
- Ява
- Установка Hadoop
- Автономная установка Hadoop
- Псевдо-распределенная установка Hadoop
- Проверка установки Hadoop
- Что такое HDFS?
- Архитектура HDFS
- Как это работает?
- Особенности HDFS
- Операции HDFS
- Операции
- Вставка данных в HDFS
- Получение данных в HDFS
- Завершение работы HDFS
- Прочие команды
Я разработчик программного обеспечения с большим интересом к анализу данных и статистике.
Что такое анализ больших данных?
Сам термин «большие данные» объясняет, что данные огромны по размеру, например, в ГБ, ТБ и PT данных. Благодаря новейшим технологиям, устройствам и достижениям в социальных сетях повседневная активность этих систем генерирует огромные объемы данных. Эти данные нельзя обрабатывать или обрабатывать с помощью традиционных реляционных баз данных. Под большими данными понимаются наборы данных, которые нельзя хранить, управлять и анализировать с помощью традиционных программных инструментов баз данных или одного традиционного компьютера.
Источники больших данных
- Энергосистема
- Сайты социальных сетей
- Фондовые биржи
- Телекоммуникационные отрасли
- IoT (датчики и т. Д.)
Характеристики больших данных
Для работы с большими данными очень важно понимать их характеристики. Свойства больших данных представлены четырьмя V:
Объем
Объем связан с размером данных. Насколько велики данные? Исходя из объема данных, мы можем рассматривать это как большие данные или нет.
Скорость
Скорость - это частота исходных данных, которые необходимо обработать. Данные могут отправляться ежедневно, ежечасно или в режиме реального времени, как данные из социальных сетей.
Разнообразие
Доступны разные типы данных, они могут быть структурированными, полуструктурированными или неструктурированными.По формату данных он делится на три категории.
- Структурированные данные: Все реляционные базы данных являются примерами структурированных данных, поскольку они определили структуру с определенными типами данных полей в таблицах.
- Полуструктурированные данные: XML и форматы JSON относятся к полуструктурированным данным, поскольку они могут определять иерархию элементов, но не всегда могут определять типы данных.
- Неструктурированные данные: Любые документы Word или PDF, текстовые файлы или журналы мультимедиа / сервера являются неструктурированными данными.
Достоверность
Правдивость - это надежность данных. Очевидно, что у нас будут некоторые расхождения в полученных данных.
Жизненный цикл больших данных
Как правило, при анализе больших данных используются следующие процессы.
- Манипуляция данными
- Очистка данных
- Интеграция данных, например, аннотирование с разными источниками данных.
- Вычисление и анализ с применением различных методов анализа данных.
- Визуализация результатов в виде информационных панелей или графиков.
Преимущества анализа больших данных
Дело не только в том, насколько велики данные. Но как использовать / анализировать его для предсказания будущего и принятия разумных бизнес-решений. Это может помочь вести бизнес, анализируя данные о продуктах, и может помочь в запуске нового продукта или улучшении услуг компании путем анализа данных обратной связи с клиентами. Это помогает принимать любые управленческие решения в любом бизнесе для разработки и планирования лучших бизнес-стратегий.
- Экономия затрат: Технологии больших данных, такие как кластерные / облачные вычисления в Apache Hadoop или Apache Spark, избавляют нас от покупки высокопроизводительных машин для обработки больших данных.
- Сокращение времени: Высокая скорость вычислений в памяти сокращает время обработки данных и позволяет нам быстро принимать решения.
- Разработка нового продукта: Это помогает узнать потребности клиентов и уровень удовлетворенности для следующего продукта, который будет разработан.
- Понимание рыночных тенденций: Например, знание моделей покупок клиентов или наиболее покупаемых товаров может помочь понять потребности рынка.
- Анализ настроений: Изучение мнений клиентов из различных социальных сетей может помочь любой индустрии продуктов или услуг улучшить их предложения.
Технологии и инструменты больших данных
Вкратце поговорим о технологиях и инструментах, доступных для решения различного рода задач в аналитике больших данных.
Apache Hadoop и экосистема
Это платформа с открытым исходным кодом для параллельной обработки / вычисления данных. Это стандартная платформа для обработки больших данных. Он был основан на документах Google MapReduce и Google File System.
Это проект экосистемы, который содержит множество других проектов, таких как Pig, Hive, Kafka и т. Д. Другие инструменты аналитики - это Apache Spark и Apache Storm.
Apache Spark
Он более продвинутый, чем Apache Hadoop, и также является многоцелевым механизмом. Это универсальный механизм доступа к данным для быстрой крупномасштабной обработки данных. Он предназначен для итеративных вычислений в памяти: вычислений и интерактивного интеллектуального анализа данных. Он обеспечивает многоязычную поддержку: Java, Scala, Python и R. Он имеет различные встроенные библиотеки, которые позволяют работникам обработки данных быстро перебирать данные для ETL, машинного обучения, SQL и потоковой обработки.
Есть много других способов обработки больших данных. Выше представлены 2 основных фреймворка.
Например. Apache Hive для хранилищ данных, Apache Pig для запросов к большим данным, Apache Drill, Apache Impala, Apache Spark SQL и Presto и многие другие.
Apache SystemML, Apache Mahout и MLlib Apache Spark очень полезны для применения различных алгоритмов машинного обучения к данным.
Улей
Он работает поверх Hadoop и поддерживает HiveQL для запросов к большим данным.
Свинья
Предназначен для людей, которые не умеют программировать на таких языках, как Java и Scala. Они могут использовать Pig для легкого анализа данных, он обеспечивает доступ к данным по запросу.
Совок
Это помогает переносить структурированный набор данных из реляционных баз данных в Hadoop.
Престо
Facebook разработал механизм запросов с открытым исходным кодом под названием Presto, который может обрабатывать петабайты данных и, в отличие от Hive, не зависит от парадигмы MapReduce и может получать данные в кратчайшие сроки.
Apache Flink
Это платформа с открытым исходным кодом для пакетной распределенной потоковой обработки данных.
Апач Кафка
Это очень быстрая, надежная, отказоустойчивая система обмена сообщениями с возможностью публикации-подписки.
Apache Ambari
Apache ™ Ambari - это платформа для подготовки, управления и мониторинга кластеров Hadoop. Ambari предоставляет основные услуги для операций, разработки и расширения для обоих.
Apache Zeppelin
Это сетевой блокнот для инженеров по обработке данных, аналитиков данных и специалистов по обработке данных. Он предоставляет функции интерактивного приема данных, исследования данных, визуализации, совместного использования и совместной работы в Hadoop и Spark.
Базы данных больших данных
Если мы хотим хранить большие данные в базе данных, у нас должна быть параллельная база данных или базы данных с архитектурой без совместного использования, например Vertica, Netezza, Aster, Greenplum и т. Д.
Базы данных NoSQL
Google bigtable, Amazon Dynamo, Apache Hbase, Apache Cassandra и т. Д. Являются примерами баз данных NoSQL.
Более быстрые поиски
Чтобы иметь возможность быстрее выполнять поиск в этих больших данных, доступно множество решений / механизмов, таких как Apache Solr или Elastic Search. Apache Solr - мощная поисковая система.
Архитектура Hadoop
Hadoop - это платформа с открытым исходным кодом для распределенной обработки больших наборов данных на кластерах машин. Он обеспечивает распределенное хранилище (файловую систему), а также распределенные вычисления в кластере.
Архитектура
На следующей диаграмме описаны четыре основных компонента Hadoop.
Уменьшение карты
Это парадигма программирования для параллельной обработки больших данных на кластерах серийного оборудования с надежностью и отказоустойчивостью.
Шаблон состоит в том, чтобы разбить проблему на небольшие части работы. Map, Reduce и Shuffle - это три основные операции MapReduce.
- карта: Принимает входные данные и преобразуется в набор данных, где каждая строка ввода разбивается на пару ключ-значение (кортеж).
- Уменьшать: Эта задача принимает входные данные из выходных данных фазы Map и объединяет (агрегирует) кортежи данных в меньшие наборы на основе ключей.
- Перемешать: Это процесс передачи данных от картографов редукторам.
Каждый узел кластера состоит из одного главного JobTracker и одного подчиненного TaskTracker.
- JobTracker отвечает за управление ресурсами и отслеживание доступности ресурсов. Он планирует рабочие задачи на ведомых устройствах. Это единственная точка отказа, то есть, если она выходит из строя, все выполняемые задания останавливаются.
- TaskTrackers выполняет задачи, назначенные мастером, и периодически предоставляет статус задачи мастеру.
HDFS (Распределенная файловая система Hadoop)
Это файловая система, предоставляемая Hadoop. Он основан на файловой системе Google (GFS) и работает на кластере машин надежным и отказоустойчивым образом. Он имеет архитектуру ведущий / ведомый.
- Имя Узел: Он управляет метаданными файловой системы и хранит расположение данных.
- DataNode: Фактические данные хранятся в DataNode.
- Дополнительное имя Узел: NameNode также копирует метаданные во вторичный NameNode, чтобы иметь резервную копию, поэтому, когда NameNode выходит из строя, Secondary NameNode занимает место NameNode.
Файл в HDFS разбивается на блоки данных, которые называются блоками, и эти блоки затем сохраняются в DataNode. NameNode сохраняет отображение блоков в DataNodes. HDFS предоставляет интерфейс оболочки со списком команд для взаимодействия с файловой системой.
ПРЯЖА (еще один переговорщик ресурсов)
Это особенность Hadoop 2, это менеджер ресурсов.
Функции
- Мультиарендность: позволяет нескольким механизмам использовать Hadoop, которые могут одновременно обращаться к одному и тому же набору данных.
- Использование кластера: планирование YARN оптимизирует использование ресурсов кластера.
- Масштабируемость: YARN фокусируется на планировании расширения кластеров.
- Совместимость: существующие приложения MapReduce, разработанные с помощью Hadoop 1, могут работать в YARN без каких-либо сбоев.
Как работает архитектура MapReduce
Пользователь может отправить задание, указав следующие параметры.
- Расположение входных и выходных файлов.
- Файл jar, содержащий классы карты и сокращенную реализацию
- Конфигурация задания путем установки различных параметров для конкретного задания.
Затем клиент заданий Hadoop отправляет задание и конфигурацию в JobTracker, который снова передает код / конфигурацию ведомым устройствам, планирует задачи и отслеживает их.
TaskTrackers на разных узлах выполняет задачу в соответствии с реализацией MapReduce и выводит данные в HDFS.
Hadoop - Настройка среды
Ява
Должна быть обязательна Java, проверьте, установлена ли в системе Java, с помощью следующей команды:
Ява -версия
Он предоставит вам подробную информацию о версии, если она уже установлена, если вы не выполните следующие шаги, чтобы установить java на свой компьютер.
- Скачайте java по ссылке и распакуйте.
- Переместите его в / usr / local / или в предпочитаемое вами место, чтобы сделать его доступным для всех пользователей.
- Установите переменную окружения PATH и JAVA_HOME:
экспорт JAVA_HOME=/ usr /местный/jdk1.7.0_71 экспорт ДОРОЖКА=$ ПУТЬ:$ JAVA_HOME/мусорное ведро
- Проверьте установку Java:
Установка Hadoop
Загрузите и извлеките последнюю версию Hadoop из фонда программного обеспечения Apache.
Ниже приведены режимы, в которых мы можем работать с Hadoop.
- Автономный режим: В этом режиме Hadoop можно запускать как отдельный Java-процесс локально.
- Псевдо-распределенный режим: В этом режиме каждый демон Hadoop, такой как HDFS, YARN, MapReduce, может быть запущен как отдельный процесс Java с помощью распределенного моделирования на одной машине. В разработке этот режим является наиболее предпочтительным.
- Полностью распределенный режим: В этом режиме Hadoop работает в кластере как минимум из более чем одной машины.
Автономная установка Hadoop
- Мы уже загрузили и извлекли Hadoop, мы можем переместить его в предпочтительное место или в / usr / local /, и нам нужно настроить переменную среды следующим образом:
экспорт Hadoop_HOME = / usr / local / Hadoop
- Проверьте версию Hadoop, установленную с помощью следующей команды.
версия хадупа
- Если вы получили подробную информацию о версии, это означает, что автономный режим работает нормально.
- Теперь вы можете запустить jar с примерами, мы увидим это позже.
Псевдо-распределенная установка Hadoop
- Заменить путь java в Hadoop-env.sh файл, заменив значение JAVA_HOME на расположение каталога установки Java на вашем компьютере.
- core-site.xml содержит конфигурации для номера порта экземпляра Hadoop, ограничения памяти, места хранения данных, размера буферов для чтения / записи. Отредактируйте файл и добавьте следующую конфигурацию.
конфигурация> свойство> имя> fs.default.name/name> значение> hdfs: // localhost: 9000 / значение> / свойство> / конфигурация>
- hdfs-site.xml Файл содержит конфигурации для коэффициента репликации, пути к узлам имен и пути к узлам данных на ваших локальных машинах. Откройте файл и добавьте в него следующие конфигурации в соответствии с требованиями.
конфигурация> свойство> имя> dfs.replication / имя> значение> 1 / значение> / свойство> свойство> имя> dfs.name.dir / имя> значение> расположение каталога namenode из вашей локальной файловой системы / значение> / свойство > свойство> имя> dfs.data.dir / имя> значение> расположение каталога datanode в вашей локальной файловой системе / значение> / свойство> / конфигурация>
- пряжа-site.xml используется для настройки YARN в Hadoop.
- mapred-site.xml используется для указания конфигураций, связанных с фреймворком MapReduce, который нам необходимо использовать.
Проверка установки Hadoop
- Настройте namenode, используя следующие команды.
Узел имен HDFS -формат
- Проверьте Hadoop dfs с помощью следующих команд.
start-dfs.sh
- Проверьте сценарий пряжи.
start-yarn.sh
- Доступ к Hadoop в браузере на http: // локальный: 50070 /
- Проверьте все приложения, запущенные в кластере на http: // локальный: 8088 /
Что такое HDFS?
HDFS - это распределенная файловая система, основанная на файловой системе Google (GFS). Он работает на стандартном оборудовании. Он обеспечивает хранилище для приложений, работающих поверх Hadoop.
Архитектура HDFS
HDFS следует архитектуре Master / Slave и состоит из следующих элементов в своей архитектуре.
Как это работает?
Он принимает данные в виде файлов и разбивает их на различные части, называемые блоки и распределяет их по кластеру на различных узлах данных. Он также реплицирует каждый фрагмент данных на другую серверную стойку, чтобы в случае сбоя данные можно было восстановить.
Блокировать
Файл в HDFS разделен на сегменты, называемые блоками. Размер блока по умолчанию составляет 64 МБ, минимальный объем данных может храниться в сегменте. Его можно изменить в конфигурации HDFS.
Namenode
Это стандартное оборудование, которое действует как ведущее устройство, и ниже приводится список его задач.
- Он управляет пространством имен файловой системы. Он хранит метаданные файлов, хранящихся на ведомых устройствах. Он хранит данные в оперативной памяти, а не на диске.
- Он регулирует доступ к данным для клиентов.
- Он также выполняет файловые операции, такие как переименование файла, открытие файла и т. Д.
Дополнительное имя Узел
FileSystem Image хранится в основной памяти Name Node (он содержит информацию метаданных).
Приходят новые записи, это фиксируется в журнале редактирования. вторичный узел имени периодически берет копию журнала редактирования и образ файловой системы из NameNode, затем объединяет их, создает новую копию и загружает ее в NameNode.
DataNode
Все узлы данных работают на стандартном оборудовании, которое действует как ведомые устройства. Обязанности DataNode:
- Выполняет операции чтения / записи.
- Они также выполняют такие операции, как создание, удаление и репликация блоков в соответствии с запросом от Namenode.
Особенности HDFS
Отказоустойчивость
Здесь, в HDFS, отказоустойчивость означает способность справляться с неблагоприятными ситуациями. Когда какая-либо машина кластера выходит из строя из-за сбоя, клиент может легко получить доступ к данным благодаря возможности репликации HDFS. HDFS также реплицирует блоки данных в другую стойку, чтобы пользователь мог получить доступ к этим данным из другой стойки, когда машина выходит из строя.
Высокая доступность
Так же, как и отказоустойчивость, это высокодоступная файловая система, пользователь может получить доступ к данным откуда угодно с ближайших машин в кластере, даже если какая-либо из машин вышла из строя. NameNode, который содержит метаданные файлов, хранящихся на DataNodes, продолжает хранить данные на вторичном NameNode также для целей резервного копирования в случае сбоя NameNode, поэтому, когда NameNode выходит из строя, он может полностью восстанавливаться из вторичного NameNode, это называется высокой доступностью NameNode. .
Надежность данных
HDFS может хранить данные в диапазоне 100 ПБ. Это распределенное надежное хранилище данных. Это делает данные надежными, создавая копии блоков. Таким образом, в критических условиях потери данных не происходит.
Репликация
Это самая важная особенность HDFS.
Минимальное движение данных
Hadoop перемещает код в данные в HDFS, что сокращает количество операций ввода-вывода в сети и сохраняет полосу пропускания.
Масштабируемость
HDFS хранит данные на различных машинах, поэтому при увеличении требований мы можем масштабировать кластер.
- Вертикальная масштабируемость: Речь идет о добавлении дополнительных ресурсов, таких как ЦП, память и диск, на существующие узлы кластера.
- Горизонтальная масштабируемость: Речь идет о добавлении дополнительных машин в кластеры "на лету" без простоев.
Операции HDFS
Когда вы только что установили Hadoop и настроили HDFS, откройте namenode и выполните следующую команду. Он форматирует HDFS.
хадуп namenode -формат
Следующая команда запустит распределенную файловую систему.
Операции
Листинг файлов в HDFS
Hadoop FS -ls аргументы>
Это будет список файлов по заданному пути.
Вставка данных в HDFS
- Следующая команда для создания входного каталога.
Hadoop FS -mkdir путь к каталогу ввода>
- Чтобы вставить данные из локальной файловой системы в HDFS.
Hadoop FS -ставить локальный путь к входному файлу, который будет помещен в HDFS>путь к каталогу ввода>
- Проверьте файл с помощью команды ls.
Hadoop FS -mkdir путь к каталогу ввода>
Получение данных в HDFS
- Просматривайте данные с помощью команд cat.
hadoop fs -cat путь к просматриваемому файлу>
- Загрузите файл из HDFS в локальную файловую систему.
Hadoop FS -получатьПуть к файлу HDFS> путь в локальной файловой системе, в которой должен быть сохранен файл>
Завершение работы HDFS
Эта команда остановит HDFS.
Прочие команды
- ls путь>: Выводит список содержимого данного каталога.
- lsr путь>: Рекурсивно также отображает содержимое подкаталогов.
- du path>: Отображает использование диска.
- путь dus>: Печатает сводку использования диска
- mv src> dest>: Перемещает файл или каталог в место назначения.
- cp src> dest>: Копирует файл каталога в место назначения.
- rm путь>: Удаляет указанный файл или пустой каталог
- rmr путь>: Рекурсивно удаляет указанный файл или пустой каталог.
- поместите локальный src> dest>: копирует файл или каталог с локального компьютера в HDFS.
- copyFromLocal локальный src> dest>: то же, что и -put
- moveFromLocal локальный src> dest>: Перемещает файл или каталог из локального в HDFS.
- получить src> local dest>: Копирует файл или каталог из HDFS в локальный.
- getmerge src> местное назначение>: Он извлекает файлы, а затем объединяет их в один файл.
- cat имя_файла>: Для просмотра содержимого файла.
- copyToLocal src> местный адрес> : то же, что и -get
- moveToLocal src> местное назначение>: Работает как -get, но затем удаляется из HDFS.
- mkdir путь>: Он создает каталог в HDFS.
- touchz путь>: Чтобы создать пустой файл по заданному пути HDFS.
- тест - [ezd] путь>: Чтобы проверить, существует ли данный путь HDFS или нет, вернет 0, если не существует еще 1.
- stat [формат] путь>: Печатает информацию о пути.
- хвост [-f] имя_файла>: Отображает последнее содержимое файла.
- chmod: Чтобы изменить права доступа к файлу или каталогам.
- chown: Чтобы установить владельца файла или каталогов.
- chgrp: Установить группу владельцев.
- справка имя-команды>: Для отображения сведений об использовании любой из команд.