968-Texto Del Artículo-9010-1-10-20210409

Descargar como pdf o txt
Descargar como pdf o txt
Está en la página 1de 7

Revista de la Facultad de Ciencias de la UNI, REVCIUNI 18 (1) (2015) 47–53

Big Data: Implementación de Hadoop 2.7 sobre una placa


Raspberry pi v3
César Martı́n Cruz Salazar†
Escuela de Ciencia de la Computación - Facultad de Ciencias.
Universidad Nacional de Ingenierı́a;
† ccruz@uni.edu.pe

Recibido el 30 de Septiembre del 2015; aceptado el 14 de Octubre del 2015


Este trabajo de investigación trata del uso de arquitecturas de bajo consumo energético y bajo costo en un
sistema tipo clúster y la instalación de Big Data Analytics Framework sobre esta arquitectura para poder garantizar
el uso de Big Data. Como parte del trabajo, hicimos una prueba sobre una arquitectura ARM que consistı́a de un
computador compacto de única placa llamada Raspberry pi versión 3 modelo B que formaba parte de un clúster
hadoop de un solo nodo SNHC(Single Node Hadoop Cluster) y en la cual se instaló el software Hadoop 2.7.0, se
configuró este y se ejecutaron ejemplos, mostrando ası́ una implementación fiable y exitosa de Hadoop sobre un
clúster.
Palabras Claves: clúster, raspberry pi versión 3, programación paralela, big data, hadoop versión 2.7, progra-
mación distribuida, clúster educativo.
This research is about the use of energy-efficient architectures of low cost in a system cluster type and the
installation of Big Data Analytics Framework on this architecture to guarantee the use of Big Data. As part of
the work, we did a test on an ARM architecture consisting of a compact computer single board called Raspberry
Pi version 3 model B it was part of a Hadoop cluster from a single node SNHC (Single Node Hadoop Cluster)
and with Hadoop 2.7.0 installed, this software was configured and examples were executed, showing a reliable and
successful implementation of Hadoop on a cluster.

Keywords: cluster, raspberry pi version 3, parallel programming, big data, hadoop version 2.7, distributive
programming, educational cluster.

1 Introducción tas mejoras podrı́an conducir a la adopción de tales sis-


temas pequeños para la implementación de servidores,
como han anunciado actores mayores de esta industria.
Sobre la base de las necesidades y demandas cada vez Nos referimos a Dell, HP y AppliedMicro que han lanzado
mayores de la ciudadanı́a acerca de Big Data es que ini- prototipos de servidores basados en procesadores ARM.
ciamos esta investigación para proporcionar una mejor Aún AMD, que historicamente ha comercializado servi-
arquitectura e infraestructura con bajo consumo de en- dores con procesadores basados en la arquitectura x86,
ergı́a y bajo costo, para el análisis de Big Data. El incre- tiene como objetivo lanzar servidores basados en ARM.
mento continuo en volumen, variedad y velocidad de Big Naturalmente, esto plantea la pregunta de la viabilidad
Data expone a los Centros de Datos a un problema con el de servidores ARM de bajo consumo como contendientes
consumo de energı́a[1]. Los servidores de estos Centros para los servidores tradicionales x64 de Intel/AMD para
de Datos consumen mucha energı́a, necesitan una gran el procesamiento de grandes volúmenes de datos (Big
cantidad de equipos de refrigeración y ocupan espacio de Data). Si un clúster basado en ARM con menor consumo
grandes extensiones. En la actualidad, uno de los prob- de energı́a y costo puede igualar el rendimiento de un
lemas más grandes que los centros de datos enfrentan es clúster tradicional de Intel/AMD, esto podrı́a marcar el
asegurar la eficiencia y la refrigeración barata de todo comienzo de una nueva era de la informática verde(green
el hardware con el uso de energı́a más baja posible. El computing) que puede ayudar a alcanzar nuevos niveles
hardware utilizado en los Centros de Datos es a menudo de rendimiento y eficiencia en los costos para el análisis
costoso, hambriento de potencia y con una necesidad de de Big Data. Nuestra experiencia obtenida en la im-
refrigeración. El costo de los equipos de refrigeración plementación de clústeres de bajo costo y bajo consumo
a menudo es igual o supera el costo del hardware del energético[3] nos anima a realizar este nuevo reto. Es ası́,
servidor. Las empresas y los investigadores están con- que en este artı́culo presentamos además de la instalación
stantemente buscando maneras de mejorar la eficiencia y y configuración del software Hadoop 2.7.0. resultados de
bajar el costo en los Centros de Datos[2]. Tradicional- tiempo obtenidos al ejecutar el programa QuasiMonte-
mente, los Centros de Datos emplean nodos de servi- Carlo para el calculo de Pi y el programa WordCount
dores x86-64bits con una potencia de decenas a cientos para diferentes tamaños de archivos de texto. También,
de Watts. Pero últimamente, sistemas de baja poten- realizamos comparaciones con otros sistemas de computo.
cia originalmente desarrollados para dispositivos móviles El Clúster de único nodo(SNHC, Single Node Hadoop
han visto una mejora significativa en rendimiento. Es-

Facultad de Ciencias – Universidad Nacional de Ingenierı́a


48 César Martı́n Cruz Salazar

Cluster) que se muestra en la figura 2 es lo que usamos


