Integración del lenguaje de programación Hadoop y R

Hadoop es un marco de código abierto que fue presentado por ASF (Apache Software Foundation) . Hadoop es el marco más crucial para copiar con Big Data. Hadoop ha sido escrito en Java y no está basado en OLAP (Online Analytical Processing) . La mejor parte de este marco de big data es que es escalable y se puede implementar para cualquier tipo de datos en diversas variedades, como el tipo estructurado, no estructurado y semiestructurado. Hadoop es una herramienta de middleware que nos brinda una plataforma que administra un grupo grande y complejo de computadoras que se desarrolló en Java y, aunque Java es el lenguaje de programación principal para Hadoop, se pueden usar otros lenguajes: R, Python o Ruby. 

El marco Hadoop incluye:

  • Sistema de archivos distribuidos de Hadoop (HDFS) : es un sistema de archivos que proporciona un sistema de archivos distribuido robusto. Hadoop tiene un marco que se utiliza para la programación de trabajos y la gestión de recursos de clúster cuyo nombre es YARN.
  • Hadoop MapReduce : es un sistema para el procesamiento paralelo de grandes conjuntos de datos que implementa el modelo MapReduce de programación distribuida.

Hadoop amplía un almacenamiento distribuido más sencillo con la ayuda de HDFS y proporciona un sistema de análisis a través de MapReduce. Tiene una arquitectura bien diseñada para escalar hacia arriba o hacia abajo los servidores según los requisitos del usuario desde una hasta cientos o miles de computadoras, con un alto grado de tolerancia a fallas. Hadoop ha demostrado su necesidad infalible y sus estándares en el procesamiento de big data y la gestión eficiente del almacenamiento, proporciona escalabilidad ilimitada y cuenta con el respaldo de los principales proveedores de la industria del software. 

Integración de Hadoop y R

Como sabemos, los datos son lo más preciado que más importa para una organización y no sería una exageración decir que los datos son el activo más valioso. Pero para lidiar con esta estructura enorme y no estructurada, necesitamos una herramienta efectiva que pueda realizar el análisis de datos de manera efectiva, por lo que obtenemos esta herramienta al fusionar las características del lenguaje R y el marco Hadoop de análisis de big data, este incremento de resultado de fusión en su escalabilidad. Por lo tanto, necesitamos integrar ambos, solo entonces podemos encontrar mejores perspectivas y resultados a partir de los datos. Pronto repasaremos las diversas metodologías que ayudan a integrar estos dos.

R es un lenguaje de programación de código abierto que se usa ampliamente para el análisis estadístico y gráfico. R admite una gran variedad de bibliotecas estadísticas y matemáticas para (modelado lineal y no lineal, pruebas estadísticas clásicas, análisis de series temporales, clasificación de datos, agrupación de datos, etc.) y técnicas gráficas para procesar datos de manera eficiente. 

Una de las principales cualidades de R es que produce gráficos de calidad bien diseñados con mayor facilidad, incluidos símbolos matemáticos y fórmulas donde sea necesario. Si se encuentra en una crisis de funciones sólidas de análisis de datos y visualización, combinar este lenguaje R con Hadoop en su tarea será la última opción para reducir la complejidad. Es un lenguaje de programación orientado a objetos altamente extensible y tiene fuertes capacidades gráficas. 

Algunas razones por las que R se considera la mejor opción para el análisis de datos:

  • Una sólida colección de paquetes.
  • Potentes técnicas de visualización de datos.
  • Características de programación gráfica y estadística encomiables
  • Lenguaje de programación orientado a objetos
  • Posee una amplia colección inteligente de operadores para cálculos de arreglos, arrays particulares, etc.
  • Capacidad de representación gráfica en pantalla o en copia impresa.

El motivo principal detrás de la integración de R y Hadoop:

No sospecho que R es el lenguaje de programación más elegido para computación estadística, análisis gráfico de datos, análisis de datos y visualización de datos. Por otro lado, Hadoop es un poderoso marco de Bigdata que es capaz de manejar una gran cantidad de datos. En todo el procesamiento y análisis de datos, el sistema de archivos distribuido (HDFS) de Hadoop juega un papel vital. Aplica el enfoque de procesamiento de reducción de mapa durante el procesamiento de datos (proporcionado por el paquete rmr de R Hadoop), lo que hace que el proceso de análisis de datos sea más eficiente y más fácil.

¿Qué pasaría si ambos colaboraran entre sí? Obviamente, la eficiencia del proceso de gestión y análisis de datos aumentará varias veces. Entonces, para tener eficiencia en el proceso de análisis y visualización de datos, debemos combinar R con Hadoop.

