Instalación y conexión JDBC de ClickHouse en servidores Linux

Antes de proceder con la instalación, es crucial verificar que la arquitectura de su procesador sea x86_64, que esté ejecutando Linux y que el conjunto de instrucciones SSE 4.2 sea compatible.

grep -q sse4_2 /proc/cpuinfo && echo "SSE 4.2 soportado" || echo "SSE 4.2 no soportado"

Instalación en Ubuntu/Debian

El método oficial para sistemas basados en Debian y Ubuntu implica los siguientes pasos:

sudo apt-get update \
    && sudo apt-get install -y apt-transport-https ca-certificates dirmngr gnupg \
    && sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 8756C5E9AF90316D \
    && echo "deb [arch=amd64] http://repo.yandex.ru/clickhouse/deb/stable/" | sudo tee /etc/apt/sources.list.d/clickhouse.list \
    && sudo apt-get update \
    && sudo apt-get install -y clickhouse-server clickhouse-client \
    && sudo service clickhouse-server start

Para verificar la instalación, puede iniciar el cliente interactivo:

clickhouse-client

Instalación en CentOS

Para sistemas basados en Red Hat como CentOS, se recomienda utilizar los paquetes RPM proporcionados por Altinity. Puede encontrar instrucciones detalladas en su repositorio de GitHub.

A continuación, se muestra un resumen del proceso:

  1. Obtener el script de configuración del repositorio:
curl -s https://packagecloud.io/install/repositories/altinity/clickhouse/script.rpm.sh | sudo bash
# O especificando la versión del SO (ej. CentOS 7):
curl -s https://packagecloud.io/install/repositories/altinity/clickhouse/script.rpm.sh | os=centos dist=7 bash

  1. Verificar los paqutees disponibles:
sudo yum list 'clickhouse*'

  1. Instalar el servidor y el cliente:
sudo yum install -y clickhouse-server clickhouse-client

  1. Iniciar el servicio:
sudo service clickhouse-server start

  1. Iniciar el cliente:
clickhouse-client

Instalación sin conexión (Offline)

Para entornos sin acceso a Internet, puede descargar los paquetes de instalación manualmente. Los repositorios de Yandex y Altinity son fuentes comunes para estos archivos.

Los paquetes esenciales en orden de instalación son:

  • clickhouse-common-static
  • clickhouse-server
  • clickhouse-client

Una vez instalados los paquetes, inicie el servicio y el cliente:

service clickhouse-server start
clickhouse-client [-h <direcci>]
</direcci>

Si la instalación fue exitosa, al ejecutar SHOW DATABASES; en el cliente, debería ver las bases de datos default y system.

Conexión a ClickHouse mediante JDBC con Java

Para interactuar con ClickHouse desde aplicaciones Java, utilice el driver JDBC oficial.

Dependencia Maven

Añada la siguiente dependencia a su archivo pom.xml:

<dependency>
    <groupId>ru.yandex.clickhouse</groupId>
    <artifactId>clickhouse-jdbc</artifactId>
    <version>0.3.2-stable</version> <!-- Use la última versión estable disponible -->
</dependency>

Ejemplo de Código Java

El driver JDBC para ClickHouse utiliza la clase ru.yandex.clickhouse.ClickHouseDriver. A continuación, se muestra un método para establecer una conexión:

import ru.yandex.clickhouse.ClickHouseDataSource;
import java.sql.Connection;
import java.sql.SQLException;

public class ClickHouseConnector {

    public static Connection getClickHouseConnection(String host, int port, String database, String user, String password) throws SQLException {
        // Construye la URL de conexión JDBC
        String jdbcUrl = String.format("jdbc:clickhouse://%s:%d/%s", host, port, database);

        // Crea una instancia de ClickHouseDataSource
        ClickHouseDataSource dataSource = new ClickHouseDataSource(jdbcUrl);

        // Obtiene la conexión, proporcionando credenciales si son necesarias
        if (user != null && !user.isEmpty()) {
            return dataSource.getConnection(user, password);
        } else {
            return dataSource.getConnection();
        }
    }

    public static void main(String[] args) {
        try {
            // Reemplaza con tus detalles de conexión
            String host = "localhost";
            int port = 8123; // Puerto HTTP por defecto para conexiones JDBC
            String database = "default";
            String user = ""; // Dejar vacío si no se usa autenticación
            String password = ""; // Dejar vacío si no se usa autenticación

            Connection connection = getClickHouseConnection(host, port, database, user, password);
            System.out.println("Conexión a ClickHouse establecida exitosamente.");
            // Aquí puedes realizar operaciones con la base de datos
            connection.close();
        } catch (SQLException e) {
            System.err.println("Error al conectar a ClickHouse: " + e.getMessage());
            e.printStackTrace();
        }
    }
}

Nota: No es necesario registrar explícitamente el driver con Class.forName(); el driver se carga automáticmaente mediante el mecanismo Service Provider de Java.

Configuración para Conexiones Remotas

Para permitir conexiones desde hosts remotos, modifique el archivo de configuración de ClickHouse (generalmente /etc/clickhouse-server/config.xml). Descomente y ajuste la directiva <listen_host> para que acepte conexiones de cualquier dirección IP.

<listen_host>0.0.0.0</listen_host>

Este ajuste es similar a configurar permisos de conexión remota en otras bases de datos como MySQL.

Observación: Después de habilitar 0.0.0.0, puede notar que la conexión al servidor local usando clickhouse-client (sin especificar IP o usando localhost) falla con un error de conexión rechazada. Sin embargo, las conexiones usando la dirección IP local (127.0.0.1) o la IP del servidor sí funcionarán. Esto puede ocurrir independientemente de la configuración de /etc/hosts.

Etiquetas: ClickHouse JDBC java linux instalación

Publicado el 10-29 13:30