¿Cuál es el mejor esquema de partición de disco para un Hadoop DataNode? ¿Es una pequeña partición RAID5 una mejor opción, o tal vez el sistema operativo debería coexistir en la primera partición DataNode, para evitar problemas de espacio en disco?

Para ampliar la respuesta de Paul Mackles, creo que hay un par de preguntas aquí.

En términos generales, a nosotros (Cloudera) nos gusta usar * discos * (no solo particiones) para el sistema operativo y los discos de datos utilizados por el nodo de datos (DN) y / o el rastreador de tareas (TT). Esto tiene que ver con los patrones comunes de E / S del sistema operativo versus el de los procesos de Hadoop hasta cierto punto. Más aún, esto es para aislar fallas de los sabores humanos, de configuración y de hardware.

El disco del sistema operativo

El disco del sistema operativo se puede particionar de cualquier forma que tenga sentido para usted, con la vista puesta en el hecho de que a Hadoop le encanta generar registros. En CDH, colocamos esos registros en / var / log / de forma predeterminada, aunque puede moverlos si lo desea. Por lo general, tampoco desea que los registros de Hadoop vayan a uno de los discos de datos, ya que generalmente crea suficiente contención para degradar el rendimiento de la unidad, sin mencionar el desequilibrio en el consumo de espacio que crea.

En la mayoría de los casos, la gente tiende a no preocuparse por las fallas del disco del sistema operativo por las razones que mencionó Paul Mackles, excepto por el nombre (NN) (aunque incluso eso es menos común ahora con el soporte NN HA y QJM). Si pisa fuerte y exige redundancia de disco del sistema operativo, definitivamente no desea RAID 5; tirarás demasiado espacio (R5 requiere 3 discos como mínimo). RAID 1 (reflejo) es mucho más apropiado. Todos los discos de datos siempre deben ser JBOD (sin RAID, cada disco con un sistema de archivos discreto, montado por separado).

Los discos de datos

Hay dos escuelas de pensamiento sobre cómo usar los discos restantes para datos. Los presentaré en el orden en que los veo en la naturaleza.

* Datos DN y TT en los mismos discos

Este es, con mucho, el escenario de implementación más común. Divide cada disco de datos en una partición gigante que abarca todo el disco y lo monta en / data / . En este directorio, crea “mapeado / local” para el TT y “dfs / dn” para el DN. Configura HDFS para reservar espacio para los datos locales de MapRed (establezca dfs.datanode.du.reserved en hdfs-site.xml en la cantidad de bytes que se dejarán para asignar en cada disco).

* Datos DN y TT en discos dedicados

Esto es menos común, pero también tiene algún mérito. En este caso, aún crea una partición grande en cada disco, los monta igual que antes, pero solo le da al DN una cierta cantidad de discos, dejando algunos al TT para los datos locales mapeados. La idea aquí es que los DN tienen un perfil de E / S diferente al TT y terminan usando los discos de manera muy diferente. La desventaja de esto es que sacrifica un poco de capacidad y rendimiento, ya que al TT generalmente se le da un recuento de husillos mucho menor que el DN. Los discos TT terminan viendo una mala utilización (en la mayoría de los casos), aunque generalmente es más predecible.

Finalmente, si solo está haciendo un POC y solo tiene un disco, agrúpelo todo en una sola partición y termine con él. Sin embargo, no desea ejecutar la producción de esta manera. Si solo tiene una unidad por nodo, querrá repensar su perfil de hardware para su clúster.

(Enchufe desvergonzado) Hay un buen libro que habla de todo esto. Guiño, guiño, empujar, empujar. 😉 Operaciones de Hadoop: Eric Sammer: 9781449327057: Amazon.com: Libros

En los nodos de datos, no le importa si / dev / sda es un SPOF. Usted no No realmente. Usted no Si está planeando la capacidad en torno a la idea de que cada nodo siempre está disponible, se ha perdido por completo el punto de cómo y por qué de un sistema verdaderamente distribuido. Dicho esto, hay muchas personas que lo hacen. También sufren de una rotación de personal operativo extremadamente alta. Los dos están probablemente relacionados …

Dicho esto, después de años de trabajar en sistemas Hadoop en escenarios del mundo real ™ a grandes escalas donde las cargas de trabajo son completamente impredecibles, solo hay una forma en que particionaría los sistemas para un uso general de múltiples inquilinos.

Disco raíz (sda):

En el disco raíz, tenemos una partición del sistema operativo y, en nuestro caso, algunas pequeñas particiones para el personal de administración para cosas como directorios de inicio, archivo de registro de Hadoop. Esto es seguido por una partición mapreduce y el espacio restante como HDFS.

En el resto (sdb-> sdx):

Ponemos una pequeña partición de intercambio como el área En caso de emergencia seguida de otra partición de reducción de mapas y el espacio restante como HDFS.

Ahora, ¿por qué harías esto?

Eric Sammer cubrió muchas de las razones de rendimiento. Pero quiero hablar sobre los problemas operativos.

En primer lugar, al poner un límite superior en el derrame de MR, el caché distribuido, etc., el espacio, esto evita que las aplicaciones mal escritas hagan daño a todo el sistema. Solo se necesita un trabajo que intente usar todo su conjunto de datos de entrada en su caché distribuida para eliminarlo para todos. Así que evita que eso suceda haciéndolo esencialmente imposible.

En segundo lugar, la capacidad de HDFS ahora es estática. Esta es una gran ventaja cuando se trata de planificación de capacidad. Hacerlos una partición esencialmente significa que HDFS ahora es un objetivo en movimiento. Algunos dirían que la reserva HDFS ayuda, en la práctica no lo hace. Usuarios y errores (como cuando el caché distribuido no se limpia …), puede superar rápidamente su reserva y ahora las capacidades son completamente incorrectas. Al no mezclar los dos, este problema desaparece por completo.

Además, como Eric lo mencionó, para el NN realmente quieres RAID10. 😉

Lo sentimos, no hay libro, pero puedo señalar algunas diapositivas donde hablo de esto y algunas otras cosas:

  • Hadoop Performance en LinkedIn
  • Operaciones de Hadoop en LinkedIn

Para este último, hay un video de youtube de mí. La mejor opción es escuchar e intentar seguir el mazo de diapositivas ya que no mostraron esa parte:

Hadoop está diseñado para manejar la falla de nodos individuales bastante bien, por lo que si la partición del sistema operativo en un nodo se llena, su clúster seguirá vivo. Es mejor usar los discos disponibles para los datos donde desea deshabilitar RAID. Además, es mejor tener muchos discos más pequeños en un nodo que menos discos grandes. Idealmente un disco por núcleo.

More Interesting

¿Cómo comienza un novato con la ciencia de datos?

¿Qué tipo de aprendizaje automático debo usar para la clasificación de varias clases si la longitud de mi entrada es diferente en cada ejemplo de entrenamiento?

¿Cómo podemos usar el aprendizaje automático y la ciencia de datos para tener un impacto significativo en el campo agrícola en la India?

En la regresión lineal múltiple, se da uno de cuatro coeficientes. ¿Cómo puedo obtener el ajuste deseado usando un método de regresión múltiple en tal caso?

¿Cómo manejas los datos faltantes (estadísticas)? ¿Qué técnicas de imputación recomienda o sigue?

¿Qué es big data en telecomunicaciones?

¿Cuál es el futuro de Big Data e IOT para tomarlo como una carrera futura después de algunos años de experiencia en la industria india de TI?

Cómo aprender ciencia de datos y análisis desde un punto de vista de gestión

Estoy trabajando en Business Intelligence de los últimos 5 años. ¿Es este el momento adecuado para actualizarme a la ciencia de datos y / o las tecnologías de big data?

¿Cuál es la diferencia entre la pista de ciencia de datos de Coursera (a través de Johns Hopkins) y el nano grado de analista de datos de Udacity?

¿Qué debo saber antes de aprender el análisis de big data?

¿Está bien incluir una variable no significativa en un modelo lineal generalizado (GLM)?

¿Qué proyectos puedo hacer en R?

Python o SAS? Soy nuevo en el campo de la ciencia de datos. Todavía atrapado entre muchas pistas / opciones, incapaz de decidir cuál seguir.

¿Qué se considerará más respetable, un puesto de ingeniería de ciencia de datos en IBM Watson o Google?