Después de unir estas dos tecnologías, el poder de cálculo estadístico de R aumenta, luego permitimos:

  • Usa Hadoop para la ejecución de los códigos R.
  • Utilice R para acceder a los datos almacenados en Hadoop.

Varias formas en las que se puede integrar tanto R como Hadoop:

Los métodos más populares y elegidos con frecuencia se muestran a continuación, pero hay algunos otros RODBC/RJDBC que podrían usarse pero no son tan populares como los métodos a continuación. La arquitectura general de las herramientas de análisis integradas con Hadoop se muestra a continuación junto con su estructura en capas diferente de la siguiente manera.

La primera capa: es la capa de hardware: consiste en un grupo de sistemas informáticos, 

La segunda capa: Es la capa de middleware de Hadoop. Esta capa también se ocupa de la distribución de los archivos sin problemas mediante el uso de HDFS y las funciones del trabajo MapReduce. 

La tercera capa: Es la capa de interfaz que proporciona la interfaz para el análisis de datos. En este nivel, podemos usar una herramienta efectiva como Pig, que nos brinda una plataforma de alto nivel para crear programas MapReduce utilizando un lenguaje que llamamos Pig-Latin. También podemos usar Hive, que es una infraestructura de almacenamiento de datos desarrollada por Apache y construida sobre Hadoop. Hive nos brinda una serie de facilidades para ejecutar consultas complejas y ayuda a analizar los datos utilizando un lenguaje similar a SQL llamado HiveQL y también amplía el soporte para implementar tareas de MapReduce. 

Además de usar Hive y Pig, también podemos usar las bibliotecas Rhipe o Rhadoop que construyen una interfaz para brindar integración entre Hadoop y R y permite a los usuarios acceder a los datos del sistema de archivos de Hadoop y permitir escribir su propio script para implementar los trabajos Map y Reduce. , o también podemos usar el Hadoop-streaming que es una tecnología que se usa para integrar el Hadoop.

a) R Hadoop: el método R Hadoop incluye cuatro paquetes, que son los siguientes:

  • El paquete rmr: el paquete rmr proporciona la funcionalidad Hadoop MapReduce en R. Por lo tanto, el programador de R solo tiene que dividir la lógica y la idea de su aplicación en el mapa y reducir los asociados de fases y simplemente enviarlo con los métodos rmr. Después de eso, el paquete rmr hace una llamada a la transmisión de Hadoop y a la API de MapReduce a través de múltiples parámetros de trabajo como directorio de entrada, directorio de salida, reductor, mapeador, etc., para realizar el trabajo de R MapReduce sobre el clúster de Hadoop (la mayoría de los componentes son similares a la transmisión de Hadoop).
  • El paquete rhbase: permite que el desarrollador de R conecte Hadoop HBASE a R mediante Thrift Server. También ofrece funcionalidades como (leer, escribir y modificar tablas almacenadas en HBase desde R).

 Una secuencia de comandos que utiliza la funcionalidad RHаdoop se parece a la figura que se muestra a continuación.

R

library(rmr)
map<-function(k,v){...}
reduce<-function(k,vv){...}
mapreduce(
input = "data.txt",
output ="output",
textinputformat = rawtextinputformat,
map = map,
reduce = reduce
)
  • El paquete rhdfs: proporciona administración de archivos HDFS en R, porque los datos en sí se almacenan en el sistema de archivos Hadoop . Las funciones de este paquete son las siguientes: Manipulaciones de archivos -( hdfs.delete, hdfs.rm, hdfs.del, hdfs.chown, hdfs.put, hdfs.get, etc.), lectura/escritura de archivos -(hdfs.flush, hdfs.read, hdfs.seek, hdfs.tell, hdfs.line.reader, etc.), Directorio -hdfs.dircreate, hdfs.mkdir, Inicialización: hdfs.init, hdfs.defaults.
  • El paquete plyrmr: proporciona funcionalidades como la manipulación de datos, resúmenes del resultado de salida, realización de operaciones de conjunto (unión, intersección, resta, fusión, única).

b) RHIPE: Rhipeis se usa en R para realizar un análisis complejo de la gran colección de conjuntos de datos a través de Hadoop. Es una herramienta de entorno de programación integrada que trae Divide and Recombine (D & R) para analizar la gran cantidad de datos. 

RHIPE = R and Hadoop Integrated Programming Environment

RHIPE es un paquete de R que permite el uso de API en Hadoop. Así, de esta manera podemos leer, guardar los datos completos que se crean usando RHIPE MapReduce. RHIPE se implementa con muchas características que nos ayudan a interactuar de manera efectiva con HDFS. Una persona también puede usar varios lenguajes como Perl, Java o Python para leer conjuntos de datos en RHIPE. La estructura general del script R que usa Rhipe se muestra a continuación de la siguiente manera.

R

library(Rhipe)
 
rhint(TRUE, TRUE);
map < -expression({lapply(map.values, function(mapper)...)})
reduce < -expression(
pre={...},
reduce={...},
post={...}, }
x < - rhmr(
map=map, reduce=reduce,
ifolder=inputPath,
ofolder=outputPath,
inout=c('text', 'text'),
jobname='a job name'))
rhex(z)

Rhipe permite al usuario de R crear trabajos de MapReduce (el paquete rmr también ayuda a realizar este trabajo) que funcionan completamente dentro del entorno de R mediante expresiones de R. Esta funcionalidad de MapReduce: permite a un analista especificar rápidamente Maps y Reduce utilizando todo el poder, la flexibilidad y la expresividad del lenguaje interpretado de R.

c) Conector Oracle R para Hadoop (ORCH): 

Orch es una colección de paquetes de R que proporciona las siguientes funciones.

  1. Varias interfaces atractivas para trabajar con los datos mantenidos en las tablas de Hive, capaz de utilizar la infraestructura informática basada en Apache Hadoop, y también proporciona el entorno R local y las tablas de la base de datos de Oracle.
  2. Utilice una técnica analítica predictiva, escrita en R o Java como trabajos de Hadoop MapReduce, que se puede aplicar a los datos almacenados en archivos HDFS.

Después de instalar este paquete en R, podrá realizar las diversas funciones de la siguiente manera.

  • Capaz de facilitar el acceso y transformar datos HDFS utilizando una capa de transparencia habilitada para Hive para uso general,
  • Permitimos usar el lenguaje R para escribir mapeadores y reductores de manera efectiva,
  • Copia de datos entre la memoria R al sistema de archivos local, al HDFS, al Hive y a las bases de datos de Oracle,
  • Capaz de programar los programas R fácilmente para ejecutar el programa como trabajos de Hadoop MapReduce y devolver los resultados a cualquiera de esas ubicaciones correspondientes, etc.

Oracle R Connector for Hadoop permite el acceso desde un cliente local de R a Apache Hadoop utilizando los siguientes prefijos de función:

  • Hadoop: identifica funciones que proporcionan una interfaz para Hadoop MapReduce.
  • hdfs: identifica funciones que proporcionan una interfaz para HDFS.
  • Orch: identifica una variedad de funciones; orch es un prefijo general para las funciones ORCH.
  • Mineral: identifica funciones que proporcionan una interfaz para un almacén de datos de Hive.

d) Hadoop Streaming : Hadoop streaming es una utilidad de Hadoop para ejecutar el trabajo de Hadoop MapReduce con scripts ejecutables como Mapper y Reducer. El script está disponible como parte del paquete R en CRAN. Y su objetivo es hacer que R sea más accesible para las aplicaciones basadas en streaming de Hadoop. 

 Esto es simplemente congruente con la operación de tubería en Linux. Con esto, el archivo de entrada de texto se imprime en flujo (stdin), que se proporciona como entrada a Mapper, y la salida (stdout) de Mapper se proporciona como entrada a Reducer; finalmente, Reducer escribe la salida en el directorio HDFS. 

Una línea de comando con map y reduce tareas implementadas como scripts R se vería así.

R

$ ${HADOOP_HOME}/bin/Hadoop jar
$ {HADOOP_HOME}/contrib/streaming/*.jar\
-inputformat org.apache.hadoop.mapred.TextInputFormat \
-input input_data.txt \
-output output \
-mapper /home/tst/src/map.R \
-reducer /home/tst/src/reduce.R \
-file /home/ts/src/map.R \
-file /home/tst/src/reduce.R

El principal beneficio de la transmisión de Hadoop es permitir la ejecución de Java, así como trabajos de MapReduce programados no basados ​​en Java sobre clústeres de Hadoop. La transmisión de Hadoop admite varios lenguajes como Perl, Python, PHP, R y C++, y otros lenguajes de programación de manera eficiente. Varios componentes del trabajo MapReduce de transmisión de Hadoop.

Publicación traducida automáticamente

Artículo escrito por madhav_mohan y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *