El uso de MapReduce para abordar el paradigma de Big Data

Descargar (0)

Texto completo

(1)

XXVII Simposio Nacional de Estad´ıstica 2017 Medell´ın- Colombia, Agosto de 2017

El uso de MapReduce para abordar el paradigma de Big Data

Jhonathan Medina Usma1, Liz Steefani Polan´ıa2

Departamento de Estad´ıstica, Facultad de Ciencias, Universidad Nacional de Colombia

1.

Introducci´

on

Actualmente gran cantidad de datos son generados cada d´ıa en l´ınea y tambi´en en diversas ´areas del conocimiento, por ejemplo los datos gen´omicos. El estudiar esta informaci´on puede generar oportunidades de marketing, mejora de procesos, mejora de rutas de transporte, entre otras. Tal es el volumen de la informaci´on, que intentar analizarla supera la capacidad de un computador, por ejemplo, R es uno de los 20 lenguajes de programaci´on m´as usados del mundo [TIOBE, 2017], esto se debe a su potencial para hacer an´alisis estad´ısticos avanzados, pero presenta una gran debilidad para procesar gran cantidad de datos, por lo tanto se deben buscar m´etodos computacionales capaces de procesar estas tareas.

Es ac´a donde se recurre a la programaci´on en paralelo, la cual permite dividir un problema en problemas m´as peque˜nos y trabajarlos de manera simultanea, con lo cual se disminuye el tiempo en que se procesa la tarea. Ma-pReduce es un modelo de computaci´on en paralelo muy usado para el an´alisis de Big Data. Apache Hadoop es el sofware framework m´as popular para el uso de MapReduce, esto se debe sustancialmente a que es de licencia libre. Por otro lado, Hadoop no tiene implementadas las extensas librer´ıas estad´ısticas para analizar datos que R posee y dada la deficiencia de R para manejar gran cantidad de datos en un an´alisis, se requiere de una integraci´on entre Hadoop y R para un an´alisis completo de la informaci´on.

Dada la importancia de aprender MapReduce y Hadoop para afrontar los problemas de la actualidad y del futuro, se realizar´a una explicaci´on de estos y una gu´ıa para su implementaci´on e integraci´on con R, sin abordar los temas espec´ıficos de la arquitectura del sofware.

2.

Objetivo general

Explicar que es MapReduce y c´omo se implementa a trav´es de RHadoop.

3.

Objetivos espec´ıficos

Introducir los fundamentos de instalaci´on de RHadoop en una m´aquina con sistema operativo Windows y/o Ubuntu.

Simular un ejemplo de la metodolog´ıa MapReduce a trav´es de RHadoop.

1Estudiante de estad´ıstica. E-mail: jmedinau@unal.edu.co 2Estudiante de estad´ıstica. E-mail: lspolaniag@unal.edu.co

(2)

4.

Antecedentes

Hadoop 0.1.0 fue lanzado en abril de 2006, es un proyecto realizado por Apache Software Foundation que tiene sus inicios en los art´ıculos [Ghemawat et al., 2003] y [Dean and Ghemawat, 2008] realizados en Google. Desde entonces grandes empresas han estado detr´as de su desarrollo como lo son Yahoo, Google, IBM, entre otras. Dada su fama, en internet es posible encontrar gu´ıas sobre su uso, en su gran mayor´ıa en ingl´es donde resalta el libro [White, 2012] pero tambi´en se puede encontrar informaci´on en espa˜nol, por ejemplo [Lurie, 2013].

Con respecto a la integraci´on de Hadoop y R se tienen algunas librer´ıas documentadas en R, algunos blog en internet y como gu´ıa para abordar este tema esta [Prajapati, 2013], pero todos estos recursos est´an en ingl´es, la informaci´on en espa˜nol sobre el tema es muy escasa, es por esto que se plantea hacer una gu´ıa en espa˜nol para p´ublico estad´ıstico. Ante los problemas de R para procesar bases de datos de gran tama˜no, existen otras propuestas que se basan en mejorar el funcionamiento interno de R, como aprovechar m´as n´ucleos del procesador de la maquina y as´ı poder trabajar las tareas en paralelo o vectorizar los procesos, pero cabe resaltar que a´un con esto no todos los algo-ritmos pueden mejorarse. Entre estas propuestas se encuentra Microsoft R Open, disponible en [Microsoft, 2017], un software que toma a R como lenguaje de programaci´on y es compatible con todas sus librer´ıas, permite una sencilla integraci´on con los dem´as programas de la Suite de Microsoft como Microsoft SQL Server, adem´as integra librer´ıas propias que permiten el uso de m´as de un n´ucleo del procesador. Otras propuestas sin necesidad de salir de R que permiten paralelizar tareas y usar m´as de un n´ucleo, son librer´ıas ya alojadas en el CRAN como por ejemplo [Analytics and Weston, 2015].

Estas propuestas presentan un incremento en la velocidad de la realizaci´on de varias tareas, tanto as´ı que pueden repartir tareas en maquinas dentro de un cluster, pero tienen debilidades, tales como no poder controlar el nivel de tolerancia, es decir, calcular la probabilidad de que falle una maquina y se pierda la informaci´on que est´a procesada, ya que con esta probabilidad se puede saber en cuantas maquinas repetir la informaci´on para reducir riesgos. Estos problemas Hadoop los soluciona con HDFS3, siendo por esto una de las mejores propuestas en la actualidad para manejar informaci´on de gran tama˜no.

5.

Marco Te´

orico

A continuaci´on se definir´an algunos conceptos, tomados de [UNAM, ].

Hadoop: es un sistema de c´odigo abierto que permite almacenar, procesar y analizar grandes conjuntos de datos a trav´es de una o varias computadoras trabajan de forma independiente y que act´uan en conjunto, ´esto usando modelos de programaci´on sencillos; Hadoop soporta aplicaciones distribuidas bajo una licencia libre.

Hadoop Distributed File System (HDFS): es un sistema de archivos distribuidos que se encarga del almace-namiento a trav´es de una red de m´aquinas, el cual esta dise˜nado para almacenar archivos de gran tama˜no con una filosof´ıa de escribir s´olo una vez y permitir m´ultiples lecturas. [Jos´e A Cuartas M, 2017]

Paralelismo: consiste en el procesamiento de una serie de instrucciones de un programa, que son ejecutadas por m´ultiples procesadores que trabajan de manera independiente.

RHadoop: es la colecci´on de tres paquetes en R, rmr, rhdfs y rhbase. El primero de estos le proporciona a Hadoop la funci´on MapReduce en R, rhdfs asiste la gesti´on de archivos y por ´ultimo rhbase soporta la gesti´on de HBase desde adentro de R.

MapReduce: es la base de Hadoop, este es un entorno de trabajo que permite procesar grandes cantidades de datos distribuidos en clusters en paralelo. Este modelo de programaci´on como su nombre lo indica se divide en dos funciones: Map y Reduce.

(3)

Figura 1: Diagrama del modelo MapReduce, tomado de: [Revoledu, 2017]

La informaci´on entrante se dividir´a en particiones. A cada una de estas se le aplicar´a la funci´on Map, que como resultado generar´a un dato pareado (key, value), donde ”key”ser´a una identificaci´on com´un y ”value”ser´a el resultado de la tarea puesta en la funci´on Map. En el ejemplo de la Figura 1, los datos entrantes se dividen por columnas y cada una de estas es evaluada por la funci´on Map que se encargar´a de contar cuantas veces se repite una palabra, por lo que en la primera partici´on (A,A,D,B) se tendr´a como resultado (A,2),(B,1),(D,1). Cuando finalice la funci´on Map abran resultados (key,value) en cada partici´on, como siguiente paso se agrupa-ran las parejas a trav´es de todas las particiones que tengan la misma ”key”. En la Figura 1, quedan 5 grupos, uno por cada letra diferente que hab´ıa en la base inicial. Posteriormente a cada uno de estos grupos se les aplicar´a la funci´on Reduce, que generar´a un valor final para cada ”key”. En el ejemplo, se sumar´a dentro de cada grupo el n´umero de veces que apareci´o cada palabra en su respectiva partici´on.

Finalmente los pares resultantes se unir´an y este ser´a el resultado del MapReduce.

6.

Instalaci´

on de RHadoop

Existen varias formas de lograr la integraci´on de Hadoop y R, entre ellas est´an Hadoop Streaming, RHIPE y RHa-doop. A continuaci´on se dar´an las instrucciones para instalar RHadoop en Ubuntu a trav´es de una maquina virtual, se hace a partir de maquina virtual para usuarios de Windows. La gu´ıa es para la instalaci´on de Hadoop en un ´

unico nodo.

VirtualBox: Esta se encuentra disponible en https : //www.virtualbox.org/. Con este programa se crear´a la ma-quina virtual sobre la que se instalar´a Ubuntu.

Ubuntu Desktop: Ingrese a https : //www.ubuntu.com/ y descarge la ultima versi´on para escritorio, tenga en cuenta los bits de su sistema operativo a la hora de la descarga y que sea la versi´on para virtual box.

Java JDK: Es necesario instalar Java JDK, la cual es la versi´on para desarrolladores, se encuentra disponible en: http : //www.oracle.com/technetwork/articles/javase/index − jsp − 138363.html.

Los pasos de instalaci´on de Ubuntu en la maquina virtual y del Java JDK en Ubuntu se pueden encontrar en internet, o se puede escribir a los autores, los cuales tienen las gu´ıas de instalaci´on pero por cuestiones de extensi´on del trabajo no se anexan.

(4)

Una vez realizada la correcta instalaci´on del Java JDK, es de suma importancia que se encuentre bien instalado dado que puede generar muchos problemas a la hora de instalar las librer´ıas. Sobre la terminal de Ubuntu realice los siguientes pasos:

1. Instalar R:

sudo add-apt-repository "deb http://cran.rstudio.com/bin/linux/ubuntu $(lsb_release -cs)/" sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys E084DAB9

sudo apt-get update

sudo apt-get install r-base r-base-dev

2. Posteriormente se debe hacer la instalaci´on de Hadoop, la cual no se detalla en este trabajo dada su extensi´on pero al igual que con instrucciones anteriores se puede escribir a los autores sobre su gu´ıa.

3. Una vez Hadoop se haya instalado correctamente y comprobado, el siguiente paso es descargar algunas librer´ıas necesarias antes de descargar las librer´ıas de RHadoop, para esto se puede correr el siguiente c´odigo en la consola de R:

install.packages( c(’rJava’,’RJSONIO’, ’itertools’, ’digest’, ’Rcpp’, ’functional’, ’plyr’, ’stringr’),repos=’http://cran.revolutionanalytics.com’)

4. Los paquetes que conforman RHadoop son rmr2 y rhdfs, los cuales se pueden descargar en: https://github. com/RevolutionAnalytics/RHadoop/wiki.

5. Una vez descargados los paquetes se instalan ingresando los siguientes c´odigos en la terminal de Ubuntu. sudo R CMD INSTALL rmr rmr2_2.0.2.tar.gz

sudo R CMD INSTALL rhdfs rhdfs_1.0.8.tar.gz

7.

MapReduce en RHadoop

Una vez se hayan instalado Hadoop, Java JDK, RHadoop y se hayan puesto correctamente las variables de entorno de Hadoop y Java JDK, se puede proceder a trabajar en la consola de R, por esto se ilustrar´a el ejemplo de MapReduce.

# Cargar las librer´ıas

Sys.setenv("HADOOP_CMD"="/usr/local/hadoop/bin/hadoop") Sys.setenv(HADOOP_STREAMING="/usr/local/hadoop/share/hadoop/tools/lib/hadoop-streaming-2.8.0.jar") Sys.getenv("HADOOP_CMD") library(rJava) library(rhdfs) library(rmr2)

#Definir los datos

small.ints = to.dfs(1:10) #Definir MapReduce map = function(k, v) { lapply(seq_along(v), function(r){ x <- runif(v[[r]]) keyval(r,c(max(x),min(x))) })}) wordcount = function(input, output = NULL, pattern = " "){

(5)

Fase Map: Esta funci´on lee el archivo de texto l´ınea por l´ınea y los divide por espacios. Esta fase Map asignar´a una llave (1,2,3...) como un valor a todas las palabras que son capturadas.

wc.map = function(., lines) { keyval( unlist( strsplit( x = lines, split = pattern)), 1)}

Fase Reduce: Esta funci´on calcula la frecuencia total de todas las palabras sumando las palabras que tengan la misma llave.

wc.reduce = function(word, counts ) { keyval(word, sum(counts))}

Despu´es de definir el contador de palabras y el reductor, se requiere crear el m´etodo de controlador que inicia la ejecuci´on de MapReduce, por lo que se debe especificar la entrada, salida.

mapreduce(input = input , output = output, input.format = "text", map = wc.map, reduce = wc.reduce, combine = T)} wordcount(’/RHadoop/1/’) from.dfs("/tmp/RtmpRMIXzb/file2bda5e10e25f")

