Esta guía explica cómo puede usar ClickHouse y S3 para implementar una arquitectura con almacenamiento y cómputo separados.
La separación de almacenamiento y cómputo significa que los recursos de cómputo y de almacenamiento se gestionan de forma independiente. En ClickHouse, esto permite una mayor escalabilidad, una mejor eficiencia de costos y más flexibilidad. Puede escalar por separado los recursos de almacenamiento y de cómputo según sea necesario, optimizando así el rendimiento y los costos.
Usar ClickHouse con S3 como almacenamiento subyacente es especialmente útil en casos de uso donde el rendimiento de las consultas sobre datos “fríos” es menos crítico. ClickHouse permite usar S3 como almacenamiento para el engine MergeTree mediante S3BackedMergeTree. Este motor de tabla le permite aprovechar la escalabilidad y las ventajas de costo de S3, al tiempo que mantiene el rendimiento de inserción y consulta del engine MergeTree.
Tenga en cuenta que implementar y gestionar una arquitectura con separación de almacenamiento y cómputo es más complejo que los despliegues estándar de ClickHouse. Aunque ClickHouse autogestionado permite separar almacenamiento y cómputo, como se explica en esta guía, recomendamos usar ClickHouse Cloud, que le permite utilizar ClickHouse con esta arquitectura sin necesidad de configuración mediante el motor de tabla SharedMergeTree.
Esta guía asume que está usando ClickHouse versión 22.8 o superior.
No configure ninguna política de ciclo de vida de AWS/GCS. No se admite y podría provocar tablas corruptas.
1. Usar S3 como disco de ClickHouse
Cree un nuevo archivo en el directorio config.d de ClickHouse para guardar la configuración de almacenamiento:
Copia el siguiente XML en el archivo recién creado y reemplaza BUCKET, ACCESS_KEY_ID y SECRET_ACCESS_KEY por los datos del bucket de AWS donde quieras almacenar tus datos:
Si necesita especificar aún más la configuración del disco S3, por ejemplo, para indicar una región o enviar una cabecera HTTP personalizada, puede consultar la lista de opciones de configuración pertinentes aquí.
También puede reemplazar access_key_id y secret_access_key por lo siguiente, que intentará obtener credenciales de las variables de entorno y de los metadatos de Amazon EC2:
Después de crear el archivo de configuración, debes cambiar el propietario del archivo al usuario y grupo clickhouse:
Ahora puede reiniciar el servidor de ClickHouse para que los cambios surtan efecto:
2. Crear una tabla basada en S3
Para comprobar que hemos configurado correctamente el disco S3, podemos intentar crear y consultar una tabla.
Cree una tabla especificando la nueva política de almacenamiento de S3:
Ten en cuenta que no fue necesario especificar el motor como S3BackedMergeTree. ClickHouse convierte automáticamente el tipo de motor internamente si detecta que la tabla usa S3 como almacenamiento.
Comprueba que la tabla se creó con la política correcta:
Deberías ver el siguiente resultado:
Ahora, vamos a insertar algunas filas en nuestra nueva tabla:
Comprobemos que se hayan insertado nuestras filas:
En la consola de AWS, si tus datos se insertaron correctamente en S3, deberías ver que ClickHouse ha creado archivos nuevos en el bucket que especificaste.
Si todo funcionó correctamente, ¡ahora estás usando ClickHouse con separación entre almacenamiento y cómputo!
3. Implementación de la replicación para lograr tolerancia a fallos (opcional)
No configures ninguna política de ciclo de vida de AWS/GCS. No es compatible y podría provocar tablas corruptas.
Para la tolerancia a fallos, puedes usar varios nodos del servidor ClickHouse distribuidos en varias regiones de AWS, con un bucket de S3 para cada nodo.
La replicación con discos S3 puede implementarse con el motor de tabla ReplicatedMergeTree. Consulta la siguiente guía para obtener más información: