sql >> Base de Datos >  >> NoSQL >> HBase

Ajuste de rendimiento en MapReduce para mejorar el rendimiento

El ajuste del rendimiento en Hadoop ayuda a optimizar el rendimiento del clúster de Hadoop. En este artículo MapReduce Performance Tuning, primero explorará las diversas formas de mejorar el rendimiento del clúster de Hadoop y lograr los mejores resultados de la programación de MapReduce en Hadoop.

Luego, el artículo cubrirá siete formas o conceptos importantes para Hadoop MapReduce Performance Tuning. Estas formas son el ajuste de memoria en Hadoop, la mejora del rendimiento de E/S, el derrame de disco de mapa en Hadoop, el ajuste de tareas de mapeador y reductor, el combinador de escritura, el uso de uniones sesgadas y la ejecución especulativa.

Estas técnicas se pueden utilizar para configurar clústeres de Hadoop en la producción con hardware básico para mejorar el rendimiento con un costo operativo mínimo.

Introducción a Hadoop MapReduce Ajuste de rendimiento

Instalar el clúster de Hadoop en la producción es solo la mitad de la batalla ganada. Para el administrador de Hadoop, es extremadamente importante ajustar la configuración del clúster de Hadoop para obtener el máximo rendimiento.

El ajuste del rendimiento de Hadoop ayuda a optimizar el rendimiento del clúster de Hadoop y lograr los mejores resultados al ejecutar trabajos de MapReduce en empresas de Big Data.

Durante la instalación de Hadoop, el clúster de Hadoop se configura con los ajustes de configuración predeterminados.

Es muy importante que los administradores de Hadoop estén familiarizados con las diversas especificaciones de hardware, como la capacidad de RAM, la cantidad de discos montados en los DataNodes, la cantidad de núcleos de CPU, la cantidad de núcleos físicos o virtuales, tarjetas NIC, etc.

Como tal, no existe una única técnica de ajuste del rendimiento que se adapte a todos los trabajos de Hadoop porque es muy difícil obtener un equilibrio entre todos los recursos mientras se resuelve el problema de big data.

Podemos elegir los consejos y trucos de ajuste del rendimiento en función de la cantidad de datos que se moverán y del tipo de trabajo de Hadoop que se ejecutará en producción. El ajuste de rendimiento mejor y más efectivo ayuda a lograr el máximo rendimiento.

Para realizar lo mismo, debemos repetir el proceso mencionado a continuación hasta lograr el resultado deseado de manera óptima.
Ejecutar trabajo -> Identificar cuello de botella -> Abordar cuello de botella.

Básicamente, para el ajuste del rendimiento, primero debemos ejecutar el trabajo Hadoop MapReduce, identificar el cuello de botella y luego abordar el problema utilizando los métodos a continuación. Tenemos que repetir el paso anterior hasta lograr el nivel de rendimiento deseado.

Consejos y trucos para el ajuste del rendimiento de MapReduce

Las formas utilizadas para el ajuste del rendimiento de Hadoop MapReduce se pueden clasificar en dos categorías. Estas dos categorías son:

1. Ajuste de rendimiento basado en parámetros de tiempo de ejecución de Hadoop

2. Ajuste del rendimiento específico de la aplicación de Hadoop

Analicemos ahora cómo podemos mejorar el rendimiento del clúster de Hadoop en función de estas dos categorías.

1. Ajuste de rendimiento basado en parámetros de tiempo de ejecución de Hadoop

Esta categoría se ocupa de ajustar los parámetros de tiempo de ejecución de Hadoop, como ajustar el uso de la CPU, el uso de la memoria, el uso del disco y el uso de la red para ajustar el rendimiento. Las técnicas incluidas en esta categoría son:

a. Ajuste de memoria

El paso más importante para garantizar el máximo rendimiento de un trabajo de Hadoop es ajustar los parámetros de configuración de la memoria mediante la supervisión del uso de la memoria en el servidor.

Cada trabajo de MapReduce en Hadoop recopila la información sobre los diversos registros de entrada leídos, la cantidad de registros de reducción, la cantidad de registros canalizados para una ejecución posterior, la memoria de intercambio, el conjunto de tamaño de almacenamiento dinámico, etc.

Las tareas de Hadoop generalmente no están vinculadas a la CPU. Por lo tanto, la principal preocupación es optimizar el uso de la memoria y las pérdidas de disco.

La mejor regla general para el ajuste de la memoria para maximizar el rendimiento es asegurarse de que los trabajos de MapReduce no activen el intercambio. Eso significa usar tanta memoria como puedas sin activar el intercambio.

