Интеграция Hadoop и языка программирования R

Опубликовано: 17 Февраля, 2022

Hadoop - это среда с открытым исходным кодом, представленная ASF - Apache Software Foundation . Hadoop - это самая важная платформа для работы с большими данными. Hadoop был написан на Java, и это не на основе OLAP (онлайн-аналитическая обработка). Лучшая часть этой платформы больших данных заключается в том, что она масштабируема и может быть развернута для любого типа данных в различных разновидностях, таких как структурированный, неструктурированный и полуструктурированный. Hadoop - это инструмент промежуточного программного обеспечения, который предоставляет нам платформу, которая управляет большим и сложным кластером компьютеров, который был разработан на Java, и хотя Java является основным языком программирования для Hadoop, другие языки могут использоваться для R, Python или Ruby.

Фреймворк Hadoop включает:

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

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

Поскольку мы знаем, что данные - это драгоценная вещь, которая имеет наибольшее значение для организации, и не будет преувеличением, если мы скажем, что данные являются самым ценным активом. Но для того, чтобы иметь дело с этой огромной структурой и неструктурированной, нам нужен эффективный инструмент, который мог бы эффективно проводить анализ данных, поэтому мы получаем этот инструмент, объединив функции как языка R, так и фреймворка Hadoop для анализа больших данных. масштабируемость. Следовательно, нам нужно интегрировать и то, и другое, только тогда мы сможем найти более точную информацию и результат на основе данных. Вскоре мы рассмотрим различные методологии, которые помогут интегрировать эти две.

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

Одним из основных качеств R является то, что он с большей легкостью создает хорошо продуманные качественные графики, включая математические символы и формулы, где это необходимо. Если вы находитесь в кризисе сильных функций анализа данных и визуализации, то объединение этого языка R с Hadoop в вашу задачу будет для вас последним выбором, позволяющим снизить сложность. Это очень расширяемый объектно-ориентированный язык программирования с сильными графическими возможностями.

Некоторые причины, по которым R считается наиболее подходящим для анализа данных:

  • Надежный набор пакетов
  • Мощные методы визуализации данных
  • Похвальные функции статистического и графического программирования
  • Объектно-ориентированный язык программирования
  • Имеет широкий интеллектуальный набор операторов для вычисления массивов, отдельных матриц и т. Д.
  • Возможность графического представления на дисплее или на бумажном носителе.

Основной мотив интеграции R и Hadoop:

Нет никаких подозрений, что R является наиболее популярным языком программирования для статистических вычислений, графического анализа данных, анализа данных и визуализации данных. С другой стороны, Hadoop - это мощный фреймворк Bigdata, способный обрабатывать большие объемы данных. Во всей обработке и анализе данных распределенная файловая система (HDFS) Hadoop играет жизненно важную роль.Она применяет подход обработки сокращения карты во время обработки данных (предоставляется пакетом rmr R Hadoop), что делает процесс анализа данных более эффективным. эффективно и проще.

Что произойдет, если оба будут сотрудничать друг с другом? Очевидно, что эффективность процесса управления и анализа данных многократно возрастет. Итак, чтобы добиться эффективности в процессе анализа данных и визуализации, мы должны объединить R с Hadoop.

После объединения этих двух технологий статистические вычислительные мощности R увеличиваются, после чего мы получаем возможность:

  • Используйте Hadoop для выполнения кодов R.
  • Используйте R для доступа к данным, хранящимся в Hadoop.

Несколько способов, с помощью которых можно интегрировать как R, так и Hadoop:

Наиболее популярные и часто используемые методы показаны ниже, но есть и другие методы RODBC / RJDBC, которые можно использовать, но они не так популярны, как методы ниже. Общая архитектура инструментов аналитики, интегрированных с Hadoop, показана ниже вместе с их различной многоуровневой структурой.

Первый уровень: это аппаратный уровень - он состоит из кластера компьютерных систем,

