Ctrl K
ComunidadGuías…
Guía HostingByte · verificada

Instalar Apache Cloudberry (Incubating): Guía Completa y Verificada

Guía paso a paso para instalar, configurar y validar Apache Cloudberry (Incubating) en entornos de producción. Incluye prerrequisitos, comandos verificados, backup/restore, seguridad y troubleshooting basado en documentación oficial.

Actualizada 5/10/2026Más guíasCitación AI/LLM

Instalar Apache Cloudberry (Incubating): Guía Completa y Verificada

Última actualización: 2026-10-05 | Versión oficial: 2.2.0 (current) / 2.1.0-incubating | Licencia: Apache-2.0

¿Qué es Apache Cloudberry?

Apache Cloudberry (Incubating) es una base de datos MPP (Massively Parallel Processing) de código abierto avanzada y madura, derivada del código fuente de Greenplum Database 7 pero construida sobre un kernel PostgreSQL más moderno. Es un proyecto incubado en la Apache Software Foundation bajo el modelo Apache-2.0, garantizando gobernanza neutral y toma de decisiones basada en mérito.

Cloudberry puede servir como data warehouse y también para cargas de trabajo de analítica a gran escala e IA/ML. Soporta desde terabytes hasta petabytes de datos sobre hardware commodity, máquinas virtuales o nube pública.

Casos de Uso Principales

  1. Data Warehouse MPP: Almacenamiento y consulta distribuida de grandes volúmenes de datos con procesamiento paralelo.
  2. Analítica OLAP: Consultas complejas sobre datasets masivos con ejecución paralela en segmentos.
  3. Machine Learning In-Database: Uso de Apache MADlib para algoritmos ML directamente en la base de datos.
  4. Análisis Espacial: Extensiones PostGIS para consultas geoespaciales distribuidas.
  5. Migración desde Greenplum: Migración sencilla usando herramientas oficiales como cbcopy y gpbackup.

Requisitos del Sistema

ComponenteEntorno DesarrolloEntorno Producción
CPU4 cores16+ cores
Memoria8 GB32+ GB
DiscoSSDSSD con RAID recomendado
Red10 Gbps NIC (2 preferido)10 Gbps NIC (2 preferido)
Sistema OperativoRocky Linux 8/9, Ubuntu 22.04/24.04, RHEL 8/9Mismo que desarrollo
FilesystemXFSXFS obligatorio

Soporte de arquitectura: x86_64 (disponible desde 2.1+) y AARCH64 (planificado para 2.2).

Instalación Paso a Paso

Opción 1: Instalación vía RPM/DEB (Recomendada para Producción)

La instalación automática resuelve dependencias como bash, openssh, rsync, perl, python3, libcurl, libevent, libidn2, libselinux, libstdc++, libuuid, libuv, libxml2, libyaml, libzstd, lz4, openldap, openssl, pam, readline, pcre2, xz para RHEL/Rocky Linux.

# Instalar paquetes RPM (RHEL/Rocky Linux)
sudo yum install cloudberry

# O instalar paquetes DEB (Ubuntu/Debian)
sudo apt-get install cloudberry

# Verificar versión instalada
cloudberry --version

# Verificar estado del servicio
systemctl status cloudberry

Opción 2: Compilación desde Fuente (Para Desarrollo/Testing)

git clone https://github.com/apache/cloudberry.git
cd cloudberry
make
make install

Opción 3: Docker (Solo Desarrollo/Testing)

Existen imágenes Docker comunitarias en woblerr/docker-cloudberry para despliegues single-node y multi-node, aptas para desarrollo, testing y aprendizaje.

# Ejecutar contenedor de prueba
docker run -d --name cloudberry-dev \
  -p 5432:5432 \
  -v /data:/var/lib/cloudberry \
  woblerr/cloudberry:latest

⚠️ Advertencia: No usar Docker para producción. Las imágenes comunitarias no están documentadas oficialmente por Apache.

Configuración Inicial del Cluster

Paso 1: Preparación del Sistema Operativo

# Configurar kernel parameters (en /etc/sysctl.conf)
echo "vm.swappiness=10" >> /etc/sysctl.conf
echo "vm.dirty_ratio=20" >> /etc/sysctl.conf
echo "vm.dirty_background_ratio=5" >> /etc/sysctl.conf
sysctl -p

Paso 2: Configuración de Red

Datos exchange network: 2 NICs de 10 Gbps con bonding.

# Configurar bonding en /etc/sysconfig/bonding
cat > /etc/sysconfig/bonding <<EOF
BONDING_OPTS='mode=4 miimon=100 xmit_hash_policy=layer3+4'
IPADDR0="192.168.1.10"
NETMASK0="255.255.255.0"
GATEWAY="192.168.1.1"
EOF

# Activar bonding
systemctl enable NetworkManager-wait-online.service
systemctl restart NetworkManager

Gateway por defecto debe usar bond0 del data exchange network.

