Data Team MICApache Ceph es un sistema de almacenamiento distribuido. Provee almacenamiento de objetos compatible con la API S3 a través de Ceph Object Gateway (RGW), utilizado como base del Data Lake.
# Linux
$ curl -O https://dl.min.io/client/mc/release/linux-amd64/mc
$ chmod +x mc && sudo mv mc /usr/local/bin/
# Verificar instalación
$ mc --version
$ mc alias set miceph <tu-url> <tu_access_key> <tu_secret_key>
# Verificar conexión
$ mc admin info miceph
| Comando | Descripción |
|---|---|
mc ls miceph |
Listar todos los buckets |
mc ls miceph/bucket-name/ |
Listar contenido de un bucket |
mc ls miceph/bucket-name/prefix/ --recursive |
Listar recursivamente |
mc mb miceph/nuevo-bucket |
Crear un bucket |
mc rb miceph/bucket-vacio |
Eliminar bucket vacío |
mc rb miceph/bucket --force |
Eliminar bucket con contenido |
Subir un archivo
$ mc cp archivo_local.parquet miceph/data-raw/etl/ventas/2026/
Subir un directorio completo
$ mc cp ./datos_locales/ miceph/data-raw/etl/batch/ \
--recursive \
--exclude "*.tmp"
Descargar un archivo
$ mc cp miceph/data-raw/etl/ventas/2026/data.parquet ./local/
Descargar un directorio
$ mc cp miceph/data-analytics/resultados/ ./resultados/ \
--recursive
Sync local → Ceph (solo sube diferencias)
$ mc mirror ./datos/ miceph/data-raw/etl/datos/ \
--overwrite \
--remove \
--exclude "*.log"
Sync Ceph → local
$ mc mirror miceph/data-analytics/reportes/ ./reportes_local/
Sync entre buckets Ceph
$ mc mirror miceph/data-raw/etl/ miceph/data-backup/etl/
| Bucket | Capa | Descripción |
|---|---|---|
data-raw |
Raw Layer | Datos crudos sin procesar (landing zone) |
data-staging |
Staging | Datos en proceso de transformación |
data-analytics |
Analytics | Datos procesados listos para consumo |
data-ml |
ML Layer | Datasets y modelos de machine learning |
data-backup |
Backup | Copias de seguridad |
data-temp |
Temp | Archivos temporales (limpieza automática 30d) |
s3://data-raw/
└── {area}/{fuente}/{año}/{mes}/{dia}/
└── {nombre_archivo}.{formato}
# Ejemplo:
s3://data-raw/comercial/crm/2026/03/11/clientes.parquet
s3://data-analytics/telco/kpis/2026/03/kpi_red_mensual.parquet
Ver metadatos de un objeto
$ mc stat miceph/data-raw/etl/ventas/data.parquet
Agregar metadatos personalizados al subir
$ mc cp reporte_marzo.parquet miceph/data-analytics/reportes/ \
--attr "area=comercial;owner=data-engineering;version=1.0"
Copiar objeto dentro de Ceph
$ mc cp miceph/data-raw/etl/ventas/data.parquet \
miceph/data-analytics/procesado/ventas/data.parquet
Mover objeto (copiar + borrar)
$ mc mv miceph/data-raw/temp/archivo.parquet \
miceph/data-analytics/final/archivo.parquet
Generar URL de descarga válida por 1 hora
$ mc share download --expire 1h miceph/data-analytics/reportes/informe.xlsx
from minio import Minio
client = Minio(
"<tu-url>",
access_key="<tu_access_key>",
secret_key="<tu_secret_key>",
secure=True,
)
Listar archivos en un prefijo
objects = client.list_objects(
"data-raw",
prefix="etl/ventas/2026/03/",
recursive=True,
)
for obj in objects:
print(obj.object_name, obj.size)
Subir archivo
from minio.commonconfig import Tags
tags = Tags(for_object=True)
tags["owner"] = "de-team"
tags["version"] = "1.0"
client.fput_object(
"data-raw",
"etl/ventas/2026/03/11/data.parquet",
"local_data.parquet",
tags=tags,
)
Descargar archivo
client.fget_object(
"data-analytics",
"reportes/kpi_mensual.parquet",
"kpi_mensual.parquet",
)
import pandas as pd
import s3fs
fs = s3fs.S3FileSystem(
endpoint_url="<tu-url>",
key="<tu_access_key>",
secret="<tu_secret_key>",
)
df = pd.read_parquet(
"s3://data-analytics/ventas/2026/03/",
filesystem=fs,
)
Ver espacio usado por bucket
$ mc du miceph/data-analytics
Ver estadísticas rápidas de un bucket
$ mc ls miceph/data-raw --recursive --summarize
Buscar archivos por extensión en todo un bucket
$ mc find miceph/data-raw --name "*.parquet"
{
"Rules": [
{
"ID": "eliminar-temporales-30-dias",
"Filter": { "Prefix": "temp/" },
"Status": "Enabled",
"Expiration": { "Days": 30 }
}
]
}
Aplicar política de lifecycle
$ mc ilm import miceph/data-temp < lifecycle.json