Второй слой: это уровень промежуточного программного обеспечения Hadoop. Этот уровень также обеспечивает безупречное распределение файлов за счет использования HDFS и функций задания MapReduce.

Третий уровень: это интерфейсный уровень, который обеспечивает интерфейс для анализа данных. На этом уровне мы можем использовать эффективный инструмент, такой как Pig, который предоставляет нам платформу высокого уровня для создания программ MapReduce с использованием языка, который мы назвали Pig-Latin. Мы также можем использовать Hive, инфраструктуру хранилища данных, разработанную Apache и построенную на основе Hadoop. Hive предоставляет нам ряд средств для выполнения сложных запросов и помогает анализировать данные с помощью SQL-подобного языка под названием HiveQL, а также расширяет поддержку для реализации задач MapReduce.

Помимо использования Hive и Pig, мы также можем использовать библиотеки Rhipe или Rhadoop, которые создают интерфейс для обеспечения интеграции между Hadoop и R и позволяют пользователям получать доступ к данным из файловой системы Hadoop и позволяют писать собственный сценарий для реализации заданий Map и Reduce. , или мы также можем использовать Hadoop-streaming, технологию, которая используется для интеграции Hadoop.

a) R Hadoop: метод R Hadoop включает четыре следующих пакета:

  • Пакет rmr - пакет rmr предоставляет функциональные возможности Hadoop MapReduce в R. Итак, программисту R достаточно просто разделить логику и идею своего приложения на карту и сократить количество связанных фаз и просто отправить их с помощью методов rmr. После этого пакет rmr выполняет вызов потоковой передачи Hadoop и API MapReduce через несколько параметров задания, таких как входной каталог, выходной каталог, редуктор, преобразователь и т. Д., Чтобы выполнить задание R MapReduce в кластере Hadoop (большинство компонентов аналогичны потоковой передаче Hadoop).
  • Пакет rhbase - позволяет разработчику R подключать Hadoop HBASE к R с помощью Thrift Server. Он также предлагает такие функции, как (чтение, запись и изменение таблиц, хранящихся в HBase, из R).

Скрипт, использующий функциональность RHаdoop, выглядит как на рисунке ниже.

 библиотека (rmr)
map <-функция (k, v) {...}
уменьшить <-функцию (k, vv) {...}
уменьшение карты(
input = "data.txt",
output = "вывод",
textinputformat = rawtextinputformat,
карта = карта,
уменьшить = уменьшить
)
  • Пакет rhdfs - обеспечивает управление файлами HDFS в R, поскольку сами данные хранятся в файловой системе Hadoop . Функции этого пакета следующие. Манипуляции с файлами - (hdfs.delete, hdfs.rm, hdfs.del, hdfs.chown, hdfs.put, hdfs.get и т. Д.), Чтение / запись файлов - (hdfs.flush, hdfs.read, hdfs.seek, hdfs. tell, hdfs.line.reader и т. д.), каталог -hdfs.dircreate, hdfs.mkdir, инициализация: hdfs.init, hdfs.defaults.
  • Пакет plyrmr - он предоставляет такие функции, как манипулирование данными, сводки выходных результатов, выполнение операций над наборами (объединение, пересечение, вычитание, слияние, уникальность).

б) RHIPE: Райп используется в R для выполнения сложного анализа большого набора наборов данных с помощью Hadoop - это интегрированный инструмент среды программирования, предоставляемый компанией Divide and Recombine (D&R) для анализа огромного количества данных.

 RHIPE = R и интегрированная среда программирования Hadoop

RHIPE - это пакет R, который позволяет использовать API в Hadoop. Таким образом, мы можем читать, сохранять полные данные, созданные с помощью RHIPE MapReduce. RHIPE имеет множество функций, которые помогают нам эффективно взаимодействовать с HDFS. Человек также может использовать различные языки, такие как Perl, Java или Python, для чтения наборов данных в RHIPE. Общая структура сценария R , использующего Rhipe , показана ниже.

 библиотека (Райп)
rhint (ИСТИНА, ИСТИНА);
карта <-выражение ({lapply (map.values, function (mapper) ...)})
уменьшить <-выражение (
pre = {...},
уменьшить = {...},
post = {...},}
х <- rhmr (
карта = карта, уменьшить = уменьшить,
ifolder = inputPath,
ofolder = outputPath,
inout = c ('текст', 'текст'),
jobname = 'название вакансии'))
rhex (z)

Rhipe позволяет пользователю R создавать задания MapReduce (пакет rmr также помогает выполнить эту работу), которые полностью работают в среде R с использованием выражений R. Эта функциональность MapReduce: позволяет аналитику быстро определять карты и сокращения, используя всю мощь, гибкость и выразительность интерпретируемого языка R.

c) Коннектор Oracle R для Hadoop (ORCH):

Orch - это набор пакетов R, которые предоставляют следующие функции.

  1. Различные привлекательные интерфейсы для работы с данными, хранящимися в таблицах Hive, способные использовать вычислительную инфраструктуру на основе Apache Hadoop, а также предоставляют локальную среду R и таблицы базы данных Oracle.
  2. Используем метод прогнозной аналитики, написанный на R или Java как задания Hadoop MapReduce, который можно применять к данным, хранящимся в файлах HDFS.

После установки этого пакета в R вы сможете выполнять следующие различные функции.

  • Возможность упростить доступ и преобразовать данные HDFS с помощью слоя прозрачности с поддержкой Hive для общего использования,
  • Мы даем возможность эффективно использовать язык R для написания мапперов и редукторов,
  • Копирование данных из памяти R в локальную файловую систему, в HDFS, в Hive и в базы данных Oracle,
  • Возможность легко планировать программы R, чтобы выполнять программу как задания Hadoop MapReduce и возвращать результаты в любое из этих соответствующих мест и т. Д.

Oracle R Connector для Hadoop обеспечивает доступ с локального клиента R к Apache Hadoop, используя следующие префиксы функций:

  1. Hadoop - определяет функции, которые предоставляют интерфейс для Hadoop MapReduce.
  2. hdfs - определяет функции, обеспечивающие интерфейс для HDFS.
  3. Орч - определяет множество функций; orch - это общий префикс для функций ORCH.
  4. Ore - определяет функции, обеспечивающие интерфейс для хранилища данных Hive.

d) Потоковая передача Hadoop : потоковая передача Hadoop - это утилита Hadoop для запуска задания Hadoop MapReduce с исполняемыми скриптами, такими как Mapper и Reducer. Скрипт доступен как часть пакета R на CRAN. И его цель - сделать R более доступным для приложений на основе потоковой передачи Hadoop.

Это просто соответствует работе конвейера в Linux. При этом текстовый входной файл печатается в потоке (stdin), который предоставляется в качестве входных данных для Mapper, а выход (stdout) Mapper предоставляется в качестве входных данных для Reducer; наконец, Reducer записывает вывод в каталог HDFS.

Командная строка с задачами mаp и reduce, реализованная как R-скрипт, будет выглядеть следующим образом.

 $ $ {HADOOP_HOME} / bin / Hadoop jar
$ {HADOOP_HOME} / contrib / streaming / *. Jar 
-inputformat org.apache.hadoop.mapred.TextInputFormat 
-ввод input_data.txt 
-выход выход 
-mapper /home/tst/src/map.R 
-reducer /home/tst/src/reduce.R 
-файл /home/ts/src/map.R 
-файл /home/tst/src/reduce.R

Основным преимуществом потоковой передачи Hadoop является возможность выполнения как Java, так и запрограммированных заданий MapReduce, не основанных на Java, в кластерах Hadoop. Потоковая передача Hadoop эффективно поддерживает различные языки, такие как Perl, Python, PHP, R и C ++, а также другие языки программирования. Различный компоненты задания MapReduce потоковой передачи Hadoop.