Paso 3: Configuración de Almacenamiento

Los datos se almacenan exclusivamente en nodos segment, NO en el coordinator.

# Crear volumes lógicos con LVM (recomendado)
lvcreate -L 100G -n /data0 vg_cloudberry
lvcreate -L 200G -n /data1 vg_cloudberry
lvcreate -L 50G -n /system vg_cloudberry

# Montar en XFS (obligatorio)
mkfs.xfs /dev/vg_cloudberry/data0
mkfs.xfs /dev/vg_cloudberry/data1
mkfs.xfs /dev/vg_cloudberry/system

mount /dev/vg_cloudberry/data0 /data0
mount /dev/vg_cloudberry/data1 /data1
mount /dev/vg_cloudberry/system /system

Capacidad máxima al 70% para archivos temporales y evitar degradación de rendimiento.

Paso 4: Inicialización del Cluster

# Ejecutar en el nodo coordinator
gpinitsystem -a -f /etc/cloudberry/gpConfigurationFile.conf

# Verificar inicialización
gpstate -s

Paso 5: Configuración de Seguridad Básica

# Configurar autenticación (MD5 o SCRAM-SHA-256)
psql -h localhost -U gpadmin -d postgresql -c "ALTER USER gpadmin PASSWORD 'secure_password';"

# Deshabilitar AllowEmptyPasswords por defecto
echo "password_encryption=md5" >> /etc/cloudberry/postgresql.conf
echo "password_hash_algorithm=scram-sha-256" >> /etc/cloudberry/postgresql.conf

# Deshabilitar UseDNS para evitar resolución DNS lenta
echo "use_dns = off" >> /etc/cloudberry/postgresql.conf

Paso 6: Configuración de Firewall

# Permitir tráfico en puerto 5432 (coordinador)
firewall-cmd --permanent --add-port=5432/tcp
firewall-cmd --reload

Comprobación Posterior a la Instalación

Verificación de Estado del Cluster

# Estado general del cluster
gpstate -s

# Listar segmentos activos
gpstate -l

# Verificar conectividad desde coordinator
psql -h localhost -U gpadmin -d postgresql -c "SELECT version();"

Ejecución de Pruebas Básicas

psql -h localhost -U gpadmin -d postgresql <<EOF
-- Verificar versión
SELECT version();

-- Crear tabla de prueba (con DISTRIBUTED clause)
CREATE TABLE test_table (
    id INT,
    name VARCHAR(100),
    value DECIMAL(10,2)
) DISTRIBUTED BY (id);

-- Insertar datos
INSERT INTO test_table VALUES (1, 'test', 100.50);

-- Consultar datos
SELECT * FROM test_table;

-- Verificar distribución
SELECT distribution_key FROM pg_dist_partition WHERE relname = 'test_table';
EOF

Comprobación de Rendimiento Básico

# Ejecutar consulta distribuida simple
psql -h localhost -U gpadmin -d postgresql <<EOF
EXPLAIN ANALYZE 
SELECT COUNT(*) FROM test_table;
EOF

Backup y Restauración

gpbackup/gprestore (Paralelo - Recomendado)

Ventajas:

  • Usa ACCESS SHARE locks en lugar de EXCLUSIVE, permitiendo DDL durante backups
  • Escala independientemente del número de segmentos
  • Cada segment host escribe a disco local simultáneamente
# Backup paralelo completo
gpbackup -d postgresql://gpadmin@localhost:5432/postgres

# Verificar backup
ls -lh /var/lib/cloudberry/backups/

# Restauración completa
gprestore -d postgresql://gpadmin@localhost:5432/postgres

pg_dump/pg_restore (No-paralelo - Solo Casos Especiales)

⚠️ Advertencia: Más lento porque todos los datos pasan por el coordinator. Requiere modificar CREATE TABLE statements para incluir DISTRIBUTED clause.

# Backup con pg_dump (solo para casos especiales)
pg_dump -h localhost -U gpadmin postgresql > backup.sql

# Restauración con pg_restore
pg_restore -h localhost -U gpadmin postgresql backup.sql

Actualización y Rollback

Actualización de Versión

# Para RPM/DEB: actualizar paquetes
sudo yum update cloudberry  # RHEL/Rocky Linux
sudo apt-get update && sudo apt-get upgrade cloudberry  # Ubuntu/Debian

# Para compilación desde fuente:
cd /path/to/cloudberry
git pull origin main
make install

Rollback a Versión Anterior

# Guardar backup completo antes de actualizar
gpbackup -d postgresql://gpadmin@localhost:5432/postgres --full

# Desinstalar versión actual
sudo yum remove cloudberry  # RHEL/Rocky Linux
sudo apt-get remove cloudberry  # Ubuntu/Debian

# Instalar versión anterior desde backup o repositorio antiguo

Errores Habituales y Soluciones

Error 1: "Connection refused" al conectar con psql

Causa: Servicio no iniciado o puerto incorrecto.