en esta oportunidad.

2 Especificaciones del clúster

Proporcionamos una descripción de sus componentes de


hardware y del software instalado.

Figure 2. Clúster de único nodo hecho con una Rasp-


berry pi versión 3 modelo B .
2.1 Hardware

Se usó un Raspberry Pi(RPI) versión 3. Esta placa es


del tamaño de una tarjeta de crédito ver figura 1. Cada 2.2 Software
uno cuenta con 1 Gigabyte de RAM, un sistema sobre
Se instaló como sistema operativo Raspbian Jessie, que
un Chip(SoC, System on a Chip) Broadcom BCM2837,
es una versión optimizada de la distribución Debian
que integra un procesador quad core ARM Cortex-A53
GNU/Linux para la Raspberry pi. Para ello se preparó
de 1.2GHz, una arquitectura de 64 bits, un GPU Broad-
una tarjeta MicroSD con una imagen del Raspbian Jessie,
com VideoCore IV con salida HDMI y salida de vı́deo
descargada del sitio web de la Fundación Raspberry
RCA, y un controlador USB. La placa también contiene,
pi(raspberrypi.org).
un adaptador para puerto Ethernet externo de 10/100
Mbits, y un adaptador de cuatro puertos USB 2.0. Ver
tabla 1. El almacenamiento local del sistema operativo y 2.2.1 Hadoop
archivos de datos es una tarjeta de memoria microSD de
La tecnologı́a conocida como Apache Hadoop versión 2
32 gigabytes que se coloca en una ranura acondicionada
(figura 3) es un framework de software open-source para
en la placa. La placa RPI3 se alimenta con un adaptador
almacenamiento y procesamiento a gran escala de un con-
de voltaje de 5V a 2.5A.
junto de datos ası́ como para desarrollar aplicaciones dis-
tribuidas sobre clusteres de computadores de hardware
básico acogido por el Apache Software Foundation. Este
framework contiene varios módulos: Hadoop Common,
Hadoop Distributed File System(HDFS), Hadoop YARN
y Hadoop MapReduce.
Uno de los prerrequisitos para instalar y usar Hadoop
es primero instalar Java en el sistema operativo Raspbian
Jessie.

Figure 1. Raspberry Pi 3 modelo B

SoC Broadcom BCM2837


CPU 1.2GHz quad-core ARM Cortex-A53 Figure 3. Hadoop versión 2.7.0.
GPU Dual Core VideoCore
RAM 1GB LPDDR2 SDRAM
Ethernet Un jack 10/100 RJ45
2.2.2 HDFS
USB Cuatro conectores USB 2.0
Memoria Micro SD card slot HDFS: Hadoop Distributed FileSystem. Es un frame-
Tabla 1:Especificaciones para Raspberry pi 3 modelo B work que suministra almacenamiento de datos [?]. Para

Facultad de Ciencias – UNI REVCIUNI 18 (1) (2015) 47–53


Big Data: Implementación de Hadoop 2.7 sobre una placa Raspberry pi v3 49

el procesamiento de los datos con MapReduce es nece- Para empezar a usar los servicios de Hadoop. Se eje-
sario que los archivos de texto se encuentren almacenados cutan antes algunos scripts: El script shell start-dfs.sh y
de manera distribuida. Este hecho es posible con HDFS. start-yarn.sh.
HDFS ha sido diseñado para ejecutarse sobre clústeres
de computadores.
En el uso de Hadoop para ejecutar aplicaciones
MapReduce, hay terminologı́as claves usadas en la tec-
nologı́a que debemos entender: Namenode(nodo mae-
stro) y Datanode(en el clúster se usa HDFS para alma-
cenar datos replicados).

