Aquí hay algunas preguntas de entrevista frecuentes y más frecuentes y respuestas de calidad para desarrolladores de Hadoop.
1-Si no se define un particionador personalizado en Hadoop, ¿cómo se particionan los datos antes de enviarlos al reductor?
Entonces, Hadoop MapReduce por defecto usa ‘ HashPartitioner ‘.
- ¿Cuáles son algunas buenas preguntas al entrevistar a un candidato para un puesto como desarrollador de software con un enfoque en el procesamiento del lenguaje natural?
- ¿Qué significa si Accenture solicita tarjetas de marcas?
- ¿Cuáles son algunos errores comunes que cometen las personas cuando buscan trabajo?
- ¿Es profesional que un entrevistador acorte la entrevista de trabajo para decirme que no lo entendí?
- ¿Es extraño que recibí una llamada de entrevista para un puesto de gerente de producto de software a pesar de que mi experiencia es en hardware?
Utiliza el método hashCode () para determinar a qué partición se enviará un par determinado (clave, valor). HashPartitioner también tiene un método llamado getPartition.
HashPartitioner también toma key.hashCode () & integer> MAX_VALUE . Se necesitan estos códigos para encontrar el módulo utilizando el número de tareas de reducción. Supongamos que hay 10 tareas de reducción, luego getPartition devolverá valores de 0 a 9 para todas las claves.
Public class
HashPartitionerextends
Partitioner
{
Public int getpartitioner(k key, v value, int numreduceTasks)
{
Return (key.hashCode() & Integer.Max_VALUE) % numreduceTasks;
}
}
2- ¿Cómo escribir un particionador personalizado para un trabajo de Hadoop MapReduce?
Almacena los resultados de manera uniforme en diferentes reductores, según la condición del usuario.
Al configurar un Partitioner para particionar por la clave, podemos garantizar que los registros de la misma clave irán al mismo reductor. También asegura que solo un reductor reciba todos los registros de esa clave en particular.
Con los siguientes pasos, podemos escribir un particionador personalizado para un trabajo de Hadoop MapReduce:
- Cree una nueva clase que extienda Partitioner Class.
- Luego, anule el método getPartition, en el contenedor que se ejecuta en MapReduce.
- Mediante el uso de la clase Partitioner del conjunto de métodos, agregue el particionador personalizado al trabajo. O agregue el particionador personalizado al trabajo como archivo de configuración.
3-¿Cómo se puede copiar un archivo en HDFS con un tamaño de bloque diferente al de la configuración de tamaño de bloque existente?
Al utilizar los siguientes comandos, se puede copiar un archivo en HDFS con un tamaño de bloque diferente:
–Ddfs.blocksize = block_size, donde block_size está en bytes.
Entonces, considere un ejemplo para explicarlo en detalle:
Suponga que desea copiar un archivo llamado test.txt de tamaño, digamos de 128 MB, en los archivos hdf. Y para este archivo, desea que el tamaño del bloque sea de 32 MB (33554432 bytes) en lugar del predeterminado (128 MB). Entonces, puede emitir el siguiente comando:
Hadoop fs –Ddfs.blocksize = 33554432-copyFromlocal / home / dataflair / test.txt / sample_hdfs.
Ahora, puede verificar el tamaño de bloque HDFS asociado con este archivo:
hadoop fs –stat% o / sample_hdfs / test.txt
También puede verificarlo utilizando la interfaz de usuario web NameNode para ver el directorio HDFS.
4- ¿Qué es barajar y ordenar en Hadoop MapReduce?
La barajadura y clasificación se lleva a cabo después de completar la tarea de mapa. La fase de barajar y ordenar en Hadoop ocurre simultáneamente.
- Aleatorio: Aleatorio es el proceso mediante el cual el sistema clasifica la salida de valor clave de las tareas del mapa y la transfiere al reductor. La fase aleatoria es importante para los reductores, de lo contrario, no tendrían ninguna entrada. Como barajar puede comenzar incluso antes de que la fase del mapa haya terminado. Esto ahorra algo de tiempo y completa la tarea en menos tiempo.
- Sorting- Mapper genera el par intermedio clave-valor. Antes de comenzar el reductor, el marco mapreduce clasifica estos pares clave-valor por las claves. También ayuda al reductor a distinguir fácilmente cuándo debe comenzar una nueva tarea de reducción. Así ahorra tiempo para el reductor.
La mezcla y la clasificación no se realizan si especifica cero reductor (setNumReduceTasks (0))
Lea sobre Barajar y Ordenar en detalle.
5-¿Cuál es la necesidad de MapReduce en Hadoop?
En Hadoop, cuando hemos almacenado los datos en HDFS , ¿cómo procesar estos datos es la primera pregunta que surge? Transferir todos estos datos a un nodo central para su procesamiento no va a funcionar. Y tendremos que esperar para siempre que los datos se transfieran a través de la red. Google enfrentó este mismo problema con su Sistema de archivos de gafas distribuidas (GFS) . Resolvió este problema usando un modelo de procesamiento de datos MapReduce.
Desafíos antes de MapReduce
- Consume mucho tiempo: al usar una sola máquina no podemos analizar los datos (terabytes), ya que tomará mucho tiempo.
- Costoso: todos los datos (terabytes) en un servidor o como clúster de base de datos, lo cual es muy costoso. Y también difícil de manejar.
MapReduce supera estos desafíos
- Eficiente en tiempo: si queremos analizar los datos. Podemos escribir el código de análisis en la función Mapa. Y el código de integración en la función Reducir y ejecutarlo. Por lo tanto, este código de MapReduce irá a cada máquina que tenga una parte de nuestros datos y se ejecute en esa parte específica. Por lo tanto, en lugar de mover terabytes de datos, simplemente movemos kilobytes de código. Entonces, este tipo de movimiento es eficiente en el tiempo.
- Rentable: distribuye los datos en varias máquinas de baja configuración.
Para más preguntas y respuestas de la entrevista, consulte los siguientes enlaces:
Preguntas principales de la entrevista para el desarrollador de Hadoop
Preguntas principales de la entrevista para MapReduce
Preguntas principales de la entrevista para HDFS