
Tenemos un clúster de Hadoop y estamos recopilando datos de métricas para investigar el comportamiento de lentitud en aplicaciones Spark.
después de una larga investigación sobre nuestro clúster Hadoop
Notamos desde el punto de métricas de Prometheus que node_disk_io_now tiene valores altos más de lo normal y es relevante para todos los discos HDFS en máquinas de nodos de datos.
la definición de node_disk_io_now es:
node_disk_io_now (campo 9) El único campo que debe llegar a cero. Se incrementa a medida que se envían solicitudes a la estructura request_queue adecuada y se reduce a medida que finalizan.
Queremos saber si ajustar los parámetros del kernel puede generar aspectos positivos en el rendimiento de los discos.
Según la definición de node_disk_io_now, parece que hay demasiadas tareas esperando en la cola.
y tal vez algunos parámetros del kernel puedan ayudar a mejorar el comportamiento anterior para que las tareas en cola no estén allí por mucho tiempo.
Respuesta1
En tu pregunta no veo qué tipo de disco estás usando, ya sea SSD/SAS/NLSAS o híbrido. Esta es la parte más importante de su selección.
Para responder a su pregunta, para los parámetros del kernel, diría que sí, hay algunos parámetros con los que puede jugar para encontrar el que mejor se ajuste a su clúster.
La parte importante de la optimización de IO es el Programador de IO. En los kernels de Linux actuales hay tres programadores de IO.
NOOP (FIFO):Se utiliza para almacenamientos de tipo SAN y SSD donde el dispositivo de almacenamiento por sí solo es lo suficientemente inteligente como para encargarse de su propia optimización.
FECHA LÍMITE:En general, es bueno para servidores de archivos y bases de datos. Debe considerar si está mejorando el rendimiento o la latencia. O puede aumentar las solicitudes de lectura o viceversa.
CFQ:No recomendado para servidores, bueno para uso de escritorio.
Además de los programadores de IO, existen otros parámetros para la memoria virtual que solo los mencionaré a continuación, pero necesita leer más sobre ellos usted mismo para aumentar el rendimiento.
vm.swappiness
vm.dirty_ratio
vm.dirty_background_ratio
vm.dirty_expire_centisecs
and....
Respuesta2
No hay (que yo sepa) opciones de kernel que puedan mejorar eso. Sin embargo, es posible que desee verificar que todos los demás nodos del controlador RAID tengan los mismos valores (tamaño de escritura en bloque, por ejemplo) que ese nodo, o al revés.
También asegúrese de que todos sus montajes en /etc/fstab tengan las mismas opciones.
Aparte de eso, debe verificar las especificaciones de sus discos y asegurarse de que sean las mismas.
También puede verificar el tamaño de su RAM, ya que algunos sistemas de archivos realizan un gran almacenamiento en caché en la RAM. No estoy seguro acerca de HDFS, pero, por ejemplo, ZFS depende mucho de eso.