Big Data, Hadoop, HDFS
Прежде всего следует признать, что у больших данных нет единого определения. Фактически, это термин, который описывает по крайней мере три отдельных, но взаимосвязанных тенденции:
Сбор и управление большим объемом информации: многочисленные независимые исследования рынка и исследования показали, что объемы данных ежегодно удваиваются. Помимо всей этой дополнительной новой информации, значительный процент организаций также хранит исторические данные за три или более лет.
Работа со многими новыми типами данных: исследования также показывают, что 80 процентов данных неструктурированы (например, изображения, аудио, твиты, текстовые сообщения). И до недавнего времени большинство предприятий не могли в полной мере использовать всю эту неструктурированную информацию.
Использование этих массивов информации и новых типов данных с новыми стилями приложений. Многие инструменты и технологии, которые были разработаны для работы с относительно большими объемами информации, не сильно изменились за последние 15 лет. Они просто не успевают за большими данными, поэтому на рынок выходят новые классы аналитических приложений, основанных на платформе больших данных следующего поколения.
Новые источники данных
Сегодня в мире больше всего генераторов информации, чем когда-либо прежде. Эту генерацию данных включают такие устройства, как мобильные телефоны, планшетные компьютеры, датчики, медицинское оборудование и другие платформы, которые собирают огромные объемы информации. Меняются и традиционные корпоративные приложения: электронная коммерция, финансы и все более мощные научные решения (например, фармацевтические, метеорологические и имитационные) вносят свой вклад в общий рост больших данных.
Большие данные можно обрабатывать на обычных компьютерах - это недорогие аппаратные и программные среды, которые в последнее время стали настолько популярными. Эти инновации изменили технологии, особенно за последние пять лет.
Apache Hadoop - это фреймворк и хорошо зарекомендовавшая себя основанная на стандартах программная среда с открытым исходным кодом, построенная на основе документов Google MapReduce и Google File System. Он предназначен для использования мощи массивной параллельной обработки для использования преимуществ больших данных, как правило, с использованием множества недорогих обычных серверов. Hadoop разработан, чтобы абстрагироваться от большей части сложности распределенной обработки. Это позволяет разработчикам сосредоточиться на поставленной задаче вместо того, чтобы теряться в технических деталях развертывания такой функционально богатой среды. Некоммерческая организация Apache Software Foundation взяла на себя обслуживание Hadoop вместе с Yahoo! делать значительные пожертвования. Hadoop получил широкое распространение в самых разных организациях, в том числе в следующих: Социальные сети, Естественные науки, Финансовые услугии т.д.
Совместимость приложений: учитывая, что реализация MapReduce в Hadoop предназначена для поддержки всего предприятия, вы должны выбрать свою инфраструктуру Hadoop для обеспечения максимальной совместимости. Вам нужно будет искать решения со следующими функциями: открытая архитектура без привязки к поставщику, совместимость с открытыми стандартами, возможность работы с несколькими языками программирования.
Среда Hadoop должна быть способна получать информацию из множества различных источников данных - как традиционных, так и новых. Поскольку Hadoop также хранит данные, вашей целью должен быть выбор платформы, обеспечивающей две вещи: гибкость при выборе распределенной файловой системы, независимость от модели программирования MapReduce.
Строение файловой системы HDFS.
HDFS - это распределенная файловая система, которая обеспечивает высокую масштабируемость и надежность на больших кластерах стандартного оборудования.
Name Node является сервером для управления пространством имен файловой системы. Name Node хранит в себе: дерево файлов, мета-данные файлов и каталогов. Отвечает за: открытие и закрытие файлов, создание и удаление каталогов, а также управление доступом и процессом репликации от клиента файловой системы.
Secondary Name Node - сервер, который нужен в качестве вспомогательного узла для Name Node. Это сервер, который постоянно считывает все файловые системы и метаданные из оперативной памяти NameNode и записывает их на жесткий диск или в файловую систему.
DataNode - это сервер, который хранит данные в виде блоков. Выполняет низкоуровневые запросы чтения и записи от клиента файловой системы через Name Node.
Файлы HDFS делятся на большие блоки размером обычно 128 МБ, которые распределяются по кластеру. Каждый блок реплицируется (обычно трижды) для обработки сбоев оборудования и размещения блоков, предоставляемых NameNode, чтобы вычисления можно было перенести в данные с помощью инфраструктуры MapReduce.
Может показаться, что все данные хранятся в одном файле. Однако они хранятся в виде блоков на DataNodes, а метаданные хранятся в NameNode. Если мы потеряем NameNode по какой-либо причине, блоки, хранящиеся в DataNodes, станут бесполезными, поскольку нет способа идентифицировать блоки, принадлежащие именам файлов. Таким образом, создание резервных копий высокой доступности и метаданных NameNode очень важно в любом кластере Hadoop.
MapReduce
MapReduce (MR) - это платформа для написания аналитических приложений в пакетном режиме на терабайтах или петабайтах данных, хранящихся в HDFS. Reduce обычно обрабатывает каждый блок (исключая реплики) входного файла в HDFS с задачами сопоставления параллельно. Инфраструктура MR сортирует и перетасовывает выходные данные преобразователей в задачи сокращения для получения выходных данных. Фреймворк выполняет вычисление количества необходимых задач, планирование задач, их отслеживание и повторное выполнение в случае сбоя. Разработчику нужно сосредоточиться только на написании бизнес-логики, а всю тяжелую работу выполняют фреймворки HDFS и MR.
MapReduce, изначально созданный Google, оказался в высшей степени инновационным методом, позволяющим использовать огромные объемы информации, которые организации сейчас обычно обрабатывают.
В MapReduce логика программирования на основе задач размещена как можно ближе к данным. Наряду с архитектурой MapReduce Google также является автором файловой системы Google. Эта инновационная технология представляет собой мощную распределенную файловую систему, предназначенную для хранения огромных объемов данных. Google оптимизировал эту файловую систему для удовлетворения своих ненасытных потребностей в обработке информации.
Архитектура MapReduce
По своей сути MapReduce состоит из двух основных этапов обработки: Map и Reduce. Соединив их вместе, получим MapReduce.
Map
В отличие от традиционной информации, ориентированной на реляционные базы данных, где данные организуются в довольно жесткие строки и столбцы, которые хранятся в таблицах, MapReduce использует пары ключ / значение.
Как можно догадаться по их названию, каждый экземпляр пары ключ / значение состоит из двух компонентов данных. Во-первых, ключ определяет, какую информацию мы смотрим. По сравнению с реляционной базой данных ключ обычно соответствует столбцу.
На этапе Map в MapReduce записи из источника данных передаются в функцию map () в виде пар ключ / значение. Затем функция map () создает одно или несколько промежуточных значений вместе с выходным ключом из входных данных.
Reduce
После завершения этапа сопоставления все промежуточные значения для данного выходного ключа объединяются в список. Затем функция reduce () объединяет промежуточные значения в одно или несколько окончательных значений для одного и того же ключа. Это гораздо более простой подход для крупномасштабных вычислений, который призван абстрагироваться от большей части сложности параллельной обработки. Тем не менее, несмотря на свою простоту, MapReduce позволяет обрабатывать огромные объемы информации гораздо быстрее, чем когда-либо прежде.