RHadoop — это мост между R, языком и средой для статистического изучения наборов данных, и Hadoop, платформой, которая позволяет распределять обработку больших наборов данных между кластерами компьютеров. RHadoop построен из 3 компонентов, которые являются R-пакетами: rmr, rhdfs и rhbase. Ниже мы представим каждый из этих R-пакетов и расскажем об их установке и базовом использовании.
Примечание: Эта статья была обновлена 2 августа 2012 года, чтобы отразить версию 1.3.1 rmr и версию 1.0.4 rhdfs.
Пакет rmr предлагает функциональные возможности Hadoop MapReduce на R. Для пользователей Hadoop написание программ MapReduce на R может показаться более простым, производительным и элегантным с гораздо меньшим количеством кода чем в Java, и более простое развертывание. Это здорово для создания прототипов и проведения исследований. Для пользователей R это открывает двери в программирование на MapReduce и доступ к анализу больших данных.
Пакет rmr не должен рассматриваться как потоковый Hadoop, даже если внутри он использует потоковую архитектуру. Вы можете выполнять потоковую передачу в Hadoop с помощью R без использования каких-либо из этих пакетов, поскольку язык поддерживает стандартный ввод и вывод по стандарту. Кроме того, программы rmr не должны быть более эффективными, чем программы, написанные на Java и других языках.
Наконец, из вики:
rmr не предоставляет сокращенную версию ни одного из более чем 3000 пакетов, доступных для R. Это не решает проблему параллельного программирования. Вам все равно придется писать параллельные алгоритмы для любой задачи, которую вам нужно решить, но вы можете сосредоточиться только на интересных аспектах. Считается, что некоторые задачи не поддаются параллельному решению, и использование парадигмы map reduce или rmr не создает исключений.
Пакет rhdfs обеспечивает базовое подключение к распределенной файловой системе Hadoop. Он поставляется с удобными функциями для просмотра, чтения, записи и изменения файлов, хранящихся в формате HDFS.
Пакет rhbase обеспечивает базовое подключение к HBase. Он поставляется с удобными функциями для просмотра, чтения, записи и изменения таблиц, хранящихся в HBASE.
В вашем распоряжении должна быть рабочая установка Hadoop. Он рекомендован и протестирован с дистрибутивом Cloudera CDH3. Обратитесь к RHadoop wiki для альтернативной установки и дальнейшего развития. На момент написания этой статьи дистрибутив Cloudera CDH4 еще не был совместим и документально подтвержден как находящийся в стадии разработки. Необходимо запустить все распространенные службы Hadoop, а также сервер HBase Thrift на случай, если вы захотите протестировать rhbase.
Ниже я перевел свои рецепты Chef в команды оболочки. Пожалуйста, свяжитесь со мной напрямую, если вы обнаружите ошибку или захотите ознакомиться с оригинальными рецептами шеф-повара.
Обратите внимание, что, если мне не изменяет память, также может потребоваться maven (apt-get install maven2).
apt-получить установку libboost-dev libevent-dev libtool flex bison g++ automake pkg-config apt-получить установку libboost-test-dev apt-получить установку libmono-dev ruby1.8-dev libcommons-lang-java php5-dev cd /tmp curl. http://apache.multidist.com/thrift/0.8.0/thrift-0.8.0.tar.gz | смола zx cd thrift-0.8.0./configure make make install rm -rf thrift-0.8.0
# R установка apt-получить r-базовый # внешний репозиторий пакетов, перейдите на сайт R, чтобы найти ближайшее к вам местоположение echo ‘options(repos=structure(c(CRAN=»http://cran.fr.r-project.org»)))’ >> /etc/R/Rprofile.сайт # Глобальная переменная Java cat > /etc/profile.d/java.sh <
/etc/profile.d/r.sh <
rmr
cd /tmp curl -L https://github.com/downloads/RevolutionAnalytics/RHadoop/rmr_1.3.1.tar.gz -o rmr_1.3.1.tar.gz Команда R УСТАНОВИТЬ rmr rmr_1.3.1.tar.gz rm -rf rmr_1.3.1.tar.gz
cd /tmp curl -L http://github.com/downloads/RevolutionAnalytics/RHadoop/rhdfs_1.0.4.tar.gz -o rhdfs_1.0.4.tar.gz КОМАНДА R УСТАНОВИТЬ rhdfs rhdfs_1.0.4.tar.gz rm -rf rhdfs_1.0.4.tar.gz <идентификатор h3="rhbase-1" style="позиция:относительная;">rhbase
cd /tmp # Проверка бережливости # pkg-config —cflags thrift | grep -I/usr/local/include/thrift cp /usr/local/lib/libthrift-0.8.0.so /usr/lib/# Скомпилируйте rhbase curl -L https://github.com/downloads/RevolutionAnalytics/RHadoop/rhbase_1.0.4.tar.gz -o rhbase_1.0.4.tar.gz R CMD УСТАНОВИТЕ rhbase rhbase_1.0.4.tar.gz rm -rf rhbase_1.0.4.tar.gz
Теперь мы готовы протестировать нашу установку. Давайте воспользуемся вторым примером, представленным в руководстве RHadoop wiki. Этот пример начинается со стандартного скрипта R, который генерирует список значений и подсчитывает их вхождения:
groups = rbinom(100, n = 500, вероятность = 0,5), затем он преобразует последний скрипт в масштабируемый скрипт MapReduce:
требуется(‘rmr’) группы = rbinom(100, n = 500, вероятность = 0,5) группы = to.dfs(группы) результат = mapreduce( ввод = группы, карта = функция(k,v) значение ключа(v, 1), уменьшить = функция(k,vv) keyval(k, длина(vv)))
Результат теперь хранится в папке «/tmp» в HDFS. Вот две команды для вывода пути к файлу и содержимого файла:
# Вывести путь к файлу HDFS на печать(результат()) # Показать содержимое файла на печать(из.dfs(результат, в.data.frame=T))