Cómo instalar la base de datos OLAP de ClickHouse en Debian

ClickHouse es un sistema de gestión de bases de datos orientado a columnas de código abierto desarrollado por Yandex. Es multiplataforma y puede instalarse en cualquier sistema operativo Linux, FreeBSD o Mac OS X. ClickHouse ofrece límites flexibles sobre la complejidad de las consultas y el uso de recursos, que pueden ajustarse con la configuración. ClickHouse ofrece un amplio conjunto de funciones, como compresión de datos, compatibilidad con IPv6, alta disponibilidad, ingesta de datos en tiempo real, ejecución de consultas paralela y distribuida, localidad de referencia en disco, almacenamiento orientado a columnas real y muchas más.

Este tutorial explicará cómo instalar ClickHouse en un servidor Debian 10. También explicaremos cómo crear bases de datos y tablas con el cliente ClickHouse y configurar el servidor ClickHouse para permitir la conexión desde el host remoto.

Requisitos

  • Un servidor que ejecute Debian 10.
  • Una contraseña de root configurada en tu servidor.

Cómo empezar

Antes de empezar, tendrás que actualizar tu sistema con la última versión. Puedes hacerlo ejecutando el siguiente comando:

apt-get update -y
apt-get upgrade -y

Una vez actualizado tu servidor, reinícialo para aplicar los cambios.

Instalar ClickHouse

Por defecto, ClickHouse no está disponible en el repositorio por defecto de Debian 10. Por tanto, tendrás que añadir el repositorio de ClickHouse a la APT.

En primer lugar, descarga e importa la clave GPG con el siguiente comando:

apt-key adv --keyserver keyserver.ubuntu.com --recv E0C56BD4

Deberías ver la siguiente salida:

Executing: /tmp/apt-key-gpghome.CJf2zS1pCH/gpg.1.sh --keyserver keyserver.ubuntu.com --recv E0C56BD4
gpg: key C8F1E19FE0C56BD4: public key "ClickHouse Repository Key <[email protected]>" imported
gpg: Total number processed: 1
gpg:               imported: 1

A continuación, añade el repositorio ClickHouse a APT con el siguiente comando:

echo "deb http://repo.yandex.ru/clickhouse/deb/stable/ main/" | tee /etc/apt/sources.list.d/clickhouse.list

A continuación, actualiza el repositorio e instala el servidor ClickHouse y el paquete cliente con el siguiente comando:

apt-get update -y
apt-get install dirmngr clickhouse-server clickhouse-client -y

Durante la instalación, se te pedirá que proporciones la contraseña de ClickHouse como se muestra a continuación:

Introduce tu contraseña y pulsa Intro para continuar con la instalación. Una vez finalizada la instalación, inicia el servidor ClickHouse y habilítalo para que se inicie tras reiniciar el sistema con el siguiente comando:

systemctl start clickhouse-server
systemctl enable clickhouse-server

Puedes verificar el estado del servicio ClickHouse con el siguiente comando:

systemctl status clickhouse-server

Deberías ver la siguiente salida:

systemctl status clickhouse-server
? clickhouse-server.service - ClickHouse Server (analytic DBMS for big data)
   Loaded: loaded (/etc/systemd/system/clickhouse-server.service; enabled; vendor preset: enabled)
   Active: activating (auto-restart) (Result: exit-code) since Sat 2019-09-07 07:48:00 EDT; 8s ago
  Process: 642 ExecStart=/usr/bin/clickhouse-server --config=/etc/clickhouse-server/config.xml --pid-file=/run/clickhouse-server/clickhouse-ser
 Main PID: 642 (code=exited, status=1/FAILURE)

En la salida anterior, deberías ver que no se puede iniciar el servidor ClickHouse. Para resolver este error, abre el archivo /etc/ssl/openssl.cnf con el siguiente comando:

nano /etc/ssl/openssl.cnf

Comenta la siguiente línea:

#ssl_conf = ssl_sect

Guarda y cierra el archivo cuando hayas terminado. A continuación, inicia de nuevo el servidor Clickhouse con el siguiente comando:

systemctl start clickhouse-server

Una vez que el servidor ClickHouse se haya iniciado correctamente, deberías obtener la siguiente salida:

? clickhouse-server.service - ClickHouse Server (analytic DBMS for big data)
   Loaded: loaded (/etc/systemd/system/clickhouse-server.service; enabled; vendor preset: enabled)
   Active: active (running) since Fri 2019-09-06 05:28:51 EDT; 1min 24s ago
 Main PID: 1822 (clickhouse-serv)
    Tasks: 38 (limit: 1138)
   Memory: 42.6M
   CGroup: /system.slice/clickhouse-server.service
           ??1822 /usr/bin/clickhouse-server --config=/etc/clickhouse-server/config.xml --pid-file=/run/clickhouse-server/clickhouse-server.pid

Sep 06 05:28:51 debian systemd[1]: Started ClickHouse Server (analytic DBMS for big data).
Sep 06 05:28:51 debian clickhouse-server[1822]: Include not found: clickhouse_remote_servers
Sep 06 05:28:51 debian clickhouse-server[1822]: Include not found: clickhouse_compression
Sep 06 05:28:51 debian clickhouse-server[1822]: Logging trace to /var/log/clickhouse-server/clickhouse-server.log
Sep 06 05:28:51 debian clickhouse-server[1822]: Logging errors to /var/log/clickhouse-server/clickhouse-server.err.log
Sep 06 05:28:51 debian clickhouse-server[1822]: Include not found: networks
Sep 06 05:28:53 debian clickhouse-server[1822]: Include not found: clickhouse_remote_servers
Sep 06 05:28:53 debian clickhouse-server[1822]: Include not found: clickhouse_compression

Cuando hayas terminado, puedes pasar al siguiente paso.

Crear una base de datos y una tabla con ClickHouse

Puedes crear y eliminar bases de datos y tablas ejecutando comandos SQL directamente en el prompt del cliente ClickHouse.

En primer lugar, conecta el servidor ClickHouse especificando la contraseña que has creado durante la instalación de ClickHouse con el siguiente comando:

clickhouse-client --password admin@123

Deberías ver la siguiente salida:

ClickHouse client version 19.13.3.26 (official build).
Connecting to localhost:9000 as user default.
Connected to ClickHouse server version 19.13.3 revision 54425.

debian :) 

Ahora, crea una base de datos de ejemplo llamada clickdb con el siguiente comando:

debian :) CREATE DATABASE clickdb;

Deberías ver el siguiente resultado:

CREATE DATABASE clickdb

Ok.

0 rows in set. Elapsed: 0.014 sec. 

A continuación, cambia la base de datos a clickdb con el siguiente comando:

debian :) USE clickdb;

Deberías ver el siguiente resultado

USE clickdb

Ok.

0 rows in set. Elapsed: 0.002 sec. 

A continuación, crea una tabla llamada ontime con el siguiente comando:

debian :) CREATE TABLE ontime ( Year UInt16, Quarter UInt8, Month UInt8, DayofMonth UInt8, DayOfWeek UInt8, FlightDate Date, AirlineID Int32, FlightNum String ) ENGINE = MergeTree(FlightDate, (Year, FlightDate), 8192);

Deberías ver el siguiente resultado:

CREATE TABLE ontime
(
    `Year` UInt16, 
    `Quarter` UInt8, 
    `Month` UInt8, 
    `DayofMonth` UInt8, 
    `DayOfWeek` UInt8, 
    `FlightDate` Date, 
    `AirlineID` Int32, 
    `FlightNum` String
)
ENGINE = MergeTree(FlightDate, (Year, FlightDate), 8192)

Ok.

0 rows in set. Elapsed: 0.127 sec. 

También puedes ver el contenido de tu tabla con el siguiente comando:

debian :) describe ontime;

Deberías ver la siguiente salida:

DESCRIBE TABLE ontime

??name?????????type?????default_type???default_expression???comment???codec_expression???ttl_expression??
? Year       ? UInt16 ?              ?                    ?         ?                  ?                ?
? Quarter    ? UInt8  ?              ?                    ?         ?                  ?                ?
? Month      ? UInt8  ?              ?                    ?         ?                  ?                ?
? DayofMonth ? UInt8  ?              ?                    ?         ?                  ?                ?
? DayOfWeek  ? UInt8  ?              ?                    ?         ?                  ?                ?
? FlightDate ? Date   ?              ?                    ?         ?                  ?                ?
? AirlineID  ? Int32  ?              ?                    ?         ?                  ?                ?
? FlightNum  ? String ?              ?                    ?         ?                  ?                ?
?????????????????????????????????????????????????????????????????????????????????????????????????????????

8 rows in set. Elapsed: 0.007 sec. 

También puedes insertar, actualizar y borrar datos de la tabla ontime.

Borrar base de datos y tabla

También puedes eliminar tu base de datos y tu tabla con el cliente ClickHouse.

Si quieres eliminar la tabla, ejecuta el siguiente comando:

debian :) DROP TABLE ontime;

Deberías ver la siguiente salida:

DROP TABLE ontime

Ok.

0 rows in set. Elapsed: 0.003 sec. 

También puedes eliminar la base de datos con el siguiente comando:

debian :) DROP DATABASE clickdb;

Deberías ver la siguiente salida:

DROP DATABASE clickdb

Ok.

0 rows in set. Elapsed: 0.002 sec. 

Cuando hayas terminado, puedes pasar al siguiente paso.

Configurar ClickHouse para conectarse desde un host remoto

También puedes conectar el servidor de base de datos ClickHouse desde el host remoto. Para ello, tendrás que editar el archivo de configuración config.xml de ClickHouse:

nano /etc/clickhouse-server/config.xml

Busca la siguiente línea:

<!-- <listen_host>0.0.0.0</listen_host> -->

Y cámbiala por la siguiente:

<listen_host>0.0.0.0</listen_host>

Guarda y cierra el archivo cuando hayas terminado. A continuación, reinicia el servicio ClickHouse para aplicar la nueva configuración:

systemctl restart clickhouse-server

Ahora ClickHouse está configurado para conectarse desde el host remoto.

Ahora, inicia sesión en el host remoto y conecta el servidor ClickHouse con el siguiente comando:

clickhouse-client --host your_server_ip --password admin@123

Una vez que te hayas conectado con éxito, deberías ver la siguiente salida:

ClickHouse client version 19.13.3.26 (official build).
Connecting to localhost:9000 as user default.
Connected to ClickHouse server version 19.13.3 revision 54425.

debian :)

Conclusión

Enhorabuena! has instalado correctamente el servidor ClickHouse en el servidor Debian 10. Ahora puedes crear fácilmente nuevas bases de datos, tablas, insertar y actualizar datos y realizar consultas a través del cliente ClickHouse. Para más información, puedes visitar la documentación oficial de ClickHouse en ClickHouse Doc. No dudes en preguntarme si tienes alguna duda.

Scroll al inicio