Saltar a contenido

ClickHouse

En este artículo

Información

ClickHouse es un sistema de gestión de bases de datos (SGBD) columnar de alto rendimiento diseñado para ejecutar consultas analíticas de clase OLAP. El SGBD está enfocado en analizar grandes volúmenes de datos con baja latencia y se utiliza ampliamente en tareas de analítica, monitoreo, registros (logging) y procesamiento de telemetría.

ClickHouse. Características principales

  • Almacenamiento columnar: los datos se almacenan por columnas en lugar de filas, lo que acelera significativamente la ejecución de consultas analíticas y reduce el volumen de datos procesados.
  • Alto rendimiento: optimizado para manejar conjuntos de datos masivos y capaz de ejecutar consultas sobre miles de millones de filas gracias al procesamiento vectorizado y la utilización eficiente de la CPU.
  • Compresión de datos: emplea algoritmos de compresión especializados que pueden reducir drásticamente la cantidad de datos almacenados (a menudo varias veces menor que los SGBD basados en filas), especialmente bajo cargas de trabajo analíticas.
  • Compatibilidad con SQL: admite sintaxis SQL extendida con funciones analíticas adicionales, simplificando la migración de aplicaciones existentes.
  • Procesamiento distribuido: permite la creación de clústeres para escalado horizontal y procesamiento de datos en múltiples servidores.
  • Replicación de datos: el soporte de replicación integrado garantiza tolerancia a fallos y alta disponibilidad de datos.
  • Soporte para múltiples formatos de datos: puede importar y exportar datos en CSV, JSON, Parquet, Avro y otros formatos.
  • Vistas materializadas: agrega automáticamente datos en segundo plano para acelerar consultas recurrentes.
  • Integración con fuentes externas: admite la lectura directa de datos desde MySQL, PostgreSQL, MongoDB, Kafka, S3 y otros sistemas.

Funcionalidades de implementación

ID Nombre del software SO compatible VM BM VGPU GPU CPU mín. (núcleos) RAM mín. (GB) HDD/SSD mín. (GB) Dominio personalizado Activo
492 ClickHouse Ubuntu 24.04, Ubuntu 22.04 + + + + 4 8 120 No ORDER
  • Software instalado:

    • ClickHouse Server >= 26.1.1
    • ClickHouse Client >= 26.1.1
  • Especificaciones de instalación:

    • Software instalado mediante el script oficial del desarrollador;
    • Tiempo de instalación: 5-10 minutos;
    • La base de datos está disponible para conexiones de red a través de varios clientes SQL;
    • De forma predeterminada, se utiliza el usuario default con la contraseña de la cuenta root.

Ubicaciones de archivos de configuración y datos:

  • Configuración principal del servidor: /etc/clickhouse-server/config.xml
  • Configuración de usuarios: /etc/clickhouse-server/users.xml
  • Registros del servidor:
    • /var/log/clickhouse-server/clickhouse-server.log
    • /var/log/clickhouse-server/clickhouse-server.err.log
  • Datos: /var/lib/clickhouse/
  • Archivo PID: /run/clickhouse-server/clickhouse-server.pid
  • Límites del sistema: /etc/security/limits.d/clickhouse.conf

Puertos disponibles para conexiones:

Puerto Protocolo Propósito Estado Clientes/Uso
8123 HTTP Interfaz HTTP Activo DBeaver, DataGrip, Tableau, interfaz web, JDBC/ODBC
9000 TCP Nativo Protocolo nativo de ClickHouse Activo clickhouse-client, controladores Python/Go
9004 MySQL Emulación del protocolo MySQL Activo MySQL Workbench, cliente mysql
9005 PostgreSQL Emulación del protocolo PostgreSQL Activo pgAdmin, cliente psql
9009 HTTP entre servidores Replicación entre servidores Activo Comunicación intraclúster
8443 HTTPS Interfaz HTTP con SSL Opcional Requiere configuración de certificado SSL
9100 gRPC Interfaz gRPC Opcional Clientes gRPC

Nota

Los puertos 8443 y 9100 están deshabilitados de forma predeterminada y requieren configuración adicional en /etc/clickhouse-server/config.xml.

Nota

A menos que se especifique lo contrario, instalamos la última versión de lanzamiento del software desde el sitio web oficial del desarrollador.

Primeros pasos después de implementar ClickHouse

Se enviará una notificación al correo electrónico especificado durante el registro indicando que el servidor está listo para trabajar después de pagar el pedido. Contendrá la dirección IP del VPS, así como el nombre de usuario y la contraseña para la conexión. Los clientes de nuestra empresa gestionan el hardware en el panel de control del servidor y la API - Invapi.

Detalles de autorización:

  • Dirección IP del servidor: proporcionada en el correo electrónico y en el panel de control;
  • Nombre de usuario: default;
  • Contraseña: coincide con la contraseña de la cuenta root y se envía a la dirección de correo electrónico.

Importante

Para clientes de interfaz gráfica (DBeaver, DataGrip y otros) utilice el puerto 8123 (interfaz HTTP). El puerto 9000 está reservado únicamente para el clickhouse-client nativo.

Conexión a ClickHouse

Métodos de conexión

Esta sección describe las formas más comunes de conectarse a ClickHouse mediante clickhouse-client (cliente de línea de comandos) y DBeaver (interfaz gráfica). ClickHouse también admite conexiones a través de otros clientes: DataGrip, Tableau, MySQL Workbench (a través del puerto 9004), pgAdmin (a través del puerto 9005), así como bibliotecas de programación para Python, Go, Java y otros lenguajes.

Conexión mediante clickhouse-client

ClickHouse incluye un cliente de línea de comandos nativo para operaciones de base de datos.

1. Conexión desde el servidor (localmente):

clickhouse-client

2. Conexión desde una máquina remota:

clickhouse-client --host <IP-address> --port 9000 --user default --password <password>

3. Ejecución de una consulta simple:

SELECT version();

4. Visualización de la lista de bases de datos:

SHOW DATABASES;

Conexión mediante DBeaver

DBeaver es un cliente de interfaz gráfica universal para trabajar con varias bases de datos, incluido ClickHouse.

1. Instalación de DBeaver

Descargue e instale DBeaver desde el sitio web oficial.

2. Creación de una nueva conexión

  • Inicie DBeaver
  • Seleccione Database >> New Database Connection (o presione Ctrl+Shift+N)

  • En la lista de bases de datos, busque y seleccione ClickHouse

  • Haga clic en Next

3. Configuración de los parámetros de conexión

En la ventana de configuración, especifique los siguientes parámetros:

Host: <dirección IP de su servidor>
Port: 8123
Database/Schema: (dejar vacío o especificar default)
Username: default
Password: <root_password>

Críticamente importante

Para conexiones de DBeaver, utilice el puerto 8123.

4. Descarga del controlador JDBC

Al conectarse por primera vez, DBeaver le pedirá que descargue el controlador JDBC para ClickHouse:

  • Haga clic en Download en la ventana emergente:

  • Espere a que finalice la descarga del controlador:

  • Haga clic en OK

5. Prueba de la conexión

  • Haga clic en Test Connection;
  • Si todo está configurado correctamente, aparecerá un mensaje: Connected (XXX ms):

  • El mensaje incluirá:
  • Servidor: ClickHouse X.X.X.XXX
  • Controlador: ClickHouse JDBC Driver X.X.X

6. Finalización de la configuración

  • Haga clic en Finish;
  • La conexión aparecerá en Database Navigator;
  • Expanda el árbol de conexión para ver bases de datos, tablas y otros objetos.

Problemas comunes:

Error Causa Solución
transport error: 400 Se usó el puerto 9000 en lugar de 8123 Cambiar al puerto 8123
Connection refused IP incorrecta o el firewall bloquea el puerto Verifique la dirección IP y las reglas del firewall
Authentication failed Nombre de usuario o contraseña incorrectos Verifique las credenciales
Hostname is not specified Túnel SSH habilitado accidentalmente sin configuración Cierre la pestaña SSH en la configuración de conexión

Operaciones principales en ClickHouse

Creación de una base de datos

CREATE DATABASE IF NOT EXISTS my_database;

Creación de una tabla

CREATE TABLE my_database.events
(
    event_date Date,
    event_time DateTime,
    user_id UInt32,
    event_type String,
    value Float64
)
ENGINE = MergeTree()
PARTITION BY toYYYYMM(event_date)
ORDER BY (event_date, user_id);

Inserción de datos

INSERT INTO my_database.events VALUES
    ('2024-12-25', '2024-12-25 10:00:00', 1, 'click', 1.5),
    ('2024-12-25', '2024-12-25 10:05:00', 2, 'view', 2.3),
    ('2024-12-25', '2024-12-25 10:10:00', 1, 'purchase', 99.99);

Selección de datos

Consulta simple:

SELECT * FROM my_database.events LIMIT 10;

Agregación de datos:

SELECT 
    event_type,
    count() as events_count,
    avg(value) as avg_value
FROM my_database.events
WHERE event_date = '2024-12-25'
GROUP BY event_type;

Series temporales:

SELECT 
    toStartOfHour(event_time) as hour,
    count() as events_per_hour
FROM my_database.events
WHERE event_date >= '2024-12-01'
GROUP BY hour
ORDER BY hour;

Importación de datos desde CSV

Creación de una tabla:

CREATE TABLE my_database.logs
(
    timestamp DateTime,
    level String,
    message String
)
ENGINE = MergeTree()
ORDER BY timestamp;

Importación de datos:

INSERT INTO my_database.logs
FROM INFILE '/path/to/file.csv'
FORMAT CSV;

Gestión de usuarios y privilegios

Creación de un usuario:

CREATE USER analyst IDENTIFIED BY 'secure_password';

Concesión de permisos:

GRANT SELECT ON my_database.* TO analyst;

Visualización de usuarios:

SHOW USERS;

Visualización de privilegios:

SHOW GRANTS FOR analyst;

Gestión del servicio

Inicio del servicio:

clickhouse start

Detención del servicio:

clickhouse stop

Reinicio del servicio:

clickhouse restart

Estado del servicio:

clickhouse status

Visualización de registros:

tail -f /var/log/clickhouse-server/clickhouse-server.log

Nota

Si no está operando como root, anteponga sudo a los comandos: sudo clickhouse start

Verificación de puertos activos

Para ver en qué puertos está escuchando ClickHouse:

ss -tlnp | grep clickhouse

O más detallado:

ss -tlnp | grep $(pidof clickhouse-server)

Para verificar los puertos configurados en la configuración:

cat /etc/clickhouse-server/config.xml | grep -E "port>" | head -20

Para verificar un puerto específico:

ss -tlnp | grep :8123

Salida esperada de la verificación de puertos:

LISTEN  *:8123  clickhouse-serv  (HTTP)
LISTEN  *:9000  clickhouse-serv  (Native TCP)
LISTEN  *:9004  clickhouse-serv  (MySQL)
LISTEN  *:9005  clickhouse-serv  (PostgreSQL)
LISTEN  *:9009  clickhouse-serv  (Interserver)

Nota

Información detallada sobre la configuración y optimización de ClickHouse está disponible en la documentación oficial del desarrollador.

Pedido de un servidor con ClickHouse

Para instalar este software utilizando la API, siga estas instrucciones.


Parte del contenido de esta página fue creado o traducido utilizando IA.

question_mark
Is there anything I can help you with?
question_mark
AI Assistant ×