DOI: 10.24412/2413-2527-2022-230-48-52
Реализация анализа главных компонентов
с RHadoop
Сунь Ифань
Петербургский государственный университет путей сообщения Императора Александра I Нанкин, Китай [email protected]
Аннотация. Hadoop — это очень популярная распределенная архитектура обработки больших данных, которая использует HDFS и MapReduce для высокоскоростных вычислений и хранения массивных данных. R — это широко используемое программное обеспечение с открытым исходным кодом с расширенными функциями статистического анализа данных. В этой статье RHadoop использовался для разработки функции анализа главных компонентов, которая может выполнять распределенные параллельные вычисления, и для выполнения анализа главных компонентов набора данных «iris» для проверки осуществимости. Использование RHadoop значительно повышает практичность и эффективность выполнения языка R для обработки больших данных, а также может сэкономить затраты на обработку больших данных языком R.
Ключевые слова: язык R, Hadoop, RHadoop, большие данные, анализ данных, MapReduce, HDFS.
Введение
С наступлением эры облачных данных большие данные становятся все более и более заинтересованными и используемыми. После многих лет накопления пользовательских сетевых данных и эксплуатационных данных на некоторых предприятиях единица измерения этих данных достигла PB (пета-байт) или даже ZB (зеттабайт) [1]. В этом контексте Hadoop широко используется в качестве распределенной файловой системы с открытым исходным кодом и модели параллельных вычислений [2]. Язык R имеет хорошее совершенство в статистическом анализе [3]. RHadoop является мостом между языком R и Hadoop. RHadoop чрезвычайно популярен в современных распределенных архитектурах больших данных, обеспечивая хранение больших данных и высокоскоростные вычисления с помощью MapReduce и HDFS.
к.воен.н. Р. Г. Гильванов
Петербургский государственный университет путей сообщения Императора Александра I Санкт-Петербург, Россия gilvanov [email protected]
Hadoop
Двумя ядрами Hadoop являются распределенная файловая система HDFS и распределенный параллельный фреймворк MapReduce, которые используются для хранения и обработки больших данных соответственно [4]. Hadoop — это распределенная вычислительная платформа с открытым исходным кодом, принадлежащая Apache. Она может поддерживать несколько языков программирования [5], обладает высокой надежностью, эффективностью (тысячи компьютеров могут быть вычислены вместе) и высокой масштабируемостью. Кроме того, она обладает низкой стоимостью (можно использовать обычный персональный компьютер). Основываясь на двух его ядрах, пользователи могут легко организовать компьютерные ресурсы для создания собственной распределенной вычислительной платформы; они также могут использовать хранилище и вычислительные мощности кластера для завершения обработки больших данных.
Распределенная файловая система HDFS. Ее полное название — Hadoop Distributed File System [5]. По своей сути HDFS является узлом имени (главный узел) и узлом данных (подчиненный узел), а также блоком данных [6]. В кластере узел имени необходим для управления всем другим хранилищем узла данных (администратор всей HDFS), а узел данных отвечает только за хранение данных. При хранении HDFS-файл разделяется на несколько блоков данных, которые также хранятся отдельно в нескольких узлах данных и записываются в узел имени.
Режим хранения HDFS показан на рисунке 1. Целью этого является поддержка крупномасштабного хранения данных и снижение потребления узлов при адресации.
Рис. 1. Режим хранения распределенной файловой системы
Распределенный параллельный фреймворк
MapReduce. MapReduce — это фреймворк распределенного параллельного программирования [7]. Именно через кластер через несколько машин одновременно происходит параллельная обработка больших данных.
MapReduce сначала загрузит файл из HDFS и предварительно обработает файл (Split), а затем преобразует данные в <key, value> пару «ключ — значение» [8], подходящую для задачи сопоставления через RR (RecordReader), и введет ее в задачу Map. Задача карты выводит <key, value> как промежуточные результаты в соответствии с пользовательскими правилами; эти результаты обрабатываются Shuffle и отправляются в задачу Reduce в качестве входных данных [5]. Задача Reduce выполняет пользовательскую логику, которая выводит результат в модуль OutputFormat. Модуль OutputFormat проверяет выходные данные, если условия выполнены, выводит их в HDFS для хранения. Более интуитивно понятный процесс показан на рисунке 2.
Рис. 2. Рабочий процесс MapReduce R и RHadoop
R является платформой с открытым исходным кодом и свободным статистическим программным обеспечением, и многие методы статистического анализа могут быть легко завершены на R [9]. Недостатком языка R является то, что он не может эффективно обрабатывать большой объем данных, потому что язык R будет загружать данные в память при анализе данных, что также является сложной точкой в развитии языка R.
RHadoop представляет собой комбинацию языка R и Hadoop, разработанных Revolution Analytics, и кода с открытым исходным кодом для сообщества Github. RHadoop
содержит три пакета R (rmr2, rhdfs, rhbase), которые соответствуют частям MapReduce, HDFS и HBase архитектуры системы Hadoop [10]. Главное дело, RHadoop просто предоставляет API (интерфейсы прикладного программирования), которые используют Hadoop. Пользователям RHadoop необходимо только иметь общее представление об архитектуре Hadoop для проектирования параллельных вычислений. Архитектура RHadoop показана на рисунке 3.
Рис. 3. Архитектура RHadoop
rmr2 предоставляет самый простой и эффективный способ написания задач MapReduce [11]. В плане объема программирования он намного меньше, чем Java, и в то же время имеет множество преимуществ, что обеспечивает удобство для последующего обслуживания. rhdfs предоставляет метод манипулирования данными HDFS, в то время как rhbase предоставляет метод манипулирования данными HBase.
С помощью этих пакетов язык R может использовать возможности Hadoop для эффективной обработки больших данных.
Структура сценария R с использованием RHadoop
Существует фиксированный способ использования RHadoop для задач MapReduce, который вызывает пользовательские функции map и reduce [12]. Способ работы RHadoop позволяет пользователям определять функции map и reduce. Сценарий для использования RHadoop показан ниже:
library(rmr2) map<-function(k,v) { ...} reduce<-function(k,vv) { ...} mapreduce( input ="data.txt", output="output",
textinputformat =rawtextinputformat, map = map,reduce=reduce)
Сначала нужно загрузить пакет rmr2, затем определить функцию map и использовать <key, value> в качестве входных данных для функции [12]. Следующим шагом требуется определить <key, value-list> в качестве входных данных для функции reduce. Наконец, настроить и запустить
задачу MapReduce. Таким образом задачи MapReduce могут быть запущены, а окончательные результаты будут сохранены в HDFS. Для просмотра результатов нужно только использовать функцию form.dfs(/...) в клиенте языка R.
Поскольку MapReduce может получить доступ только к файловой системе HDFS, перед использованием функции MapReduce необходимо сохранить данные в файловой системе HDFS.
Дизайн анализа главных компонентов
Анализ главных компонентов является одним из наиболее важных методов анализа данных в языке R, но использование языка R не может выполнять анализ главных компонентов больших данных. С помощью RHadoop анализ главных компонентов может выполняться в режиме MapReduce для достижения анализа больших данных.
Основная идея анализа главных компонентов заключается в использовании наиболее важных аспектов данных вместо исходных данных [13]. Он может сохранять основную информацию исходных данных и уменьшать размерность.
Процесс анализа главных компонентов выглядит следующим образом:
1. Стандартизировать образцы.
2. Рассчитать матрицу коэффициентов корреляции выборки.
3. Рассчитать собственные значения и собственные векторы матрицы коэффициентов корреляции.
4. Рассчитать ставку взноса на отклонение и кумулятивную ставку взноса на отклонение.
5. Выполнить визуальные иллюстрации.
Стандартизируем образцы. Структура кода:
data_mean=function(x){ col_mean=function(x){ map1=function(.,v){ keyval(1:2,list(colSums(v),dim(v)[1]))
}
reduce1=function(k,v){ keyval(k,list(Reduce("+",v)))
}
a.mean = values(fram.dfs(mapreduce(mput=x,map = map1, reduce = reduce1,combine = T)))
b.mean = a.mean[[1]]/a.mean[[2]]
}
col_meandata=col_mean(x) map2=function(.,v){
keyval(1,list(scale(v,center = col_meandata,scale = F)))
}
reduce2=function(k,v){ keyval(1,list(Reduce("+",v)))
}
c.mean=values(from.dfs(mapreduce(mput=x, map = map2, reduce=reduce2,combine = T)))
}
В этой части кода есть две основные части. Суммируем столбцы и используем результаты для следующего этапа стандартизации.
Рассчитаем матрицу коэффициентов корреляции выборки. Структура кода:
data_cm=function(x){ data_st=data_mean(x) map3=function(.,v){ keyval(1,list(cor(data_st[[1]])))
}
reduce3=function(k,v){ keyval(1,list(Reduce("+",v)))
}
values(from.dfs(mapreduce(input=x,map=map3,
reduce = reduce3,combine = T)))
}
Эта часть кода в основном использует функцию cor() для вычисления матрицы коэффициента корреляции. Наконец, возвращается значение val.
Рассчитаем собственные значения и собственные векторы матрицы коэффициентов корреляции. Структура кода:
data_ei=function(x){ cm=data_cm(x)[[1]]
map4=function(.,v){
keyval(1:2,list(eigen(cm)$val,eigen(cm)$vec))
}
reduce4=function(k,v){ keyval(k,list(Reduce("+",v)))
}
values(from.dfs(mapreduce(input = x,map=map4,
reduce = reduce4,combine = T)))
}
Дизайн кода для всего шаблона MapReduce завершен. Благодаря возвращаемому значению этой функции, мы можем использовать статистические функции на языке R для следующей части обработки анализа данных.
Мы также можем объединить код для всего процесса. Рекомендуется задействовать пользовательские функции для вычисления собственных значений и собственных векторов больших данных.
Удалим последний столбец данных «iris» для тестирования. Результаты теста согласуются с анализом, проведенным на языке R. Результаты теста показаны на рисунке 4.
> j
[[1]]
[1] 3.25012162 0.52244098 0.14063067 0.08680653
[[2]]
[2,] [4, ]
Г,2] 0.4611031
[,3] 0.6935302
[>1] •0.5012166 -0.4941183 0.5122528 -0.7023221 -0.4812482 -0.6424648 -0.1186062 -0,5225219 -0.3349926 0.1081301
Рис. 4. Результаты теста
Cj4] •0.2349Ô782 -0.01370718 ■0.58444139 0,77656853
Рассчитаем ставку взноса на отклонение и кумулятивную ставку взноса на отклонение. Структура кода:
Pro <- j[[1]]/sum(j[[1]])
Cum <- cumsum(Pro)
Для наглядности приведем графическую иллюстрацию — результат вычислений показан на рисунке 5. Структура кода:
plot(j[[1]],type="b", cex=2, cex.lab=2, cex.axis=2, lty=2, lwd=2,
xlab = "num", ylab="var")
Рис. 5. Объясненная вариация
На рисунке 5 показано, что требуется только 2 главных компонента. Совокупная ставка взноса превысила 90 %. Согласно приведенным результатам анализа, такой метод анализа главных компонентов также может обеспечить эффективное параллельное вычисление на кластерах RHadoop.
Заключение
Изменения в информационных технологиях привели к появлению больших данных, которые сами по себе являются продуктом материи и капитала, поэтому можно сказать, что использование больших данных станет важным фактором повышения конкурентоспособности, производительности, инноваций и стимулирования прибыли. Поэтому анализ больших данных также стал самой передовой технологией. С наступлением эры больших данных использование архитектуры распределенной системы Hadoop для чтения, хранения и обработки больших данных стало одним из решений. Сочетание Я и Hadoop значительно улучшило возможности статистического анализа больших наборов данных и позволило получить больше вычислительных ресурсов, так что данные могут использоваться более эффективно, полезная информация может быть получена из данных, а скорость обработки данных также принесла больше экономических выгод. В статье проверяется возможность реализации анализа главных компонентов для больших данных с помощью RHadoop.
Литература
1. Чехарин, Е. Е. Большие данные: большие проблемы // Перспективы науки и образования. 2016. № 3 (21). С. 7-11.
2. Дзидзава, Э. Т. Большие данные и Hadoop: обзорный доклад / Э. Т. Дзидзава, К. М. Ахмедов // Вестник магистратуры. 2021. № 1-1 (112). С. 30-32.
3. Venables, W. N. An Introduction to R. Second Edition / W. N. Venables, D. M. Smith; R Development Core Team. — Godalming: Network Theory Ltd., 2009. — 144 p.
4. White, T. Hadoop. The Definitive Guide: Storage and Analysis at Internet Scale. Fourth Edition. — Sebastopol (CA): O'Reilly Media Inc., 2015. — 754 p.
5. Lin, Z.-Y. Big data technology principle and application concept: Storage. Processing. Analysis and application. Third Edition (in Chinese). — Beijing: People's Posts and Telecommunications Publishing House, 2020. — 302 p. — (Big Data Innovation Talent Training Series).
6. Гусейнов, А. А. Исследование распределенной обработки данных на примере системы Hadoop / А. А. Гусейнов, И. А. Бочкова // Актуальные проблемы авиации и космонавтики: Материалы XII Международной научно-практической конференции, посвященной Дню космонавтики (Красноярск, Россия, 11-15 апреля 2016 г.): в 2 тт. / под общ. ред. Ю. Ю. Логинова. — Красноярск: Сибирский гос. аэрокосмический ун-т им. М. Ф. Решетнева, 2016. — Т. 1. — С. 606-608.
7. Гладкий, М. В. Модель распределенных вычислений MapReduce // Труды БГТУ. Физико-математические науки и информатика. 2016. № 6 (188). С. 194-198.
8. Dean, J. MapReduce: Simplified Data Processing on Large Clusters / J. Dean, S. Ghemawat // Proceedings of the 6th Symposium on Operating Systems Design and Implementation (OSDI '04) (San Francisco, CA, USA, 06-08 December 2004). — Berkeley (CA): USENIX Association, 2004. — Pp. 137-149.
9. Adler, J. R in a Nutshell: A Desktop Quick Reference. Second Edition. — Sebastopol (CA): O'Reilly Media Inc., 2012. — 724 p.
10. Prajapati, V. Big Data Analytics with R and Hadoop. — Birmingham: Packt Publishing, 2013. — 238 p.
11. Prathibha, U. Big Data Analysis with R Programming and RHadoop / U. Prathibha, M. Thillainayaki, A. Jenneth // International Journal of Trend in Scientific Research and Development. 2018. Vol. 2, Is. 4. Pp. 2623-2627.
DOI: 10.31142/ijtsrd15705.
12. Oancea, B. Integrating R and Hadoop for Big Data Analysis / B. Oancea, R. M. Dragoescu // Revista Romana de Statistic! 2014. Nr. 2. Pp. 83-94.
13. Kabacoff, R. I. R in Action, Third Edition: Data Anal-ysis and Graphics with R and Tidyverse. — Shelter Island (NY): Manning, 2022. — 656 p.
DOI: 10.24412/2413-2527-2022-230-48-52
Implementing Principal Component Analysis
with RHadoop
Sun Yifan Emperor Alexander I St. Petersburg State Transport University Nanjing, China [email protected]
Abstract. Hadoop is a very popular distributed big data architecture that uses HDFS and MapReduce for high-speed computation and massive data storage. R is a widely used open source software with advanced statistical data analysis features. In this paper, RHadoop has been used to develop a principal component analysis function that can perform distributed parallel computations and to perform principal component analysis on an iris dataset to check feasibility. Using RHadoop significantly improves the usability and efficiency of R language execution for big data processing, and can also save the cost of big data processing in the R language.
Keywords: R language, Hadoop, RHadoop, big data, data analysis, MapReduce, HDFS.
References
1. Chekharin E. E. Big Data: Big Problems [Bolshie dannye: bolshie problemy], Perspectives of Science and Education [Per-spektivy nauki i obrazovaniya], 2016, No. 3 (21), Pp. 7-11.
2. Dzidzava E. T., Akhmedov K. M. Big Data and Hadoop: Overview Report [Bolshie dannye i Hadoop: obzornyy doklad], Bulletin of the Magistracy [Vestnik magistratury], 2021, No. 1-1 (112), Pp. 30-32.
3. Venables W. N., Smith D. M. An Introduction to R. Second Edition. Godalming, Network Theory Ltd., 2009, 144 p.
4. White T. Hadoop. The Definitive Guide: Storage and Analysis at Internet Scale. Fourth Edition. Sebastopol (CA), O'Reilly Media Inc., 2015, 754 p.
5. Lin Z.-Y. Big data technology principle and application Concept: Storage. Processing. Analysis and application. Third Edition (in Chinese). Beijing, People's Posts and Telecommunications Publishing House, 2020, 302 p.
6. Guseinov A. A., Bochkova I. A. Research of the Distributed Data Processing on the Example of the Hadoop System [Issledovanie raspredelennoy obrabotki dannykh na primere sistemy Hadoop], Topical Issues in Aeronautics and Astronautics: Proceedings of the XII International Scientific and Research Conference [Aktualnye problemy aviatsii i kos-monavtiki: Materialy XII Mezhdunarodnoy nauchno-praktich-eskoy konferentsii, posvyashchennoy Dnyu kosmonavtiki], Krasnoyarsk, Russia, April 11-15, 2016. Volume 1. Kra-noyarsk, Reshetnev Siberian State Aerospace University, 2016, Pp. 606-608.
PhD R. G. Gilvanov Emperor Alexander I St. Petersburg State Transport University Saint Petersburg, Russia gilvanov [email protected]
7. Gladkiy M. V. The Model of Distributed Computing MapReduce [Model raspredelennykh vychisleniy MapReduce], Proceedings of BSTU. Physics and Mathematics. Informatics [Trudy BGTU. Fiziko-matematicheskie nauki i in-formatika], 2016, No. 6 (188), Pp. 194-198.
8. Dean J., Ghemawat S. MapReduce: Simplified Data Processing on Large Clusters, Proceedings of the 6th Symposium on Operating Systems Design and Implementation (OSDI '04), San Francisco, CA, USA, December 06-08, 2004. Berkeley (CA), USENIX Association, 2004, Pp. 137-149.
9. Adler J. R in a Nutshell: A Desktop Quick Reference. Second Edition. Sebastopol (CA), O'Reilly Media Inc., 2012, 724 p.
10. Prajapati V. Big Data Analytics with R and Hadoop. Birmingham, Packt Publishing, 2013, 238 p.
11. Prathibha U., Thillainayaki M., Jenneth A. Big Data Analysis with R Programming and RHadoop, International Journal of Trend in Scientific Research and Development, 2018, Vol. 2, Is. 4, Pp. 2623-2627. DOI: 10.31142/ijtsrd15705.
12. Oancea B., Dragoescu R. M. Integrating R and Hadoop for Big Data Analysis, Romanian Statistical Review, 2014, No. 2, Pp. 83-94.
13. Kabacoff R. I. R in Action, Third Edition: Data Analysis and Graphics with R and Tidyverse. Shelter Island (NY), Manning, 2022, 656 p.