Red de conocimiento informático - Aprendizaje de programación - Logstash sincroniza Hive y Clickhouse

Logstash sincroniza Hive y Clickhouse

En el trabajo, nos encontramos con una necesidad empresarial de sincronizar los datos de Hive con Clickhouse. Inicialmente, escribimos tareas de Spark para leer desde Hive a través de SparkSQL y escribir en Clickhouse a través de JDBC.

Más tarde, a medida que era necesario sincronizar más y más tablas, el costo de escribir tareas de Spark cada vez se volvió un poco alto. Por lo tanto, escribimos una tarea Spark genérica, especificando los campos de la tabla Hive y los campos de la tabla Clickhouse, usando parámetros diferentes cada vez.

Más tarde, el negocio se volvió cada vez más complejo, no solo para una simple sincronización, sino para admitir SQL más complejo, resultados de conversión de tipos de datos, conversión de valores, etc., y luego insertarlos en Clickhouse.

Por supuesto, esto se puede lograr continuando mejorando el Spark anterior. Pero cuando se trata de ETL, sin un Logstash profesional y potente, ¿por qué repetir la rueda?

Después de investigar un poco, alguien escribió un complemento de Logstash para exportar datos a Clickhouse: logstash-output-clickhouse

El extremo de salida se ha completado, cómo obtener el extremo de entrada ?Paño de lana? Esto es muy fácil de construir, simplemente use el complemento JDBC.

Como se mencionó anteriormente, simplemente configure la información de conexión JDBC.

Cabe señalar que hay muchos paquetes jar relacionados y es necesario proporcionarlos todos; de lo contrario, se producirán varias ClassNotFoundExceptions. Lista completa de archivos jar:

Es mejor que estos archivos jar sean consistentes con las versiones en el entorno de colmena. Usamos la versión CDH, por lo que todos son archivos jar que se encuentran en el directorio CDH.

Descripción del complemento Clickhouse: /mikechris/logstash-output-clickhouse

Principalmente sobre el proceso de instalación.

El método bin/logstash-plugin install logstash-output-clickhouse descrito en la documentación no funciona, por lo que tenemos que compilarlo e instalarlo nosotros mismos.

Primero clone el código fuente y luego ingrese la ruta raíz del código fuente:

Compile:

En este punto, si no ha instalado el entorno Ruby , siga las instrucciones para instalarlo y luego compílelo.

Después de una compilación exitosa, habrá un archivo más

Instalación:

No entraré en detalles sobre la instalación de logstash. Simplemente instálelo de acuerdo. a la documentación oficial de logstash.

En este momento, si la versión de logstash es 5.x, puede encontrar un error:

Siga las indicaciones para modificar el archivo gem:

Modifique el logstash-mixin-http_client Versión:

Originalmente >6 y <7, cambiado a >5 y <6.

Luego, compila e instala nuevamente y listo.

Configure la información de conexión de Clickhouse de acuerdo con las instrucciones del documento:

Esta parte del trabajo se puede manejar en el filtro. No entraré en detalles sobre los distintos tapones de filtro. -ins. Consulte la documentación oficial de logstash.