2.2.3 YARN
Figure 5. Ejecución de script start-dfs.sh.
Mejora la potencia de un Hadoop Cluster. Suministra
gran escabilidad. La potencia de procesamiento y centros
de datos continua creciendo rápidamente porque YARN
research manager se enfoca exclusivamente en la calen-
darización. Puede gestionar aquellos enormes clústeres
rápidamente y fácilmente. YARN es completamente
compatible con MapReduce, para el seteo de MapReduce
daemons. Desde que estamos ejecutando MapReduce us-
ando YARN, el MapReduce jobtracker y tasktrackers son
reemplazados con un único resource manager corriendo Figure 6. Ejecución de script start-yarn.sh.
sobre el namenode.

2.2.4 MapReduce Con el comando jps chequeamos si todos los servicios


estan corriendo como se espera. Ver figura 7.
Es un modelo de programación desarrollado por Google
en primer lugar para permitir procesamiento simple dis-
tribuido de grandes conjuntos de datos. En un MapRe-
duce el programa consta de dos pasos :El paso Mapa y la
etapa de reducción. El paso mapa realiza filtraje y clasi-
ficación. La etapa de reducción, realiza más cálculos en
la salida de los mapas, y esto suele ser una operación de
recorte de datos. Dependiendo del programa del mapa
y/o reducción las tareas pueden ser paralelizados. Los Figure 7. Ejecución de jps.
programadores encuentran el sistema fácil de usar: mas
de 10 mil distintos programas MapReduce han sido im-
plementados internamente en Google en los cinco años Para detener los servicios, se ejecutan los scripts shell
pasados, y un promedio de cien mil tareas MapReduce en este orden: stop-yarn.sh y stop-dfs.sh. Con nuestros
son ejecutados sobre clústeres de Google cada dı́a, proce- servicios corriendo, podemos ahora empezar a ejecutar
sando un total de mas de veinte petabytes de datos por ejemplos.
dı́a [4].
3.2 Programa QuasiMonteCarlo para
3 Instalación y Configuración cálculo de Pi
pi@pi3Master:~ $ hadoop jar /usr/local/hadoop/\
3.1 HADOOP 2.7.0 share/hadoop/mapreduce/hadoop-mapreduce-\
examples-2.7.0.jar pi 5 50
Para ver la instalación y configuración de Hadoop 2.7.0
consultar el Apéndice. Resultado obtenido: Job Finished in 175.156 seconds Es-
timated value of Pi is 3,16800000000000000000

3.3 Programa WordCount


El código fuente del programa WordCount se encuentra
en el apéndice de este artı́culo. Su propósito es tomar
un archivo de entrada y retornar otro archivo con las
cuentas de cada palabra localizada en el archivo de en-
Figure 4. Versión de Hadoop en el Clúster de un solo trada. Ejecutamos este programa con diferentes tamaños
nodo. de archivos de texto para probar el clúster de un solo
nodo.

REVCIUNI 18 (1) (2015) 47–53 Facultad de Ciencias – UNI


50 César Martı́n Cruz Salazar

3.3.1 Archivo: LICENSE.txt de 16kb

pi@pi3Master:~ $ hdfs dfs -copyFromLocal \


LICENSE.txt /license.txt
16/08/13 22:35:19 WARN util.NativeCodeLoader: \
Unable to load native-hadoop library for your \
platform... using builtin-java classes where\
applicable
pi@pi3Master:~ $ time hadoop jar /usr/local/ \
hadoop/share/hadoop/mapreduce/hadoop- \
mapreduxamples-2.7.0.jar wordcount /license.txt \
/license-resultado

Tiempo obtenido: 1m9,770s. Del archivo obtenido se vi-


sualiza la primera de 14 páginas(1 de 14):
Figure 9. Resultado del contador de palabras del
archivo smallfile.txt.

3.3.3 Archivo: mediumfile.txt de 35Mb

pi@pi3Master:~ $ time hadoop jar /usr/local/ \


hadoop/share/hadoop/mapreduce/hadoop-mapreduce\
-examples-2.7.0.jar wordcount /mediumfile.txt\
/mediumfile-resultado

Tiempo obtenido: 6m4,984s. En la figura 10, se visualiza


la primera página del archivo obtenido.

Figure 8. Resultado del contador de palabras del


archivo LICENSE.txt.

3.3.2 Archivo: smallfile.txt de 2 Megabytes

pi@pi3Master:~ $ time hadoop jar /usr/local/ \


hadoop\share/hadoop/mapreduce/hadoop-mapreduce\ Figure 10. Resultado del contador de palabras del
-examples-2.7.0.jar wordcount /smallfile.txt \ archivo mediumfile.txt.
/smallfile-resultado

3.3.4 Página Web para monitoreo:


Tiempo obtenido: 1m44,596s. Se visualiza la primera
página del archivo obtenido: http://192.168.0.130:8088.