8.

Recomendaciones

Hacer una lectura de los comandos b´asicos de la terminal de Ubuntu para tener mayor claridad en los pasos. Tener mucho cuidado en los pasos que se realicen, y hacerlos en el orden que se ponen.

En internet existe informaci´on y algunas gu´ıas de lo anteriormente presentado, pero no todas funcionan para todo el mundo, ac´a se aloja la que despu´es de muchos intentos funciono.

Prestar atenci´on en las variables de entorno, dado que estas causaron muchos inconvenientes durante todo el proceso de instalaci´on en las diferentes etapas.

9.

Anexos

Los autores realizaron las gu´ıas paso a paso de las siguientes instalaciones, no se anexan en el trabajo dada la extensi´on m´axima del mismo:

Creaci´on de una m´aquina virtual en VirtualBox e instalaci´on de Ubuntu sobre esta. Instalaci´on de Java JDK en Ubuntu.

Descarga e instalaci´on de Hadoop sobre Ubuntu.

Referencias

[Analytics and Weston, 2015] Analytics, R. and Weston, S. (2015). foreach: Provides Foreach Looping Construct for R. R package version 1.4.3.

[Dean and Ghemawat, 2008] Dean, J. and Ghemawat, S. (2008). Mapreduce: simplified data processing on large clusters. Communications of the ACM, 51(1):107–113.

(6)

[Ghemawat et al., 2003] Ghemawat, S., Gobioff, H., and Leung, S.-T. (2003). The google file system. In ACM SIGOPS operating systems review, volume 37, pages 29–43. ACM.

[Jos´e A Cuartas M, 2017] Jos´e A Cuartas M (2017). Hadoop y su sistema de archivo distribuido hdfs, pura infra-estructura para bigdata. [Online; accessed May 09 , 2017].

[Li M. Chen, 2016] Li M. Chen, Zhixun Su, B. J. (2016). Mathematical Problems in Data Science. Springer International Publishing.

[Lurie, 2013] Lurie, M. (2013). Big data de c´odigo abierto para el impaciente, parte 1: Tutorial hadoop.

[Microsoft, 2017] Microsoft (2017). Download microsoft r open 3.4.0, the enhanced r distribution. [Online; accessed May 21 , 2017].

[Prajapati, 2013] Prajapati, V. (2013). Big data analytics with R and Hadoop. Packt Publishing Ltd.

[Provost and Fawcett, 2013] Provost, F. and Fawcett, T. (2013). Data Science for Business: What you need to know about data mining and data-analytic thinking. .O’Reilly Media, Inc.”.

[Revoledu, 2017] Revoledu (2017). Mapreduce diagram. [Online; accessed May 04 , 2017]. [TIOBE, 2017] TIOBE (2017). Tiobe index for march 2017.

[UNAM, ] UNAM. ¿qu´e es un cluster?

Figure

Actualización...

Referencias

Related subjects :