systemctl start cloudberry
systemctl status cloudberry
# Verificar que el puerto 5432 esté escuchando
netstat -tlnp | grep 5432

Error 2: "Segment initialization failed"

Causa: Configuración de red incorrecta o almacenamiento no disponible.

# Verificar conectividad entre nodos
ping 

# Verificar que el almacenamiento esté montado correctamente
df -h /data0 /data1

# Re-inicializar cluster si es necesario
gpinitsystem -a -f /etc/cloudberry/gpConfigurationFile.conf

Error 3: "cbcopy validation failed"

Causa: Diferencias en schema o datos entre source y target.

# Verificar logs de error
cat $USER/gpAdminLogs/cbcopy_$timestamp.log

# Ejecutar cbcopy con validación incremental
cbcopy --source-host=127.0.0.1 --source-port=15432 \
    --source-user=gpadmin --dest-host=127.0.0.1 \
    --dest-port=25432 --dest-user=gpadmin \
    --full --metadata-only --with-global-metadata

Error 4: "Network file systems not supported"

Causa: Intento de usar NFS o SMB para almacenamiento compartido.

Solución: Presentar storage compartido como block device, no como network filesystem.

Seguridad

Cifrado de Datos (TDE)

# Configurar Transparent Data Encryption
echo "ssl = on" >> /etc/cloudberry/postgresql.conf
echo "ssl_cert_file = '/etc/ssl/certs/server.crt'" >> /etc/cloudberry/postgresql.conf
echo "ssl_key_file = '/etc/ssl/private/server.key'" >> /etc/cloudberry/postgresql.conf

Autenticación y Políticas de Contraseñas

  • Passwords guardados como MD5 o SCRAM-SHA-256 hashes en pgauthid
  • PermitEmptyPasswords deshabilitado por defecto
  • UseDNS deshabilitado para evitar resolución DNS lenta
  • Log auditing para detectar amenazas de seguridad
  • Row-Level Security: Políticas RLS permiten definir acceso a filas específicas por usuario
  • Password Profiles: Controlan políticas de contraseñas: bloqueo tras fallos de login, reutilización limitada

⚠️ Nota sobre endpoint security software: Software antivirus/protección puede interferir con operaciones. Testear en entorno no-producción.

Migración desde Greenplum Database

cbcopy (Herramienta Oficial)

Utilidad poderosa para migración eficiente entre Greenplum 6.x/7.x → Cloudberry y actualizaciones 1.x → 2.x.

# Migrar metadata
cbcopy --source-host=127.0.0.1 --source-port=15432 \
    --source-user=gpadmin --dest-host=127.0.0.1 \
    --dest-port=25432 --dest-user=gpadmin \
    --full --metadata-only --with-global-metadata

# Migrar datos
cbcopy --source-host=127.0.0.1 --source-port=15432 \
    --source-user=gpadmin --dest-host=127.0.0.1 \
    --dest-port=25432 --dest-user=gpadmin \
    --full --data-only --truncate --copy-jobs=8

Modos disponibles: --full, --dbname, --schema, --include-table, --append, --truncate.

cbcopy valida automáticamente comparando row counts entre source y target. Logs de error en $USER/gpAdminLogs/cbcopy_$timestamp.log.

Preguntas Frecuentes (FAQ)

¿Puedo usar Cloudberry para reemplazar clusters Greenplum existentes?

Sí. Uno de los objetivos es compatibilidad con Greenplum. Migrar usando gpbackup o cbcopy.

¿Cuál es la diferencia con Greenplum Database?

Cloudberry toma el codebase de Greenplum 7 pero tiene kernel PostgreSQL más nuevo y moderno, con más features.

¿Soporta Docker Compose oficial?

No hay documentación oficial para Docker Compose. Existen imágenes comunitarias en woblerr/docker-cloudberry para desarrollo/testing.

¿Qué versiones de Java soporta?

Open JDK 8/11/17 y Oracle JDK 8/11/17 para PL/Java y PXF (AdoptOpenJDK recomendado).

¿Cómo validar una migración con cbcopy?

cbcopy valida automáticamente comparando row counts entre source y target. Logs de error en $USER/gpAdminLogs/cbcopy_$timestamp.log.

Enlaces Relacionados

Referencias Técnicas Verificadas

  1. Apache Cloudberry Architecture
  2. Deployment Platform Requirements
  3. Security Documentation
  4. Migration and Upgrade Guide
  5. Backup and Restore Guide

Fecha de verificación: 2026-10-05 | Última versión oficial: 2.2.0 (current) / 2.1.0-incubating | Licencia: Apache-2.0

Documentación oficial | Repositorio GitHub

Esta guía ha sido verificada contra fuentes primarias oficiales de Apache Cloudberry. Para información actualizada, consulte siempre la documentación oficial.

Fuentes verificadas

Fuente 1 ↗Fuente 2 ↗Fuente 3 ↗Fuente 4 ↗Fuente 5 ↗