Se pueden usar softwares como Cloudera Manager, Nagios o Ganglia para monitorear el uso de la memoria de intercambio.

Siempre que haya una gran utilización de la memoria de intercambio, entonces el uso de la memoria debe optimizarse mediante la configuración de mapred.child.java.opts propiedad al reducir la cantidad de RAM asignada a cada tarea en mapred.child.java.opts .

Podemos ajustar la memoria para la tarea configurando mapred.child.java.opts a -Xmx2048M en un mapred-site.xml.

b. Minimice el derrame de disco de mapas

Disk IO es el cuello de botella de rendimiento en Apache Hadoop. Había muchos parámetros que podemos ajustar para minimizar los derrames. Podemos ajustar los parámetros como:

  • Compresión de la salida del mapeador
  • Asegúrese de que el asignador utilice el 70 % de la memoria del montón para el búfer de derrame.

Pero, ¿crees que los derrames frecuentes son realmente una buena idea?

Se recomienda enfáticamente que no derrame más de una vez porque si derramamos una vez, entonces debemos volver a leer y escribir todos los datos:3 veces el IO.

c. Ajuste de tareas del mapeador

Podemos establecer implícitamente el número de tareas del mapa. La forma más común y efectiva de ajustar el rendimiento de Hadoop para el mapeador es controlar la cantidad de mapeadores y el tamaño de cada trabajo.

Al tratar con archivos grandes, el marco divide el archivo en partes más pequeñas para que el mapeador pueda ejecutarlo en paralelo. Sin embargo, la inicialización de un nuevo trabajo de mapeador suele tardar unos segundos, lo que también es una sobrecarga y debe minimizarse. Así que las sugerencias para lo mismo son:

  • Reutilizar tarea jvm
  • Apunta a que las tareas del mapa se ejecuten de 1 a 3 minutos cada una. Por lo tanto, si el tiempo promedio de ejecución del mapeador es inferior a un minuto, aumente mapred.min.split.size para asignar menos mapeadores en la ranura y, por lo tanto, reducir la sobrecarga de inicialización del mapeador.
  • Use el formato de entrada de archivo Combinar para un montón de archivos más pequeños.

2. Ajuste de rendimiento específico de la aplicación de Hadoop

Las técnicas incluidas en esta categoría son:

a. Minimizar la salida del mapeador

Al minimizar la salida del mapeador, podemos mejorar el rendimiento, ya que la salida del mapeador es muy sensible a la E/S del disco, la E/S de la red y la sensibilidad de la memoria en la fase aleatoria. Podemos lograr esto por:

  • Filtrar los registros en el lado del mapeador en lugar del lado del reductor.
  • Usando datos mínimos para formar la clave y el valor de salida de nuestro mapeador en MapReduce.
  • Comprimiendo la salida del mapeador
b. Carga reductora de equilibrio

Las tareas de reducción desequilibradas crean problemas de rendimiento. Algunos de los reductores toman la mayor parte de la salida del mapeador y tienen una duración extremadamente larga en comparación con los otros reductores. Podemos equilibrar la carga del reductor mediante:

  • Implementando una mejor función hash en la clase Partitioner.
  • Escribiendo un trabajo de preprocesamiento para separar claves usando múltiples salidas. Luego use otro trabajo de reducción de mapa para procesar las claves especiales que pueden causar el problema.
c. Reduzca los datos intermedios con Combiner en Hadoop

Además, podemos ajustar el rendimiento del clúster de Hadoop escribiendo un combinador. Combiner reduce la cantidad de datos que se transferirán del mapeador al reductor. Esto demuestra ser beneficioso ya que reduce la congestión de la red.

d. Ejecución especulativa

El rendimiento de los trabajos de MapReduce se ve seriamente afectado cuando las tareas tardan más en terminar su ejecución. La ejecución especulativa en Hadoop es el enfoque común para resolver este problema mediante la copia de seguridad de las tareas lentas en las máquinas alternativas.

Podemos habilitar la ejecución especulativa configurando los parámetros de configuración ‘mapreduce.map.tasks.especulative.execution’ y ‘mapreduce.reduce.tasks.speculative.execution’ a la verdad Esto reducirá el tiempo de ejecución del trabajo.

Resumen

Finalmente, hemos visto que el ajuste de rendimiento en Hadoop ayuda a optimizar el rendimiento del clúster de Hadoop. El artículo explica varios consejos y trucos para ajustar el rendimiento del clúster de Hadoop.

El artículo ha destacado algunos de los mejores y más efectivos trucos para maximizar el rendimiento.

Sin embargo, si tiene alguna consulta sobre este tema, no dude en compartirla con nosotros en la sección de comentarios.