Red de conocimiento informático - Aprendizaje de programación - Preguntas frecuentes sobre Hadoop

Preguntas frecuentes sobre Hadoop

Preguntas frecuentes sobre Hadoop

(1) ¿Es Hadoop adecuado para el gobierno electrónico? ¿Por qué?

El gobierno electrónico es el uso de la tecnología de Internet para reestructurar y optimizar las estructuras organizativas y los procesos de trabajo del gobierno, y para construir una plataforma de servicios de información de operaciones gubernamentales racionalizada, eficiente, limpia y justa. Por lo tanto, el gobierno electrónico definitivamente generará una gran cantidad de datos relevantes y los requisitos informáticos correspondientes. Cuando los datos y los cálculos involucrados en estos dos requisitos alcancen una cierta escala, la arquitectura del sistema tradicional no podrá cumplirlos. Se necesitarán tecnologías como la tecnología Hadoop. Por lo tanto, la tecnología Hadoop se puede utilizar para construir una plataforma en la nube de gobierno electrónico.

En resumen, no existe una idoneidad o inadecuación absoluta para ningún sistema. Sólo se puede decidir cuando surge la demanda si no hay necesidad de procesamiento de datos y análisis de cálculos en un sistema de gobierno electrónico muy pequeño. , no será posible. Se necesitan tecnologías como Hadoop. De hecho, las plataformas comerciales de gobierno electrónico a menudo implican datos a gran escala y una gran cantidad de requisitos informáticos, de análisis y procesamiento, por lo que se necesitan tecnologías como Hadoop para resolverlo. (2) ¿Tiene Hadoop ventajas para el procesamiento en línea en tiempo real?

No hay ninguna ventaja en usar Hadoop directamente para el procesamiento en tiempo real, porque Hadoop resuelve principalmente el problema de los cálculos de trabajos de procesamiento por lotes masivos, pero puede usar el sistema HBase del sistema NOSQL distribuido basado en Hadoop y sistemas reales relacionados. -sistemas de procesamiento en tiempo:

1. HBase basado en Hadoop puede lograr el procesamiento y el cálculo en tiempo real de los requisitos relacionados, resolviendo principalmente las necesidades de consultas y cálculos relacionados con claves y valores masivos;

2. Puede considerar Spark Computing. Spark es un sistema basado en memoria RDD moderna. Es más rápido que Hadoop y puede realizar cálculos iterativos, como minería de datos, algoritmos de aprendizaje automático, etc.

3. También existe Storm. Storm es un sistema informático en tiempo real gratuito, distribuido y altamente tolerante a fallas. Storm se usa a menudo en análisis en tiempo real, aprendizaje automático en línea y computación continua. llamadas remotas distribuidas y ETL y otros campos.

4. Considere S4. S4 es una plataforma universal, distribuida, escalable, parcialmente tolerante a fallas y conectable de código abierto por Yahoo! Esta plataforma está diseñada principalmente para facilitar a los desarrolladores el desarrollo de aplicaciones que procesen flujos de datos continuos e ilimitados.

Puedes elegir el sistema adecuado en función de tus necesidades reales.

(3) Hadoop no tiene problemas para almacenar datos masivos, pero ¿cómo puede lograr la recuperación de datos masivos en tiempo real?

1. Puede combinarlo con los motores de búsqueda de código abierto Apache Lucene, Solr o ElasticSearch.

2 Para la recuperación de datos masivos en tiempo real, puede considerar HBase. Se recomienda utilizar hadoop para crear los datos en claves de consulta como conjunto de datos clave y luego escribir el conjunto en la tabla de Hbase que indexará automáticamente con la clave como clave. Además, también se estima que el tiempo de respuesta del valor de consultar la clave ya no es de 10 milisegundos.

Si las condiciones de búsqueda son combinaciones múltiples, se pueden diseñar adecuadamente varias tablas de hbase. Dicha recuperación también es muy rápida. Al mismo tiempo, Hbase también admite índices secundarios. Si la consulta cumple con las condiciones, Hbase también admite MapReduce. Si el tiempo de respuesta no es alto, puede considerar usar Hive en combinación con el sistema Hbase.

