Una Guía Completa para Construir y Depurar Apache Doris

Apache Doris, una base de datos analítica en tiempo real de alto rendimiento, presume de una impresionante arquitectura subyacente y diseño de código. Para los desarrolladores, dominar la compilación de código fuente y la depuración es clave para entender el núcleo de Doris. Sin embargo, el proceso de compilación implica múltiples cadenas de herramientas y configuraciones de dependencias, y durante la depuración, es posible que encuentres diversos problemas complejos que pueden hacer que los principiantes se sientan abrumados.

Este artículo te guiará a través del proceso desde el código fuente hasta el tiempo de ejecución, proporcionando un análisis detallado de los procedimientos de compilación y depuración de Apache Doris. Desde la configuración del entorno y la verificación del código hasta la solución de problemas comunes, combinamos ejemplos prácticos para ayudarte a comenzar rápidamente con el desarrollo y la depuración de Doris. 

Visión general

¿Alguna vez te has preguntado cómo se analiza y se ejecuta una consulta SQL de principio a fin? En Apache Doris, este proceso implica múltiples componentes principales y complejos mecanismos internos. Este artículo te guiará a través del viaje desde el código fuente hasta el tiempo de ejecución, ofreciendo un análisis exhaustivo del proceso de compilación y depuración de Doris, y ayudándote a obtener una comprensión profunda de los principios de ejecución de SQL.

1. Entorno

Entorno Básico

  1. Configuración de la computadora. MacBook Pro (Chip: Apple M1, macOS: 15.1)
  2. JDK. Versión 17
  3. Rama de Doris. Utiliza la rama Doris Master (específicamente, la rama-2.1)

Instalación de Dependencias del Entorno

Cuando se utiliza Homebrew, la versión de JDK instalada es la 17 porque en macOS la versión arm64 de Homebrew no incluye JDK 8 de forma predeterminada. Actualmente, Doris solo admite JDK8 y JDK17.

PowerShell

 

Explicación de Dependencias

1. Java, Maven, etc. Estos se pueden descargar por separado para una gestión más sencilla.

  • En macOS, se recomienda Zulu JDK17.
  • Maven se puede descargar desde el sitio web oficial de Maven.
  • Java y Maven descargados manualmente deben configurarse en las variables de entorno.

2. Variables de entorno de otras dependencias (ejemplo para Mac con Apple Silicon):

PowerShell

 

Agrega las configuraciones anteriores a tu archivo ~/.bashrc o ~/.zshrc y ejecuta source ~/.bashrc o source ~/.zshrc para aplicar los cambios.

Instalación de Thrift

Nota: Thrift solo necesita ser instalado cuando estás depurando solo el FE (Frontend). Cuando depuras tanto el BE (Backend) como el FE, las bibliotecas de terceros del BE ya incluyen Thrift.

Plain Text

 

Obteniendo tu Código

Clona tu código ejecutando los siguientes comandos:

PowerShell

 

Configuración de Variables de Entorno

PowerShell

 

Descarga de Dependencias de Compilación de Doris

1. Visita la página de Apache Doris Third Party Prebuilt (enlace) para encontrar el código fuente de todas las bibliotecas de terceros. Puedes descargar directamente doris-thirdparty-source.tgz.

2. Alternativamente, puedes descargar las bibliotecas de terceros precompiladas desde la misma página, lo que te ahorra tener que compilar estas bibliotecas tú mismo. Consulta los comandos a continuación.

PowerShell

 

Cuando ejecutes protoc y thrift, es posible que encuentres problemas al abrirlos debido a problemas de verificación de desarrollador. En ese caso, ve a Seguridad y Privacidad y haz clic en el botón Abrir de todos modos en la pestaña General para confirmar que deseas abrir el binario. Para más detalles, consulta el Soporte de Apple.

Aumenta el Límite Máximo de Descriptores de Archivos del Sistema

Después de modificarlo, ejecuta source en el archivo correspondiente para aplicar los cambios.

PowerShell

 

2. Compilación de Doris

Ve a tu directorio principal de Doris y ejecuta el script de compilación:

PowerShell

 

