Оглавление:
Видео: Разработка гибридных PHP/Go-приложений с использованием RoadRunner / Антон Титов (SpiralScout LLC) 2024
В начале большие данные и R не были естественными друзьями. R требуется, чтобы все объекты загружались в основную память одной машины. Ограничения этой архитектуры быстро реализуются, когда большие данные становятся частью уравнения.
В отличие от распределенных файловых систем, таких как Hadoop, отсутствуют сильные статистические методы, но они идеально подходят для масштабирования сложных операций и задач. Вертикальные масштабирующие решения, требующие инвестиций в дорогостоящее суперкомпьютерное оборудование, часто не могут конкурировать с рентабельностью стоимости, предлагаемой распределенными кластерами товарного оборудования.
Чтобы соответствовать ограничениям на один язык для языка R в памяти, ученым часто приходилось ограничивать анализ только подмножеством доступных данных выборки. До более глубокой интеграции с Hadoop программисты на языке R предложили масштабную стратегию для преодоления проблем с памятью, создаваемых большими наборами данных на отдельных машинах.
Это было достигнуто с помощью систем передачи сообщений и пейджинга. Этот метод позволяет упростить работу над наборами данных, которые слишком велики для хранения в основной памяти одновременно; однако его низкоуровневый подход к программированию представляет собой крутую кривую обучения для тех, кто не знаком с парадигмами параллельного программирования.
Альтернативные подходы направлены на интеграцию статистических возможностей R с распределенными кластерами Hadoop двумя способами: взаимодействие с языками запросов SQL и интеграция с потоком Hadoop. С первой целью является использование существующих платформ хранения данных SQL, таких как Hive and Pig. Эти схемы упрощают программирование задания Hadoop с помощью операторов SQL-стиля, чтобы обеспечить высокоуровневое программирование для ведения статистических заданий по данным Hadoop.
Для программистов, желающих запрограммировать задания MapReduce на языках (включая R), отличных от Java, второй вариант - использовать API потоковой передачи Hadoop. Пользовательские задания MapReduce претерпевают преобразования данных с помощью стандартных потоков UNIX и сериализации, гарантируя входной сигнал, совместимый с Java, в Hadoop - независимо от языка, первоначально введенного программистом.
Разработчики продолжают изучать различные стратегии, позволяющие использовать распределенные вычислительные возможности MapReduce и почти неограниченные возможности хранения HDFS способами, которыми может воспользоваться R.
Интеграция Hadoop с R продолжается, а предложения доступны от IBM (Big R как часть BigInsights) и Revolution Analytics (Revolution R Enterprise). Также доступны мосты, которые интегрируют высокоуровневое программирование и запросы на языки с помощью Hadoop, такие как RHive и RHadoop.
По сути, каждая система ставит своей целью доставить глубокие аналитические возможности языка R к гораздо большему набору данных.
RHive
Рамка RHive служит мостом между языком R и Hive. RHive предоставляет богатые статистические библиотеки и алгоритмы R для данных, хранящихся в Hadoop, путем расширения языка запросов типа Hive (HiveQL) с помощью R-специфичных функций. Через функции RHive вы можете использовать HiveQL для применения R статистических моделей к данным в вашем кластере Hadoop, которые вы каталогизировали с помощью Hive.
RHadoop
Другим открытым исходным кодом, доступным для программистов R, является RHadoop - коллекция пакетов, предназначенных для управления распределением и анализом данных с помощью Hadoop. Три пакета примечаний - rmr2, rhdfs и rhbase - обеспечивают большую часть функциональности RHadoop:
-
rmr2: Пакет rmr2 поддерживает перевод языка R в Hadoop-совместимые задания MapReduce (создание эффективного низкоуровневого кода MapReduce от R-кода более высокого уровня).
-
rhdfs: Пакет rhdfs предоставляет API-интерфейс R для управления файлами через магазины HDFS. Используя rhdfs, пользователи могут читать из хранилищ HDFS в R-кадр данных (матрицу) и аналогично записывать данные из этих матриц R обратно в хранилище HDFS.
-
rhbase: пакеты rhbase предоставляют API-интерфейс R, но их целью в жизни является управление базами данных для хранилищ HBase, а не файлов HDFS.
Revolution R
Revolution R (от Revolution Analytics) - это коммерческое предложение R с поддержкой интеграции R на распределенных системах Hadoop. Revolution R обещает повысить производительность, функциональность и удобство использования для R на Hadoop. Чтобы обеспечить глубокую аналитику, близкую к R, Revolution R использует библиотеку ScaleR компании - набор алгоритмов статистического анализа, разработанных специально для крупных коллекций данных масштаба предприятия.
ScaleR нацелен на быстрое выполнение программного кода R на кластерах Hadoop, позволяя разработчику R сосредоточиться исключительно на своих статистических алгоритмах, а не на MapReduce. Кроме того, он обрабатывает множество задач аналитики, таких как подготовка данных, визуализация и статистические тесты.
IBM BigInsights Big R
Big R предлагает сквозную интеграцию между R и предложением Hadoop от IBM, BigInsights, что позволяет разработчикам R анализировать данные Hadoop. Цель состоит в том, чтобы использовать синтаксис программирования и парадигмы программирования R, гарантируя при этом, что данные оперируют при пребывании в HDFS. R являются прокси-серверами этих хранилищ данных, что означает, что разработчикам R не нужно думать о низкоуровневых конструкциях MapReduce или любых языках сценариев, поддерживающих Hadoop (например, Pig).
Технология BigInsights Big R поддерживает несколько источников данных, включая форматы файлов, HBase и Hive, обеспечивая параллельное и многораздельное выполнение R-кода в кластере Hadoop. Он скрывает многие сложности в базовых структурах HDFS и MapReduce, позволяя функциям Big R выполнять комплексную аналитику данных - как по структурированным, так и неструктурированным данным.
Наконец, масштабируемость статистического механизма Big R позволяет разработчикам R использовать как предопределенные статистические методы, так и сами авторские алгоритмы.