Si la cantidad de datos no es muy grande, también puedes considerar soportar un sistema NOSLQ similar a SQL.

(4) ¿Puedes darme algunos métodos de aprendizaje y planes de aprendizaje para hadoop? ¿El sistema hadoop es un poco grande y siento que es imposible aprenderlo?

Primero que nada. , ¿entiendes qué es hadoop y para qué se puede utilizar?

Luego, puede comenzar con el programa de estadísticas de frecuencia de palabras más clásico para obtener una comprensión preliminar de las ideas básicas de MapReduce y la forma de procesar datos.

Luego, puede aprender formalmente los principios básicos de hadoop, incluidos HDFS y MapReduce. Primero, observe los principios básicos generales y macro, no mire primero el nivel del código fuente.

Además, puede profundizar en HDFS, MapReduce y los detalles del módulo. En este momento, puede combinar el código fuente con una comprensión profunda y el mecanismo de implementación.

Finalmente, necesitas practicar. Puedes completar algunas aplicaciones relacionadas con Hadoop según tus propios proyectos o necesidades relacionadas.

(5) Después de dividir un archivo grande en muchos archivos pequeños, ¿cómo usar Hadoop para procesar eficientemente estos archivos pequeños? ¿Y cómo hacer que cada nodo tenga la carga más equilibrada posible?

1. ¿Cómo utilizar Hadoop para procesar eficientemente estos pequeños archivos?

Su pregunta es muy buena. Hadoop es muy eficiente cuando procesa datos a gran escala, pero cuando procesa una gran cantidad de archivos pequeños, la eficiencia será baja debido a una sobrecarga excesiva de recursos del sistema. Para resolver el problema, los archivos pequeños se pueden empaquetar en archivos grandes, como usar el formato de archivo SequcenFile. Por ejemplo, usando la firma del archivo como clave y el contenido del archivo como valor, escriba un registro del archivo SequcenFile, de modo que. en los que se pueden convertir varios archivos pequeños. Para un archivo grande, cada archivo pequeño anterior se asignará a un registro del archivo SequcenFile.

2. ¿Cómo hacer que la carga de cada nodo sea lo más equilibrada posible?

El equilibrio de carga es muy crítico en un clúster de Hadoop. Esta situación a menudo se debe a la distribución desigual de los datos del usuario y, de hecho, la cantidad de ranuras de recursos informáticos se distribuye uniformemente en cada nodo, por lo que cuando el trabajo es. Las tareas no locales en ejecución transmitirán una gran cantidad de datos, lo que provocará un desequilibrio de carga del clúster. Por lo tanto, la clave para resolver el desequilibrio es equilibrar la distribución de datos del usuario. Puede utilizar el comando de script equilibrador integrado de Hadoop.

Para los desequilibrios causados ​​por la programación de recursos, se deben considerar algoritmos de programación específicos y mecanismos de asignación de trabajos.

(6) ¿Cómo pueden los programadores de C/C comenzar con Hadoop, comprenderlo profundamente e implementarlo y usarlo en un servidor Linux? ¿Existe alguna guía direccional?

Para C? Usuarios de /C, Hadoop proporciona la interfaz de transmisión de hadoop y la interfaz de tuberías. La interfaz de transmisión de hadoop utiliza entrada y salida estándar como middleware para la interacción entre el programa de usuario y el marco de hadoop. Pipes es una interfaz específica para C/C. lenguaje, utilizando socket como intermediario compañero de clase.

En términos de uso, se recomienda comenzar con la transmisión. Las tuberías tienen más problemas que la transmisión y la depuración de las tuberías no es fácil.

(7) ¿Se utiliza actualmente Hadoop versión 1.x o 2.x principalmente en empresas?

En la actualidad, empresas de Internet como Baidu, Tencent y Alibaba utilizan hadoop 1.X como versión de referencia. Por supuesto, cada empresa llevará a cabo un desarrollo secundario personalizado para satisfacer las diferentes necesidades del clúster.

