Cómo leer el código fuente de Hadoop de manera eficiente
En primer lugar, hay que decir que en la etapa actual de desarrollo de Hadoop, el código se ha vuelto muy grande e inflado. Si lees directamente la última versión del código fuente, es relativamente difícil y. Requiere suficiente paciencia y tiempo, por lo que si lo toma en serio y lee el código fuente de Hadoop con atención, debe tener suficiente preparación mental y expectativas de tiempo.
En segundo lugar, cabe señalar que la eficiencia de lectura del código fuente de Hadoop varía de persona a persona. Si tiene suficiente conocimiento de los sistemas distribuidos y ha visto sistemas similares, puede leer su código fuente muy rápidamente, leer su código fuente y analizar rápidamente los detalles locales que más le interesan. Por ejemplo, si lo ha hecho anteriormente. Si ha leído el código fuente de una base de datos distribuida, tendrá cierta comprensión del módulo de comunicación de red, el módulo de programación, etc. del sistema distribuido. Esto es útil para leer el código fuente de bases de datos distribuidas, etc. Con cierto conocimiento, es muy útil leer el código fuente de Hadoop; si es un principiante y no sabe nada sobre Hadoop y solo conoce algo de sintaxis de Java, leer el código fuente de Hadoop es un gran desafío, especialmente el proceso de obtención. Los que comienzan cuando no entiendes nada son extremadamente tortuosos y confusos. Esto requiere que complementes constantemente lo que te falta en el proceso de lectura del código. Complementa la falta de conocimientos relevantes (como RPC, NIO, patrones de diseño, etc.). .) y proceda paso a paso hasta comenzar.
A continuación, me gustaría hablar sobre mi experiencia personal leyendo el código fuente. Debido a que también pasé gradualmente de no saber nada a comenzar y luego modificar el código fuente, tiene un significado de referencia para muchas personas.
============
La primera etapa: aprenda el uso básico y los principios básicos de hadoop, y comprenda y comprenda hadoop desde la perspectiva de la aplicación. Aprendizaje
Esta es la primera etapa. Comienza a intentar usar Hadoop. Desde el nivel de la aplicación, tiene una cierta comprensión de Hadoop. Por ejemplo, puede usar Hadoop Shell para operar HDFS y usar la API de HDFS. escribir algún programa para cargar y descargar archivos; utilizar la API MapReduce para escribir un programa de procesamiento de datos. Una vez que esté más familiarizado con el uso básico de hadoop, puede intentar comprender sus principios internos. Tenga en cuenta que no necesita leer el código fuente para comprender los principios internos. Solo necesita leer algunos blogs y libros, como. "Guía definitiva de Hadoop", para HDFS, debe conocer su arquitectura básica y las funciones de cada módulo, para MapReduce, debe conocer su flujo de trabajo específico y los principios de funcionamiento de partición, barajado, clasificación, etc. Puede dibujar un mapreduce completo; proceso en papel. Cuanto más detallado, mejor.
En esta etapa, se recomienda leer algunos blogs conocidos y leer la "Guía definitiva de Hadoop" (puede leer selectivamente los capítulos relevantes). Si tiene un proyecto real que manejar, es genial. Combinar la teoría con la práctica es la mejor manera de aprender Hadoop; si no tiene un proyecto que manejar, se recomienda que no estudie solo y se comunique más con los demás. Y toma la iniciativa de enseñar a otros. La mejor manera de aprender es "contárselo a los demás".
============
La segunda etapa: comenzar desde cero y comenzar a leer el código fuente de hadoop
Esta etapa Es el más difícil, y también el más largo, especialmente para alguien sin ninguna experiencia distribuida. Muchas personas se dan por vencidas antes de completar esta etapa y terminan atrapadas en el nivel de la aplicación hadoop.
En esta etapa, lo primero que debe hacer es seleccionar un componente de hadoop. Si está interesado en el almacenamiento distribuido, puede elegir HDFS; si está interesado en la informática distribuida de lectura, puede elegir MapReduce; si está interesado en los sistemas de gestión de recursos, puede elegir YARN.
Después de elegir un sistema, la siguiente experiencia es la más difícil. Cuando importas el código fuente de hadoop a eclipse o intellij idea, te preparas una taza de té y comienzas a ver tranquilamente el código fuente de hadoop, te sentirás confundido: expandes innumerables paquetes y clases, y sientes que no tienes idea de dónde comenzar No es fácil encontrar el punto de entrada. Haga clic, revise la función de referencia de búsqueda de eclipse una y otra vez, y luego revise la función de referencia de búsqueda de eclipse, busque capa por capa de acuerdo con la relación de llamada de la clase. Y finalmente perderme en el océano de código, como si fuera interminable. Al igual que presionar la pila sin cesar, la pila finalmente se desbordó y olvidé dónde estaba. Muchas personas han pasado por el proceso anterior, pero al final se dieron por vencidos en lugar de escapar con éxito.
Si estás pasando por este proceso, mi experiencia es la siguiente: Primero que nada, necesitas entender los módulos del código hadoop y conocer los módulos correspondientes al cliente, maestro y esclavo (el núcleo El sistema de hadoop es una arquitectura maestro-esclavo, muy similar), y en el proceso de lectura del código fuente, siempre tenga en cuenta a qué módulo pertenece el código que está leyendo actualmente y en qué componente se ejecutará después; Luego, debe comprender el protocolo de interacción de cada componente, y también es RPC distribuido, que se implementa mediante el propio hadoop. Debe comprender el uso de hadoop RPC y luego observar el protocolo RPC entre módulos. , ya dominas el esqueleto del sistema. Este es el siguiente paso. Los conceptos básicos de lectura del código fuente; luego, debes elegir un módulo para comenzar a leer. Normalmente, este módulo es relativamente simple y te brindará más. Para no perderse en el proceso de lectura del código, se recomienda llamar a la clase Las relaciones se dibujan en papel y se dibujan mientras leo. Recuerdo que cuando leí el código fuente de Hadoop, gasté una pila de papel. . Cabe señalar que es fácil irritarse al leer el código fuente. Se recomienda ponerse de pie y moverse con frecuencia y no esforzarse demasiado.
En esta etapa, se recomienda leer más blogs y libros sobre análisis de código fuente. Por ejemplo, la serie "Hadoop Technology Insider" (sitio web relacionado con publicidad: Hadoop Technology Insider) es el mejor material de referencia. . Con la ayuda de estos blogs y libros, puede aprender el código fuente de Hadoop más rápido y ahorrar mucho tiempo con la ayuda de sus predecesores. Es importante tener en cuenta que existen muchos blogs y libros, por lo que se recomienda que recopile información ampliamente para encontrar el material de referencia más adecuado para usted.
El objetivo final de esta etapa es tener una cierta comprensión de la arquitectura general y muchos detalles locales del código fuente de Hadoop. Por ejemplo, sabe cómo se implementa el programador MapReduce, el proceso de mezcla de MapReduce, qué hace el lado del mapa, qué hace el lado reducido, cómo se implementa, etc. Después de completar esta etapa de aprendizaje, cuando encuentre problemas o confusión, puede localizar rápidamente clases relevantes y funciones específicas en el código fuente de Hadoop y resolver el problema leyendo el código fuente. Esto convierte el código fuente de Hadoop en Su solución de problemas. libro de referencia.
============
La tercera etapa: Modificar el código fuente según las necesidades.
Esta etapa es cuando se verifica el efecto de lectura del código fuente. Es necesario modificar el código de acuerdo con los requisitos dados por LEADER para completar el desarrollo del módulo funcional. En el proceso de modificación del código fuente, encontrará que su lectura anterior del código fuente todavía es demasiado aproximada. En este momento, leerá más el código relevante y compensará las partes débiles en la segunda etapa. Por supuesto, muchas personas no necesitan pasar por la tercera etapa, solo la segunda etapa es suficiente: primero, pueden resolver su confusión técnica a largo plazo y satisfacer su curiosidad leyendo el código, y segundo, pueden resolver fundamentalmente sus problemas. problemas varios. En esta etapa, no hay demasiados libros de referencia o blogs, pero sí más comunicación con los colegas que lo rodean y demostrar su corrección mediante la revisión y prueba del código.
============
El propósito de leer el código fuente de Hadoop no es necesariamente la necesidad de trabajar. Puede considerarse como una especie de cultivo. Lea el código fuente de Hadoop para profundizar su comprensión de los sistemas distribuidos y cultivar una mentalidad con los pies en la tierra.