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.