Facultad de Ciencias – UNI REVCIUNI 18 (1) (2015) 47–53


Big Data: Implementación de Hadoop 2.7 sobre una placa Raspberry pi v3 51

Clúster Tamaño archivo Tiempo(s)


RPI v2 de 3 Nodos 2MB 1m41s ref. [6]
SNHC 2MB 1m44.596s
RPI v2 de 3 Nodos 35MB 2m:22s ref. [6]
RPI mB 8 nodos 35MB 8m35s [5]
SNHC 35MB 6m4.984s
Standard Laptop 35MB 18.07s [5]
Figure 11. Visualización de los procesos ejecutados. Standard Desktop 35MB 14.50s [5]
Tabla 3: Clúster de un solo nodo(SNHC) vs otros
Clústeres

3.3.5 Página Web:


5 Conclusiones
http://192.168.0.130:50070.
En un clúster de un solo nodo de Raspberry Pi 3 se instaló
exitosamente Hadoop versión 2.7.0. Este hecho tiene un
gran significado porque nos permite con un costo de ˜$70
ejecutar software de Big Data. Este precio no incluye los
precios de monitor y teclado. Ası́ mismo, este equipo
cumple muy bien el rol educativo ya que permite instalar
y probar diversos sofwares libres que son tendencia.

6 Trabajo Futuro
Como una continuidad de este trabajo se instalará en
Figure 12. Visualización de los nodos activos. un futuro cercano Hadoop 2.7.2 en un Clúster multinodo
basado en varias placas Raspberry pi 3 u otro tipo de
placa de mejores caracterı́sticas.

7 Agradecimientos
4 Análisis de tiempos Agradecemos a Dios, a la UNI y a la Facultad de Cien-
cias.
comparativo de Clústeres
Empezamos ante con una visualización de las especifi- 8 Apéndice
caciones de las máquinas involucradas en las compara-
ciones. 8.1 Instalación y configuración de
Hadoop 2.7.0 en un clúster de un
solo nodo
4.1 Especificaciones de máquinas
$ sudo apt-get update
La referencia en la tabla se dan las especificaciones de las
máqinas usadas. $ java -version

$ sudo apt-get install rsync


Computador Núcleos Procesador RAM
Desktop 4 Intel i7-3.5GHz 4 GB $ ssh-keygen -t dsa -P ’’ -f ~/.ssh/id_dsa
Laptop 2 Intel i7-1.8GHz 4 GB
RaspberryPi 1 ARM11-700MHz 512MB $ cat ~/.ssh/id_dsa.pub >> ~/.ssh \
Tabla 2: Especificaciones de máquinas[5] /authorized_keys

$ wget -c http://apache.mirrors.lucidnetworks.\
net/hadoop/common/hadoop-2.7.0/ \
4.2 Tabla de resultados de tiempos hadoop-2.7.0.tar.gz

La tabla 3 muestra los resultados de tiempos obtenidos $ tar zxvf hadoop-2.7.0.tar.gz


para diferentes tamaños de archivos de texto y diferentes
tipos de clústeres. $ sudo mv hadoop-2.7.0 /usr/local/hadoop

REVCIUNI 18 (1) (2015) 47–53 Facultad de Ciencias – UNI


52 César Martı́n Cruz Salazar

</configuration>
$ update-alternatives --config java
$ sudo nano hdfs-site.xml
$ sudo nano ~/.bashrc
<configuration>
#Hadoop Variables <property>
export JAVA_HOME=/usr/lib/jvm/ \ <name>dfs.replication</name>
jdk-8-oracle-arm32-vfp-hflt <value>1</value>
export HADOOP_HOME=/usr/local/hadoop </property>
export PATH=$PATH:$HADOOP_HOME/bin <property>
export PATH=$PATH:$HADOOP_HOME/sbin <name>dfs.namenode.name.dir</name>
export HADOOP_MAPRED_HOME=$HADOOP_HOME <value>file:/usr/local/hadoop/hadoop_data \
export HADOOP_COMMON_HOME=$HADOOP_HOME /hdfs/namenode</value>
export HADOOP_HDFS_HOME=$HADOOP_HOME </property>
export YARN_HOME=$HADOOP_HOME <property>
export HADOOP_COMMON_LIB_NATIVE_DIR=\ <name>dfs.datanode.data.dir</name>
$HADOOP_HOME/lib/native <value>file:/usr/local/hadoop/hadoop_data \
export HADOOP_OPTS="-Djava.library.path= \ /hdfs/datanode</value>
$HADOOP_HOME/lib" </property>
</configuration>
$ source ~/.bashrc
$ cd
$ cd /usr/local/hadoop/etc/hadoop
$ mkdir -p /usr/local/hadoop/hadoop_data \
$ sudo nano hadoop-env.sh /hdfs/namenode

