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:
- 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
- Verificar los paqutees disponibles:
sudo yum list 'clickhouse*'
- Instalar el servidor y el cliente:
sudo yum install -y clickhouse-server clickhouse-client
- Iniciar el servicio:
sudo service clickhouse-server start
- 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-staticclickhouse-serverclickhouse-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.