2.X no se ha utilizado oficialmente en Baidu, y 1. >Complementario, Hadoop2.x se usa ampliamente en otras empresas, como JD.com

(8) Si Si desea trabajar en big data en el futuro, ¿hasta qué punto necesita dominar los algoritmos? ¿Los algoritmos representan la parte principal?

En primer lugar, si desea dedicarse a big data... En campos relacionados, hadoop se utiliza como herramienta y primero debe dominar cómo usarlo. No es necesario entrar en detalles a nivel del código fuente de Hadoop.

Luego está la comprensión del algoritmo, que a menudo requiere diseñar una implementación distribuida del algoritmo de minería de datos, pero aún es necesario comprender el algoritmo en sí, como la agrupación k-means comúnmente utilizada.

(9) Ahora Spark y Storm se están volviendo cada vez más populares, y Google también lanzó Cloud Dataflow. En el futuro, Hadoop debería aprender principalmente HDF e Yarn, y lo más importante para los programadores de Hadoop. ¿El futuro es usar estas cosas en embalaje y solo proporcionar interfaces para que los programadores comunes puedan usarlos, como Cloudera y Google?

Este compañero de clase, estás pensando demasiado en Hadoop, Spark y Strom para resolver diferentes problemas. no existe. ¿Cuál es mejor y cuál es peor? Si quieres aprender Hadoop, debes usar el hadoop-1 convencional.

Si está involucrado en la investigación y el desarrollo de Hadoop, lea todas las sugerencias. Si está involucrado en la investigación y el desarrollo de aplicaciones de Hadoop, simplemente lea la corriente principal 1.X. Mi libro "Hadoop Core Technology" se basa en la corriente principal. Versión 1.X Está explicada, si estás interesado puedes echarle un vistazo.

(10) Me gustaría preguntar: ¿el procesamiento de big data requiere la instalación de software relevante en el servidor? ¿Qué impacto tiene en el programa? ¿La agrupación en clústeres y los big data son parte de la operación y el mantenimiento? ¿Trabajo o el trabajo del león de asedio?

Los programas tradicionales solo pueden ejecutarse en una sola máquina, mientras que el procesamiento de big data a menudo se escribe utilizando marcos de programación distribuidos, como hadoop mapreduce, que solo puede ejecutarse en la plataforma de clúster hadoop.

Responsabilidades de operación y mantenimiento: garantizar la estabilidad y confiabilidad de clústeres y máquinas

I+D del propio sistema hadoop: mejorar el rendimiento del clúster Hadoop y agregar nuevas funciones.

Aplicaciones de big data: utilice Hadoop como herramienta para lograr el procesamiento masivo de datos o necesidades relacionadas.

(11) ¿Cómo empezar a aprender hadoop? ¿Qué tipo de proyectos se deberían hacer?

Puede consultar mis respuestas anteriores. Puede comenzar con el programa de estadísticas de frecuencia de palabras más simple y luego aprender a comprender los principios básicos y los mecanismos centrales de HDFS y MapReduce si solo usa Hadoop como herramienta. Bueno, lo más importante es el combate real. Puede intentar usar Hadoop para procesar algunos datos, como análisis de registros, estadísticas de datos, clasificación, índice invertido y otras aplicaciones típicas.

(12)¿Cómo desarrollar, operar y mantener más de 100 nodos hadoop? ¿Cómo asignar recursos de tareas cuando hay muchas tareas? ¿El orden de ejecución de las tareas se controla mediante un script cronometrado o algún otro método?

1. Tamaño del clúster de Hadoop ¿A qué se refiere? ¿Es la construcción y operación del clúster? Hay muchas cosas involucradas en el sistema comercial de Hadoop. Se recomienda consultar el capítulo "Capítulo 10 Construcción del clúster de Hadoop" en la práctica. capítulo de "Tecnología central de Hadoop".