Si deseas acelerar el proceso de compilación y no necesitas la página frontend de FE, puedes comentar la sección de compilación de la interfaz de usuario FE en el script build.sh:

Shell

 

Después de una compilación exitosa, deberías ver una salida similar a la siguiente:

3. Depuración

Configuración del entorno de depuración

Esta guía cubre la depuración solo de Doris FE.

Plain Text

 

Comience la depuración usando IntelliJ IDEA. 

Importante: No abra el directorio raíz del proyecto Doris; en su lugar, abra el directorio FE para evitar conflictos con CLion.

Generación de Código FE

Abra la terminal de IDEA, navegue hasta el directorio raíz del código y ejecute:

PowerShell

 

Espere hasta ver el mensaje “Hecho”.

Configuración de la Depuración para FE

1. Editar configuraciones.

2. Agregar una configuración DorisFE. Haga clic en el icono + en la parte superior izquierda para agregar una configuración de Aplicación. Consulte la imagen a continuación para ver la configuración específica.

3. Directorio de trabajo. Establézcalo en el directorio fe dentro del código fuente.

4. Variables de entorno. Configure las variables de entorno de manera similar a las exportadas en fe/bin/start_fe.sh en el directorio raíz de Doris. La variable DORIS_HOME debe apuntar al directorio que copió anteriormente durante la configuración.

Plain Text

 


Iniciando FE

Haga clic en Ejecutar o Depurar. Esto desencadenará el proceso de compilación para FE; una vez completado, FE se iniciará. En esta guía, elegimos Depurar.


Iniciando BE

Dado que ya ha copiado el paquete compilado al directorio doris-run, inicie el BE desde ese directorio:

PowerShell

 

Depuración FE

1. Conéctese al FE. Utilice un cliente MySQL o DBeaver para conectarse al FE lanzado por IDEA.

MySQL

 

2. Agregue el nodo BE al clúster.

MySQL

 

3. Establezca puntos de interrupción en el código. Localice el código ConnectProcessor en el proyecto:


Establezca un punto de interrupción en el método handleQuery. Cuando ejecute una consulta, el depurador alcanzará el punto de interrupción, y podrá comenzar un viaje de depuración agradable. Por ejemplo, si está trabajando en la tarea de migración de sintaxis de Doris mencionada en sesiones anteriores, puede utilizar la depuración para refinar iterativamente su código.

FAQs

Pregunta 1

Durante la compilación, es posible que se encuentre con un error de conflicto de bloqueo:

Plain Text

 

Respuesta

Elimine cualquier archivo .lock en su repositorio local de Maven ejecutando:

Plain Text

 

Pregunta 2

Durante la compilación, puede ocurrir un error causado por una versión más nueva de Node.js:

Plain Text

 

Respuesta

Establezca Node.js para usar el proveedor de OpenSSL heredado ejecutando:

Plain Text

 

Referencia: Discusión en StackOverflow

Pregunta 3

IntelliJ IDEA no logra iniciar el FE con el error:

Plain Text

 

Respuesta

Es posible que el compilador de Maven no tenga suficiente memoria. Aumente la asignación de memoria como se muestra a continuación:

Pregunta 5

IntelliJ IDEA no logra iniciar FE con el error:

Plain Text

 

Respuesta

Resuelve este problema ejecutando los siguientes comandos en el directorio raíz de Doris:

Plain Text

 

Pregunta 5

En algunas versiones, la compilación puede fallar con el error:

Plain Text

 

Respuesta

Modifica el código de acuerdo a este PR o ejecuta los siguientes comandos:

Plain Text

 

Pregunta 6

En algunas versiones durante la depuración, la FE en el puerto 9030 no logra iniciarse, y fe.log reporta:

Plain Text

 

Respuesta

Navega al directorio doris/docs, ejecuta los siguientes comandos y luego reinicia FE:

Plain Text

 

¡Siguiendo esta guía, deberías poder configurar tu entorno, compilar y depurar Apache Doris con mayor facilidad. ¡Feliz depuración!

Source:
https://dzone.com/articles/guide-to-building-and-debugging-apache-doris