#The java implementation to use. $ mkdir -p /usr/local/hadoop/hadoop_data \


export JAVA_HOME="/usr/lib/ \ /hdfs/datanode
jvm/jdk-8-oracle-arm32-vfp-hflt "
$ sudo chown pi:pi -R /usr/local/hadoop
$ sudo nano core-site.xml
<configuration> $ hdfs namenode -format
<property>
<name>fs.defaultFS</name> $ start-dfs.sh
<value>hdfs://localhost:9000</value>
</property> $ start-yarn.sh
</configuration>
$ sudo nano yarn-site.xml $ jps
<configuration>
<property> http://192.168.0.130:8088/
<name>yarn.nodemanager.aux-services</name> http://192.168.0.130:50070/
<value>mapreduce_shuffle</value>
<property>
<property> 8.2 Programa WordCount.java
<name>yarn.nodemanager.aux-services.mapreduce. \
package org.myorg;
shuffle.class</name>
import java.io.IOException;
<value> org.apache.hadoop.mapred. \
import java.util.*;
ShuffleHandler</value>
import org.apache.hadoop.fs.Path;
</property>
import org.apache.hadoop.conf.*;
</configuration>
import org.apache.hadoop.io.*;
import org.apache.hadoop.mapred.*;
$ sudo cp mapred.site.xml.template \
import org.apache.hadoop.util.*;
mapred-site.xml
public class WordCount {
$ sudo nano mapred-site.xml
public static class Map extends \
<configuration>
MapReduceBase implements Mapper<LongWri$
<property>
private final static IntWritable \
<name>mapreduce.framework.name</name>
one = new IntWritable(1);
<value>yarn</value>
private Text word = new Text();
</property>

Facultad de Ciencias – UNI REVCIUNI 18 (1) (2015) 47–53


Big Data: Implementación de Hadoop 2.7 sobre una placa Raspberry pi v3 53

public void map(LongWritable key, \ configuration.setJobName("wordcount");


Text value, OutputCollector<T$ configuration.setOutputKeyClass(Text.class);
String line=value.toString(); configuration.setOutputValueClass( \
StringTokenizer tokens = new \ IntWritable.class);
StringTokenizer(line);
while (tokens.hasMoreTokens()) { configuration.setMapperClass(Map.class);
total += values.next().get(); configuration.setCombinerClass \
} (Reduce.class);
output.collect(key, new IntWritable(total)); configuration.setReducerClass \
} (Reduce.class);
} configuration.setInputFormat \
public static void main(String[] args) \ (TextInputFormat.class);
throws Exception{ configuration.setOutputFormat \
(TextOutputFormat.class);
String input = args[0];
String output = args[1]; FileInputFormat.setInputPaths \
String startupmsg = String.format\ (configuration,new Path(input));
("Word Count job started getti$ FileOutputFormat.setOutputPath \
System.out.println(startupmsg); (configuration,new Path(output));
JobClient.runJob(configuration);
JobConf configuration = new JobConf \ }
(WordCount.class); }

———————————————————————————————–

1. Dumitrel Loghin, Bogdan Marius Tudor, Hao Zhang, Hadoop cluster deployment on arm architecture. IJAR-
Beng Chin Ooi, Yong Meng Teo. A performance study CCE, Vol.4, 1, 2015.
of big data on small nodes. Proceedings of the VLDB
5. Shreyyas Vanarase, Tommy Mark. Distributed com-
Endowment, Vol. 8, No. 7, 2015.
puting systems with raspberry pi. Georgia Institute of
2. Nick Schot. Feasibility of raspberry pi 2 based micro Technology-CX 4140, 2014.
data centers in big data applications,23th Twente Stu-
6. Raspberry pi 2 hadoop 2 cluster.
dent Conference on IT, June, 2015,.
http://www.widriksson.com/raspberry-pi-2-hadoop
3. Cesar Martin Cruz Salazar. Medidas de rendimiento y -2-cluster/#Performance comparison to Raspberry
comparacion entre el cluster Cruz I y el cluster Cruz II. PI 1 Model B 512mb
REVCIUNI, 17(1):9–16, 8 2014.
7. Cesar Martin Cruz Salazar. Taller de big data y hadoop,
4. Vijayakumar S, Dr.M.Balamurugan, Ranjani K. Big data: UNI, 2015.

REVCIUNI 18 (1) (2015) 47–53 Facultad de Ciencias – UNI

También podría gustarte