2. La asignación de tareas está determinada por la estrategia de programación del programador de hadoop. La programación predeterminada es FIFO. Los clústeres comerciales generalmente utilizan programadores multiusuario de colas múltiples. Capítulo "Tecnología central de Hadoop" "Capítulo 9 Sistema de programación de trabajos de Hadoop".

3. El orden de ejecución de las tareas lo controla el usuario. Naturalmente, puede iniciarlo de forma regular o manual.

(13) Para desarrollar basado en Hadoop, ¿es necesario utilizar Java? ¿Es imposible utilizar otros lenguajes de desarrollo para integrarse mejor en todo el sistema de desarrollo Hadoop?

El desarrollo basado en Hadoop se puede utilizar en cualquier lenguaje, porque Hadoop mejora el marco de programación de transmisión y la interfaz de programación de canalizaciones. Bajo el marco de transmisión, los usuarios pueden usar cualquier lenguaje informático que pueda operar entradas y salidas estándar para desarrollar aplicaciones Hadoop.

(14) En la fase de reducción, siempre se queda atascado en la fase final durante mucho tiempo. Verifiqué en línea que puede deberse a una distorsión de datos. Me gustaría preguntar si hay alguna solución. ¿A esto?

1, tiene datos sesgados. Una gran cantidad de datos se concentran en una reducción. Los datos asignados en otros reductores son relativamente pequeños. De forma predeterminada, qué datos se asignan a qué reducción está determinado por. el número de reductores y particiones. El valor predeterminado es clave. En términos generales, mapreuce rara vez se usa para operaciones hash a menos que esté usando HIVE.

2 Reducir se divide en tres subetapas: barajar, ordenar y. reducir Si todo el proceso de reducción lleva mucho tiempo, se recomienda leerlo primero. Veamos en qué etapa está atascada la interfaz de monitoreo. Si está atascada en la etapa de reproducción aleatoria, a menudo es un problema de congestión de la red. y la cantidad de datos en una determinada reducción es demasiado grande, que es lo que se llama el problema de sesgo de datos. Este problema a menudo es causado por una determinada clave. La solución es: primero, la partición predeterminada puede. no se adapta a sus necesidades, puede personalizar la partición en segundo lugar, truncar en el lado del mapa e intentar que los datos de cada lado reducido se distribuyan uniformemente.

(15) ¿Pueden los proyectos que no son de big data usar Hadoop?

La cuestión clave de si los proyectos que no son de big data pueden usar Hadoop es si existe almacenamiento, cálculo y análisis de Minería de datos masiva y otras necesidades, si el sistema existente ya satisface bien las necesidades actuales, entonces no es necesario usar Hadoop. No tener que usarlo no significa que Hadoop no se pueda usar. Muchos sistemas tradicionales pueden hacer lo que Hadoop puede hacer. hacer, como usar HDFS en lugar de NFS, usar MapReduce para reemplazar tareas relacionadas con el análisis estadístico de un solo servidor, usar Hbase para reemplazar bases de datos relacionales como Mysql, etc. Cuando la cantidad de datos no es grande, el clúster de Hadoop generalmente. Consume más recursos que el sistema tradicional.

(16)¿Cómo integrar Hadoop Mapreduce con un sistema de programación y gestión de recursos de terceros?

Uno de los principios del diseño del programador de Hadoop es el marco del programador conectable, por lo que es fácil de integrar con programadores de terceros, como el programador justo FairScheduler y el programador de capacidad CapacidadScheduler, y configurar mapred -mapreduce .jobtracker.taskscheduler de -site.xml y los parámetros de configuración del programador en sí. Por ejemplo, los parámetros de control del programador justo deben editarse en fair-scheduler.xml para obtener más información, consulte mi nuevo libro. "Tecnología central de Hadoop" Capítulo práctico 10 En el Capítulo 10.11 del ejemplo de construcción del clúster, 10.10.9 configura el programador de terceros. Al mismo tiempo, puede estudiar más a fondo el sistema de programación de trabajos de Hadoop en el Capítulo 9. En este capítulo, varios. Se presentarán en detalle los programadores de terceros y sus métodos de uso y configuración.