# Verificación ligera del entorno
# Consola: Bash (Ubuntu / Linux)
# Seguridad: solo lectura. Sin sudo. Sin borrar nada.
set -euo pipefail
echo "=== Identidad del kernel ==="
uname -a
echo
echo "=== Identidad de la distribución ==="
if [ -f /etc/os-release ]; then
# shellcheck disable=SC1091
. /etc/os-release
echo "NAME=${NAME:-desconocido}"
echo "VERSION=${VERSION:-desconocida}"
echo "PRETTY_NAME=${PRETTY_NAME:-desconocido}"
else
echo "No se encontró /etc/os-release en este entorno."
fi
echo
echo "=== Contexto de sesión ==="
echo "USER=${USER:-}"
echo "HOME=${HOME:-}"
echo "SHELL=${SHELL:-}"
echo "PWD=$(pwd)"
echo
echo "=== ¿Existe el directorio de práctica? ==="
if [ -d "${HOME}/bigdata_linux_lab" ]; then
echo "bigdata_linux_lab=sí"
else
echo "bigdata_linux_lab=no (se creará en la sección 5)"
fi
echo
echo "Listo. Interpreta esta salida en la siguiente celda."¿Por qué Linux domina el mundo del Big Data?
¿Por qué Linux domina el mundo del Big Data?
Fundamentos del sistema operativo que sostiene Hadoop, Spark y la nube moderna
Si mañana te entregan las llaves de un clúster, no empezarás por un dashboard bonito: empezarás por una terminal. En este notebook entenderás por qué Linux es el cimiento silencioso de Hadoop, Spark, Kafka y casi toda la infraestructura moderna de datos — y dejarás Ubuntu 24.04 LTS listo para trabajar.
Tiempo estimado de lectura: 40 minutos
Nivel: Básico
Requisitos: - Un equipo con Windows 10 u 11 (ruta principal con WSL2), o una máquina con Ubuntu ya instalado - Permisos para instalar software en tu equipo, cuando aplique - Ganas de entender la infraestructura, no solo de memorizar comandos
Tecnologías utilizadas: - Ubuntu 24.04 LTS (ruta principal) - Ubuntu 22.04 LTS (alternativa compatible) - WSL2 - Bash - PowerShell (solo para instalar y gestionar WSL en Windows)
Sobre el autor
Wilder Ramírez Delgado
Ingeniero Electrónico, Magíster en Analítica de Datos, Arquitecto de IA y Científico de Datos.
Durante más de veinte años ha diseñado soluciones de analítica avanzada, Big Data, inteligencia artificial y arquitectura de datos para entidades gubernamentales y organizaciones privadas.
Su experiencia combina investigación, desarrollo de plataformas distribuidas, ingeniería de datos, machine learning, arquitecturas de software y auditoría tecnológica.
En esta serie comparte conocimientos construidos a partir de proyectos reales, explicados paso a paso y acompañados de ejemplos completamente reproducibles.
Esta publicación hace parte de la serie:
Big Data desde Cero
Una colección de notebooks para aprender procesamiento distribuido, almacenamiento masivo y analítica moderna desde los fundamentos hasta arquitecturas de producción.
Bienvenida a la serie Big Data desde Cero
Hay muchas formas de “aprender Big Data”. La más común es saltar directo a una herramienta de moda, copiar un tutorial y esperar que el resto se acomode solo. Esa ruta produce demos. Rara vez produce criterio.
Big Data desde Cero es una colección editorial de artículos técnicos ejecutables. Cada notebook se puede leer como un capítulo de libro, ejecutarse como laboratorio y consultarse años después, cuando la herramienta de turno ya haya cambiado de nombre.
La promesa no es enseñarte un stack completo en una tarde. La promesa es más ambiciosa y más útil: formar la manera de pensar de quien diseña, opera y diagnostica plataformas de datos.
Empezamos por Linux por una razón incómoda y liberadora a la vez: sin él, el resto del ecosistema es teatro. Hadoop, Spark, Kafka, Airflow, Docker y Kubernetes no “viven en la nube” como abstracción mágica. Viven como procesos, archivos, puertos, usuarios y logs sobre un sistema operativo. Casi siempre, ese sistema operativo es Linux.
Para pensar: si mañana te dan acceso a un clúster y solo puedes usar una herramienta durante la primera hora, ¿abrirías un IDE… o una terminal?
Este notebook es autónomo. Puedes llegar desde Medium, GitHub o una búsqueda y entenderlo sin haber leído nada previo. Al mismo tiempo, es la primera pieza de un rompecabezas mayor.
→ Siguiente: Cómo leer este notebook
Cómo leer este notebook
Lee primero. Ejecuta después. Modifica al final.
El ritmo recomendado es simple:
- Lee la explicación hasta entender el porqué.
- Observa el comando y la consola a la que pertenece.
- Ejecuta solo cuando sepas qué debería ocurrir.
- Cambia un parámetro y observa el efecto.
PowerShell no es Bash
En este capítulo aparecen dos consolas distintas. No las mezcles:
| Consola | Dónde | Para qué en este notebook |
|---|---|---|
| PowerShell | Windows | Instalar y gestionar WSL |
| Bash | Ubuntu (dentro de WSL2 o nativo) | Todo el trabajo en Linux |
Si un bloque dice PowerShell, ábrelo en Windows. Si dice Bash, ábrelo en Ubuntu.
Único laboratorio extenso
Aquí no hay un catálogo interminable de comandos. El único laboratorio largo es la instalación y configuración inicial de Ubuntu 24.04 LTS sobre WSL2. El resto son verificaciones cortas y seguras.
Directorio de práctica
Todo el trabajo práctico de este notebook ocurre dentro de:
~/bigdata_linux_lab
No borramos archivos del sistema. No tocamos configuraciones críticas. No ejecutamos sudo automáticamente desde el notebook. Si un paso requiere privilegios, lo verás marcado con claridad y lo decidirás tú.
Objetivos de este capítulo
Cuando termines, deberías ser capaz de:
- explicar por qué Linux domina el ecosistema Big Data
- instalar Ubuntu 24.04 LTS con WSL2 (o verificar un entorno ya existente)
- describir la arquitectura Usuario → Shell → Kernel → Hardware
- orientarte en el sistema de archivos de Linux
- entender qué es una terminal, un shell y variables como
HOMEyPATH
Lo que deliberadamente no cubriremos aquí —anatomía profunda de comandos, pipes, filtros y el mini-proyecto de consola— vive en el Notebook 02: Dominando la Terminal para Big Data.
→ Siguiente: Tabla de contenidos
Tabla de contenidos
- Bienvenida a la serie
- Qué construiremos durante esta serie
- ¿Por qué Linux domina el mundo del Big Data?
- Instalación: el panorama completo
- Laboratorio: instalando Ubuntu sobre WSL2
- Primer ingreso a Ubuntu
- Arquitectura de Linux
- Sistema de archivos
- La terminal
- Lo que acabas de aprender
- Próximo notebook
Antes de escribir la primera línea de Spark, hay que entender el suelo donde corre. Ese suelo es Linux.
→ Siguiente: 1. Qué construiremos
1. ¿Qué construiremos durante esta serie?
No empezamos por Spark.
Suena contraintuitivo. Spark es atractivo, rápido de demostrar y luce bien en un portafolio. También es una mala primera piedra si aún no entiendes el sistema donde se ejecuta.
Una plataforma moderna de datos no es una herramienta: es una arquitectura por capas. Cada capa resuelve un problema distinto. Cuando una falla, necesitas saber en qué piso del edificio estás mirando.
En Big Data desde Cero construiremos esa arquitectura de abajo hacia arriba. Linux es el cimiento. Encima aparecerán modelos de procesamiento, sistemas de archivos distribuidos, motores de cómputo, flujos en tiempo real y, más adelante, machine learning sobre datos reales.
En producción… el onboarding de un ingeniero de datos casi nunca empieza por “abre este notebook de ciencia”. Empieza por “entra al nodo, revisa el servicio y dime qué está pasando”.
Si Linux te parece “demasiado básico” para Big Data, conviene leer este capítulo con especial atención: los incendios caros suelen empezar en lo básico.
→ Siguiente: Diagrama del mapa
Diagrama: el mapa completo de la serie
Observa el recorrido completo. No necesitas dominarlo hoy. Necesitas ubicarte.
flowchart TD
A[Linux] --> B[MapReduce]
B --> C[Hadoop]
C --> D[HDFS]
D --> E[Spark]
E --> F[Streaming]
F --> G[Machine Learning]
G --> H[Proyecto final]
style A fill:#2d6a4f,color:#fff
TODO MEDIUM: Exportar este diagrama como PNG o SVG.
Estamos aquí: Linux — el sistema operativo sobre el que vive casi toda la infraestructura de datos.
| Capa | Pregunta que responde |
|---|---|
| Linux | ¿Sobre qué corre todo? |
| MapReduce | ¿Cómo se piensa el procesamiento distribuido? |
| Hadoop / HDFS | ¿Cómo se almacenan y coordinan datos masivos? |
| Spark | ¿Cómo se procesa con velocidad y abstracciones modernas? |
| Streaming | ¿Qué cambia cuando el dato no “llega en lote”? |
| Machine Learning | ¿Cómo se convierte el dato en decisión? |
| Proyecto final | ¿Sabes unir las piezas con criterio? |
→ Anterior: Sección 1 · Siguiente: Dónde encaja este notebook
Dónde encaja este notebook en el mapa
Este Notebook 01 te deja con territorio y ventana: el sistema de archivos y la terminal, más un Ubuntu usable.
El Notebook 02 — Dominando la Terminal para Big Data — empieza exactamente donde terminamos: el lenguaje cotidiano de la consola, los pipes y un mini-proyecto real dentro de ~/bigdata_linux_lab.
Más adelante, cuando lleguemos a MapReduce, ese puente no será metafórico. Verás que una tubería de shell y un job distribuido comparten la misma idea: transformar, agrupar, reducir.
Reto corto (mental): elige un caso — sensores IoT, transacciones bancarias, clics de un e-commerce o CDR de telecomunicaciones —. Si el equipo no domina Linux, ¿en qué capa del mapa crees que aparecería el primer incendio operativo?
Si Linux es el cimiento, la siguiente pregunta es inevitable: ¿por qué casi nadie discute alternativas serias para la infraestructura de datos?
2. ¿Por qué Linux domina el mundo del Big Data?
En 2004 Google publicó un artículo breve sobre MapReduce que cambió la forma de procesar información a escala. De esa familia de ideas nacieron sistemas que hoy damos por sentados. Lo que a veces se olvida es más prosaico: esas plataformas no florecieron sobre un escritorio cualquiera. Florecieron sobre servidores Unix-like, y de forma aplastante, sobre Linux.
No es una preferencia estética. Es ingeniería, economía operativa y ecosistema.
Cuando alguien dice “el clúster está caído”, casi nunca está hablando de un botón de Windows. Está hablando de procesos, discos, red, permisos y logs en nodos Linux. Dominar esa capa no te hace administrador de sistemas por accidente: te hace alguien capaz de construir Big Data sin magia.
Pregunta al lector: ¿tu herramienta favorita de datos se instala, opera y depura de forma natural fuera de Linux… o solo “también existe” allí?
→ Siguiente: Qué es Linux realmente
¿Qué es Linux realmente?
¿Qué es?
Linux, en sentido estricto, es un kernel: el núcleo del sistema operativo. Administra CPU, memoria, procesos, dispositivos y la comunicación entre el software y el hardware. Lo que la mayoría llama “Linux” en el día a día es en realidad un sistema GNU/Linux: el kernel Linux más herramientas de usuario (shell, compiladores, utilidades) y, encima, una distribución que empaqueta todo eso de forma usable — Ubuntu, Debian, Rocky Linux, Amazon Linux, etc.
¿Por qué existe?
Porque hacía falta un kernel libre, modificable y redistribuible, capaz de correr en hardware real y evolucionar con una comunidad enorme. Linus Torvalds publicó el germen del proyecto a inicios de los años 90; la licencia GPL permitió estudiar, adaptar y compartir mejoras. Eso no es un detalle legal decorativo: es el motor cultural y técnico de su adopción en servidores.
¿Cómo funciona?
Tú no hablas con el disco ni con la red “a pelo”. Hablas con programas. Esos programas piden servicios al kernel mediante llamadas al sistema. El kernel reparte tiempo de CPU, aísla procesos, gestiona memoria y expone dispositivos. La distribución añade el resto: instalador de paquetes, servicios, convenciones de rutas, soporte.
¿Cuándo te importa como ingeniero de datos?
Siempre que instales un motor, leas un log, montes un disco, abras un puerto, lances un contenedor o entres por SSH a un nodo. Si no distingues kernel, distro y shell, terminarás depurando síntomas en el piso equivocado del edificio.
Error común: creer que “saber Linux” es “usar Ubuntu con mouse”. Saber Linux, en datos, es operar el sistema desde la consola con modelo mental.
→ Anterior: Sección 2 · Siguiente: Línea de tiempo
Línea de tiempo: de Linux a Big Data
La historia importa porque explica el presente: el ecosistema de datos no “eligió Linux” en una reunión de marketing. Creció donde ya había servidores estables, herramientas libres y una cultura de automatización por texto.
flowchart LR
A[1991 Kernel Linux] --> B[Distros GNU/Linux]
B --> C[Servidores y cloud]
C --> D[Hadoop y ecosistema Big Data]
D --> E[Contenedores y orquestación]
E --> F[Plataformas modernas de datos]
TODO MEDIUM: Exportar este diagrama como PNG o SVG.
| Hito | Por qué te importa hoy |
|---|---|
| Nacimiento del kernel | Base técnica común bajo muchas distros |
| Distros servidor | Empaquetado reproducible para máquinas reales |
| Consolidación en data centers | Linux como default operativo |
| Ecosistema Hadoop/Spark | Servicios nativos pensados para Unix/Linux |
| Contenedores / Kubernetes | La unidad de despliegue moderna asume Linux |
Curiosidad histórica: el éxito de Linux en infraestructura no vino primero del escritorio. Vino del servidor, donde la estabilidad, la remote-first culture y el costo total de propiedad pesan más que el brillo de una interfaz.
TODO: verificar fuente y fecha antes de publicar. — fechas exactas de hitos y cualquier cifra histórica que se cite en la versión Medium.
→ Anterior: Qué es Linux · Siguiente: Servidores y nube
Servidores, supercomputación y nube
Big Data es, antes que un algoritmo, un problema de máquinas coordinadas. Esas máquinas necesitan un sistema operativo predecible, automatizable y observable.
Servidores. En un nodo de clúster instalas paquetes, editas configs, levantas demonios, rotas logs y montas discos. Linux fue adoptado masivamente en ese rol porque combina control fino, scripting y un ecosistema de herramientas de texto que se componen entre sí.
Supercomputación. El cómputo de alto rendimiento históricamente gravitó hacia Unix y, con el tiempo, hacia Linux como plataforma dominante en listados públicos de supercomputadores.
TODO: verificar fuente y fecha antes de publicar. — participación de Linux en rankings tipo TOP500 y cualquier porcentaje citado.
Nube. Las imágenes de máquina, los agentes, los balanceadores y buena parte de los servicios gestionados de datos exponen, debajo de la capa amable, Linux o APIs pensadas a su alrededor. Aunque consumas un servicio “serverless”, alguien está operando Linux por ti.
¿Cuándo te importa?
Cuando eliges una AMI, un nodo de Kubernetes, una imagen Docker o un edge device para ingesta. Tu “stack de datos” hereda las restricciones del SO base.
Sabías que… muchas plataformas comerciales de datos que se venden con interfaz web se administran, en la práctica, con SSH, logs y sistemas de empaquetado Linux cuando algo sale mal de verdad.
→ Anterior: Línea de tiempo · Siguiente: Contenedores
Docker, Kubernetes y la estandarización sobre Linux
Si la década anterior consolidó a Linux en servidores, la era de contenedores lo volvió casi inevitable.
¿Qué es un contenedor?
Una forma de empaquetar una aplicación con sus dependencias y ejecutarla de manera aislada sobre el kernel del host. No es una máquina virtual completa; es una unidad de despliegue ligera.
¿Por qué Docker importó tanto?
Porque estandarizó el verbo “correr esto igual en mi laptop y en el servidor”. Y ese verbo se ancló, de forma natural, al mundo Linux.
¿Qué problema resuelve Kubernetes?
Cuando tienes no uno, sino cientos de contenedores, necesitas orquestación: programación, reinicios, escalado, descubrimiento de servicios, límites de recursos. Kubernetes se convirtió en el lenguaje común de esa orquestación en la industria.
¿Cómo se usa en proyectos reales de datos?
Airflow en contenedores, Spark sobre Kubernetes, microservicios de features, consumers de Kafka, jobs de dbt… el patrón se repite: construyes una imagen, la despliegas, observas logs y métricas, y depuras el host cuando el aislamiento no basta.
Para pensar: en el diagrama Usuario → Shell → Kernel → Hardware, ¿dónde ubicarías Docker? (Pista: el contenedor no reemplaza al kernel; lo comparte.)
TODO: verificar fuente y fecha antes de publicar. — cualquier cifra de adopción de contenedores o Kubernetes.
→ Anterior: Servidores y nube · Siguiente: Comparativa de sistemas
Linux vs Windows vs macOS para Big Data
Esto no es una guerra de fanáticos. Es una tabla de decisión para quien construye plataformas de datos.
| Criterio | Linux | Windows | macOS |
|---|---|---|---|
| Rol dominante en servidores de datos | Estándar de facto | Marginal para clústeres Hadoop/Spark “clásicos” | No es SO de clúster |
| Hadoop / Spark / Kafka nativos | Ecosistema natural | Posible con fricción o capas extra | Más como cliente de desarrollo que como nodo |
| Contenedores / Kubernetes | Camino principal | Mejor vía WSL2/Linux remoto para muchos flujos | Buen cliente; producción sigue siendo Linux |
| Estación de desarrollo | Excelente | Excelente con WSL2 | Excelente como laptop de desarrollo |
| Automatización por shell / SSH | Cultura nativa | Existe, distinta | Muy buena en local; producción ≠ laptop |
| Operación de clúster real | Cotidiana | Poco habitual como SO de nodo de datos | No aplica como nodo típico |
Lectura práctica:
- macOS puede ser una estación de trabajo formidable.
- Windows deja de ser un obstáculo serio gracias a WSL2.
- Producción de datos masivos — nodos, brokers, workers, orquestadores — sigue hablando Linux.
Buenas prácticas: desarrolla cerca de producción. Si tu laptop es Windows, WSL2 no es un “apaño”: es la forma correcta de acercar tu entorno al clúster.
→ Anterior: Contenedores · Siguiente: Distribuciones
Distribuciones relevantes y por qué Ubuntu 24.04 LTS
Un mismo kernel, muchos “sabores”. La distribución decide empaquetado, ciclo de soporte, herramientas por defecto y convenciones.
| Distro | Perfil | Cuándo la verás en datos |
|---|---|---|
| Ubuntu | Amigable, documentación abundante, LTS predecible | Labs, muchos servidores, ciencia de datos, cloud images |
| Debian | Estabilidad y sobriedad | Bases sólidas; Ubuntu nace de aquí |
| RHEL / Rocky / Alma | Mundo empresarial y soporte formal | Clústeres corporativos, vendors tradicionales |
| Amazon Linux | Optimizada para AWS | EMR y cargas cloud en ese ecosistema |
| SUSE | Entornos corporativos específicos | Menos “default” en tutorials, presente en enterprise |
Ruta principal de esta serie: Ubuntu 24.04 LTS.
LTS significa Long Term Support: un ciclo largo de actualizaciones de seguridad y estabilidad. Para aprender y para montar laboratorios serios, eso vale oro.
Alternativa compatible: Ubuntu 22.04 LTS.
Si tu entorno ya la tiene instalada y estable, no necesitas romper nada solo por el número de versión. Los conceptos de este notebook aplican igual. Cuando instales de cero, prefiere 24.04.
Buenas prácticas: documenta la versión exacta de tu distro en un README del laboratorio. En equipos reales, “funciona en mi Linux” no es una frase útil; “Ubuntu 24.04.x” sí lo es.
→ Anterior: Comparativa · Siguiente: Verificación del entorno
Lectura de la verificación y puente a la instalación
Ejecuta la celda anterior en Bash dentro de Ubuntu (WSL o nativo). No pegues ese bloque en PowerShell: fallará o mentirá.
Qué mirar en la salida real de tu máquina (sin inventar valores aquí):
uname -a— confirma que hay un kernel Linux.PRETTY_NAME/VERSION— idealmente Ubuntu 24.04 LTS; 22.04 LTS es alternativa válida.HOME— tu casa en Linux; ahí vivirábigdata_linux_lab.- Directorio de práctica — si dice
no, es normal: lo creamos pronto.
Escenarios típicos
| Situación | Qué hacer |
|---|---|
| Ya tienes Ubuntu 24.04 en WSL2 | Puedes leer la sección 3 y saltar al final del laboratorio para verificar |
| Tienes Ubuntu 22.04 estable | Compatible; sigue; anota la versión |
| Estás en Windows sin WSL | La sección 4 es tu camino crítico |
| La celda falló porque el kernel del notebook no es Bash | Ábrela en una terminal Ubuntu o configura un kernel Bash |
Caso real: el primer diagnóstico remoto en un equipo de datos suele ser exactamente este: ¿qué kernel?, ¿qué distro?, ¿quién soy?, ¿dónde estoy?
Convencidos del porqué, toca elegir el cómo instalarlo sin romper tu flujo de trabajo diario.
→ Anterior: Distribuciones · Siguiente: Sección 3
3. Instalación: el panorama completo
Instalar Linux no es un acto religioso. Es una decisión de ingeniería con trade-offs.
Puedes reemplazar tu sistema, convivir con él, virtualizarlo, probarlo sin instalarlo o —si estás en Windows— integrarlo con WSL2. Todas las rutas son válidas en algún contexto. Para esta serie, profundizamos en la que mejor equilibra fricción diaria y fidelidad a producción para quienes trabajan en Windows: WSL2 + Ubuntu 24.04 LTS.
flowchart TD
A[Necesitas Linux] --> B[Nativa]
A --> C[Dual boot]
A --> D[Máquina virtual]
A --> E[Live USB]
A --> F[WSL2]
F --> G[Ubuntu 24.04 LTS]
TODO MEDIUM: Exportar este diagrama como PNG o SVG.
→ Anterior: Verificación · Siguiente: Tabla de decisión
Tabla de decisión: qué opción elegir
| Opción | Qué es | Mejor para | Evitar cuando |
|---|---|---|---|
| Nativa (bare metal) | Linux es el único SO del disco | Rendimiento máximo, servidores, labs dedicados | No puedes prescindir de Windows en esa máquina |
| Dual boot | Eliges SO al arrancar | Usar ambos sistemas “de verdad” | No quieres particionar ni reiniciar sin cesar |
| Máquina virtual | Linux dentro de VirtualBox/VMware/Hyper-V | Snapshots, experimentos, simular varios nodos | Tu RAM/CPU apenas alcanza para el host |
| Live USB | Arrancas Linux sin instalar | Probar hardware o rescatar datos | Necesitas un entorno persistente de trabajo |
| WSL2 | Kernel Linux real integrado en Windows | Desarrollo diario, esta serie, baja fricción | Necesitas un laboratorio multinodo “clásico” muy aislado |
Recomendación de este notebook
- Estás en Windows 10/11 y quieres aprender Big Data con seriedad → WSL2 + Ubuntu 24.04 LTS.
- Quieres practicar administración multinodo con capturas de estado → añade una VM más adelante.
- Montas un servidor o un lab dedicado → nativa o imagen cloud.
Error común: tratar WSL2 como “un Ubuntu de juguete”. Para desarrollo de datos es un Linux real. Sus límites aparecen en escenarios específicos de red, servicios e I/O — por eso los veremos con honestidad.
→ Anterior: Panorama · Siguiente: Arquitectura WSL2
Arquitectura conceptual de WSL2
¿Qué es WSL2?
Windows Subsystem for Linux 2 permite ejecutar un entorno Linux genuinamente útil dentro de Windows, con un kernel Linux real gestionado por Microsoft, no una capa de compatibilidad superficial al estilo de las primeras aproximaciones.
¿Por qué existe?
Porque millones de personas desarrollan en Windows y despliegan en Linux. Forzar dual boot solo para compilar, probar scripts o hablar con Docker/Kubernetes añade fricción innecesaria.
¿Cómo funciona (intuición)?
Windows hospeda una máquina virtual ligera. Dentro corre el kernel Linux. Encima instalas una distro (Ubuntu). Desde Windows puedes lanzar distros; desde Ubuntu ves tu disco Windows montado bajo /mnt/c.
flowchart LR
W[Windows 10/11] --> P[WSL2]
P --> K[Kernel Linux]
K --> U[Ubuntu 24.04 LTS]
U --> H[Home Linux ~/]
W --> M[/mnt/c ...]
TODO MEDIUM: Exportar este diagrama como PNG o SVG.
¿Cuándo usarlo?
Desarrollo local, aprendizaje, clientes cloud, prototipos, pipelines ligeros, preparación de demos.
¿Cuándo no basta?
Cuando necesitas comportamiento idéntico a un servidor bare-metal, redes avanzadas muy específicas, o un clúster multinodo con topología fiel. Ahí entran VM, cloud o metal.
TODO: verificar fuente y fecha antes de publicar. — detalles de arquitectura WSL2 según documentación oficial Microsoft.
Error común: instalar una distro y quedarte en WSL 1 sin mirar la columna
VERSIONdewsl -l -v.
→ Anterior: Tabla de decisión · Siguiente: Checklist
Checklist pre-instalación
Antes del laboratorio, confirma esto en voz alta (o en una nota):
Buenas prácticas: cierra trabajo crítico, anota cada error textual y no copies comandos destructivos de foros sin entenderlos. En este notebook no formateamos discos ni tocamos particiones.
Si ya tienes Ubuntu funcionando en WSL2, igual te recomiendo leer el laboratorio: es tu mapa de diagnóstico cuando algo se rompa dentro de seis meses.
→ Anterior: Arquitectura WSL2 · Siguiente: Laboratorio WSL2
4. Laboratorio: instalando Ubuntu sobre WSL2
Este es el laboratorio extenso del Notebook 01. Al terminarlo deberías tener:
- WSL2 operativo
- Ubuntu 24.04 LTS instalado (o 22.04 LTS compatible)
- Una sesión Bash usable
- Claridad total sobre qué corre en PowerShell y qué corre en Ubuntu
Reglas de seguridad del laboratorio
- No borramos archivos de Windows.
- No ejecutamos formateos ni cambios de particiones.
- No automatizamos
sudodesde el notebook. - Si un paso pide administrador y no lo tienes, detente y solicita el permiso; no improvises.
Resultado esperado: una sesión Ubuntu usable y la certeza de que tu laboratorio Linux está a un comando de distancia.
→ Siguiente: Paso 1
Paso 1: habilitar e instalar WSL (PowerShell)
Consola: PowerShell (Windows)
Preferiblemente Ejecutar como administrador si tu política de equipo lo permite.
- Abre el menú Inicio.
- Escribe
PowerShell. - Clic derecho → Ejecutar como administrador (si puedes).
- Ejecuta:
wsl --installEn instalaciones recientes, este comando habilita los componentes necesarios e instala una distribución por defecto. Puede solicitar reinicio. Reinicia si Windows lo pide; no es un adorno.
Después del reinicio, abre otra vez PowerShell y revisa el estado:
wsl --status
wsl -l -vQué mirar (sin memorizar una salida inventada):
- Que WSL responda sin error de comando no reconocido.
- Que exista al menos una distro listada, o que el sistema quede listo para instalar Ubuntu en el paso 2.
- La columna de versión, cuando aparezca: queremos 2.
Si wsl no se reconoce, Windows está incompleto o la sesión no tiene los componentes. Ve a Solución de problemas.
Error común: ejecutar PowerShell sin privilegios suficientes y leer el mensaje a medias. El texto del error importa: cópialo completo.
Paso 2: instalar Ubuntu 24.04 LTS
Consola: PowerShell (Windows)
Lista distros disponibles:
wsl --list --onlineInstala Ubuntu 24.04 LTS de forma explícita:
wsl --install -d Ubuntu-24.04Si en el catálogo online el nombre aparece con otra etiqueta exacta, usa esa etiqueta; no inventes el identificador. La meta es Ubuntu 24.04 LTS.
Alternativa compatible: si tu organización estandariza 22.04:
wsl --install -d Ubuntu-22.04También puedes instalar desde Microsoft Store buscando “Ubuntu 24.04 LTS”. El resultado deseado es el mismo: una distro lanzable con wsl.
Verifica:
wsl -l -vDeberías ver tu Ubuntu en la lista. Aún no interpretemos la columna VERSION a la ligera: eso es el paso 3.
Al primer arranque, Ubuntu pedirá nombre de usuario UNIX y contraseña. Elige un usuario habitual (minúsculas) y una contraseña que recuerdes. Cuando escribas la contraseña, no verás asteriscos: es normal en Linux.
Buenas prácticas: ese usuario será tu identidad diaria. No uses
rootcomo cuenta de trabajo.
Paso 3: verificar que estás en WSL 2
Consola: PowerShell (Windows)
wsl -l -vBusca tu distro (por ejemplo Ubuntu-24.04) y la columna VERSION.
| VERSION | Significado | Acción |
|---|---|---|
| 2 | Correcto para esta serie | Continúa |
| 1 | WSL antiguo para este propósito | Migra a 2 |
Si está en 1, migra (puede tardar; hazlo cuando puedas interrumpir el trabajo):
wsl --set-version Ubuntu-24.04 2Sustituye Ubuntu-24.04 por el nombre exacto que te mostró wsl -l -v.
Opcional: dejar WSL2 por defecto para futuras distros:
wsl --set-default-version 2Error común: instalar bien Ubuntu y operar meses en WSL1 por no mirar esa columna. Los síntomas suelen aparecer como rarezas de rendimiento o compatibilidad, no como un cartel rojo.
Paso 4: primer acceso e integración Windows ↔︎ Linux
Abrir Ubuntu
- Desde el menú Inicio: “Ubuntu 24.04”.
- O desde PowerShell:
wsl -d Ubuntu-24.04A partir de aquí, los comandos son Bash (Ubuntu) salvo que indiquemos lo contrario.
pwd
ls /
ls /mntCómo pensar las rutas
| Ruta | Qué es |
|---|---|
/home/tu_usuario o ~ |
Tu hogar Linux. Aquí debes trabajar. |
/mnt/c |
El disco C: de Windows, visible desde Linux. |
/mnt/c/Users/... |
Tu perfil de Windows, accesible para copiar archivos puntuales. |
Puedes leer archivos de Windows desde /mnt/c. Eso no significa que debas clonar repositorios enormes ni guardar datasets pesados allí.
Reto corto: localiza tu carpeta de usuario de Windows desde Ubuntu (
/mnt/c/Users/...) usando sololsycd. No borres nada. No muevas nada. Solo observa.
→ Anterior: Paso 3 · Siguiente: Rendimiento
Buenas prácticas de rendimiento en WSL2
WSL2 es Linux real, pero el puente con el disco de Windows tiene costo.
Regla de oro: tus proyectos de datos viven en el filesystem Linux:
/home/<usuario>/...
no en:
/mnt/c/Users/<usuario>/...
| Ubicación | Uso sensato |
|---|---|
~/proyectos o ~/bigdata_linux_lab |
Código, datos de lab, clones git, entornos |
/mnt/c/... |
Intercambio puntual de archivos con Windows |
En producción… WSL2 brilla como estación de desarrollo. Un clúster real sigue siendo Linux nativo o instancias cloud. No confundan “puedo aprender aquí” con “esto es el cluster de producción”.
Si alguna vez necesitas apagar WSL por completo desde Windows (mantenimiento), el comando existe en PowerShell (wsl --shutdown). Úsalo solo cuando entiendas que cerrará tus sesiones Linux abiertas.
Solución de problemas (WSL2 + Ubuntu)
| Síntoma | Causa probable | Mitigación segura |
|---|---|---|
wsl no se reconoce |
Componentes no instalados / PATH / política | Reejecutar instalación con admin; actualizar Windows |
| Error de virtualización | BIOS/UEFI sin virtualización | Habilitar SVM/VT-x con dueño del equipo; no desactivar antivirus al azar |
| Distro en VERSION 1 | Instalación antigua o default incorrecto | wsl --set-version <NombreExacto> 2 |
| No puedes elevar admin | Política corporativa | Solicitar instalación a TI; no “saltar” seguridad |
| Fallo descargando distro | Red, Store, proxy | Reintentar; probar Store; revisar proxy corporativo |
| Ubuntu pide usuario en bucle | Instalación incompleta | Cerrar, abrir de nuevo; si persiste, reinstalar la distro, no formatear Windows |
Regla de oro de remedios: ninguna solución de este notebook incluye formatear C:, borrar particiones o desactivar defensas del sistema como primer paso.
TODO: verificar fuente y fecha antes de publicar. — mensajes de error exactos y pasos oficiales Microsoft/Ubuntu que se citen en la versión Medium.
Si ya tienes Bash respondiendo, ejecuta el script de verificación de la siguiente celda.
→ Anterior: Rendimiento · Siguiente: Script de verificación
# Script de verificación del laboratorio WSL2 / Ubuntu
# Consola: Bash (Ubuntu)
# Seguridad: solo lectura. Sin sudo. Sin modificar configuraciones.
set -euo pipefail
echo "=== Kernel ==="
uname -a
echo
echo "=== Distro ==="
if [ -f /etc/os-release ]; then
# shellcheck disable=SC1091
. /etc/os-release
echo "PRETTY_NAME=${PRETTY_NAME:-}"
echo "VERSION_ID=${VERSION_ID:-}"
else
echo "Sin /etc/os-release"
fi
echo
echo "=== Identidad ==="
echo "hostname=$(hostname)"
echo "whoami=$(whoami)"
echo "HOME=$HOME"
echo "SHELL=${SHELL:-}"
echo
echo "=== Espacio en el home ==="
df -h "$HOME"
echo
echo "=== ¿WSL? (indicador suave) ==="
if grep -qi microsoft /proc/version 2>/dev/null; then
echo "Indicio de entorno Microsoft WSL en /proc/version"
else
echo "No se observó firma Microsoft en /proc/version (puede ser Linux nativo o VM)"
fi
echo
echo "=== Directorio de práctica ==="
if [ -d "$HOME/bigdata_linux_lab" ]; then
echo "bigdata_linux_lab=sí"
ls -la "$HOME/bigdata_linux_lab"
else
echo "bigdata_linux_lab=no (se crea en la sección 5)"
fi
echo
echo "Verificación completada."Interpretación del script y checklist de éxito
Usa tu salida real. Marca solo lo que puedas afirmar:
Si el script falló a medias, copia el mensaje de error y vuelve a Solución de problemas. No improvises con rm ni con herramientas gráficas de particionado.
Ya tienes Ubuntu. El siguiente ritual de todo ingeniero serio: entrar, actualizar con criterio y dejar el sistema listo para trabajar.
5. Primer ingreso a Ubuntu
Instalar es el trámite. Configurar con higiene es el oficio.
En esta sección vas a:
- entender tu identidad en el sistema
- actualizar paquetes con conciencia
- instalar un set mínimo de herramientas
- crear el directorio de práctica
~/bigdata_linux_lab
Consola a partir de aquí: Bash (Ubuntu)
salvo que se indique PowerShell de forma explícita.
Importante: este notebook no ejecuta sudo por ti. Cuando veas un comando con sudo, léelo, entiéndelo y ejecútalo tú en la terminal si tienes privilegios y estás de acuerdo.
→ Siguiente: Identidad y actualización
Identidad, prompt y actualización del sistema
Tu prompt suele parecerse a algo como:
usuario@host:ruta$
Eso ya te está diciendo tres cosas: quién eres, en qué máquina estás y en qué carpeta trabajas.
Ejecuta en Bash:
whoami
hostname
pwdActualizar el sistema
¿Qué es? Refrescar metadatos de paquetes (update) y aplicar actualizaciones disponibles (upgrade).
¿Por qué existe? Seguridad y estabilidad. Un lab desactualizado acumula sorpresas.
¿Cuándo? Tras instalar la distro y, periódicamente, antes de montar stacks grandes.
En tu terminal Bash — de forma manual — puedes ejecutar:
sudo apt update
sudo apt upgradeapt update no instala el mundo: actualiza la lista de lo disponible. apt upgrade puede descargar e instalar cambios; toma tiempo y pide confirmación.
Error común: creer que la contraseña está rota porque no aparecen asteriscos al escribirla. En muchos prompts de
sudo, el cursor no muestra nada. Escribe con cuidado y pulsa Enter.
Si no tienes permisos sudo, puedes seguir leyendo el notebook y practicar todo lo que no requiera administración. Pide el privilegio antes de instalar paquetes del sistema.
→ Anterior: Primer ingreso · Siguiente: Herramientas básicas
Herramientas básicas del entorno
No vamos a convertir Ubuntu en un bazar. Solo un set mínimo con justificación de ingeniero de datos:
| Paquete | Para qué |
|---|---|
curl |
Hablar con APIs y endpoints HTTP desde consola |
wget |
Descargar artefactos |
git |
Versionar código y configs |
tree |
Ver árboles de directorios con claridad |
htop |
Observar procesos de forma interactiva (si está en los repos) |
unzip / tar (suele venir) |
Empaquetar e inspeccionar entregables |
ca-certificates |
Confianza TLS al descargar |
Instalación manual en Bash (tú la ejecutas; el notebook no eleva privilegios):
sudo apt install -y curl wget git tree htop unzip ca-certificatesSi htop no estuviera disponible en tu mirror, instala el resto y continúa: no es bloqueante para este capítulo.
En producción… los equipos serios no configuran nodos “a mano para siempre”: usan imágenes doradas, Ansible, cloud-init o similares. Aprender el
aptmanual te enseña el verbo; la madurez operativa es reproducirlo sin click improvisado.
→ Anterior: Actualización · Siguiente: Crear laboratorio
# Crear el directorio de práctica
# Consola: Bash (Ubuntu)
# Escritura SOLO dentro de $HOME/bigdata_linux_lab
# Sin sudo. Sin rm. Sin tocar /etc, /var, /usr ni /mnt/c
set -euo pipefail
LAB="${HOME}/bigdata_linux_lab"
mkdir -p "${LAB}/raw" \
"${LAB}/clean" \
"${LAB}/out" \
"${LAB}/scripts" \
"${LAB}/logs" \
"${LAB}/notes"
cat > "${LAB}/notes/README.txt" <<'EOF'
Big Data desde Cero — Notebook 01
Directorio de práctica: ~/bigdata_linux_lab
raw/ datos crudos de laboratorio
clean/ datos limpios intermedios
out/ salidas y entregables
scripts/ scripts propios
logs/ salidas de verificación
notes/ bitácora personal
EOF
# Bitácora de creación (solo lectura del entorno + eco)
{
echo "creado=$(date -Iseconds)"
echo "usuario=$(whoami)"
echo "host=$(hostname)"
echo "home=${HOME}"
} > "${LAB}/logs/lab_created.txt"
echo "Laboratorio listo en: ${LAB}"
ls -la "${LAB}"# Verificación post-configuración inicial
# Consola: Bash (Ubuntu)
# Solo lectura + comprobaciones. Sin sudo. Sin borrados.
set -euo pipefail
LAB="${HOME}/bigdata_linux_lab"
echo "=== SO ==="
uname -a
if [ -f /etc/os-release ]; then
# shellcheck disable=SC1091
. /etc/os-release
echo "PRETTY_NAME=${PRETTY_NAME:-}"
fi
echo
echo "=== Laboratorio ==="
if [ ! -d "$LAB" ]; then
echo "ERROR: no existe $LAB — ejecuta primero la celda de creación."
exit 1
fi
ls -la "$LAB"
echo
echo "=== Herramientas (si están instaladas) ==="
for cmd in curl wget git tree; do
if command -v "$cmd" >/dev/null 2>&1; then
echo "$cmd=$(command -v "$cmd")"
else
echo "$cmd=NO_ENCONTRADO"
fi
done
echo
echo "=== Espacio del home ==="
df -h "$HOME"
# Guarda un snapshot de verificación para tu bitácora
{
date -Iseconds
uname -a
command -v curl || true
command -v git || true
} > "${LAB}/logs/post_setup_check.txt"
echo
echo "Verificación guardada en ${LAB}/logs/post_setup_check.txt"Buenas prácticas del primer día (y errores comunes)
Buenas prácticas
- Trabaja como usuario normal, no como root.
- Mantén código y datos de aprendizaje dentro de
~/bigdata_linux_lab. - Anota tu
PRETTY_NAMEennotes/. - Lee cualquier comando con
sudoantes de pulsar Enter. - Actualiza con criterio; no pegues pipelines opacos de internet.
Errores comunes
| Error | Por qué duele | Antídoto |
|---|---|---|
Guardar el lab en /mnt/c |
I/O lento y dolores raros | Todo bajo ~ |
Ignorar fallos de apt |
Bases rotas después | Leer el error; no “forzar” a ciegas |
Trabajar siempre con sudo |
Permisos imposibles de depurar | sudo solo cuando hace falta |
| No documentar la versión | “En mi máquina funciona” | Bitácora en notes/ |
En producción… el primer día bien hecho se parece más a una checklist que a una improvisación heroica.
El sistema ya responde. Ahora viene la pregunta de arquitecto: cuando escribes un comando, ¿quién habla con quién?
→ Anterior: Verificación · Siguiente: Sección 6
6. Arquitectura de Linux
Un sistema operativo existe para una promesa: que muchas aplicaciones compartan un hardware sin el caos. Esa promesa se cumple por capas.
En Linux, la imagen mental que te acompañará el resto de la serie es esta:
Usuario / aplicaciones → Shell → Kernel → Hardware
Tú casi nunca “hablas con el disco”. Hablas con un programa. El programa habla con el shell o hace llamadas al sistema. El kernel arbitra. El hardware obedece.
Pregunta al lector: cuando lanzas un job de Spark, ¿con qué capa interactúas tú directamente en el día a día?
→ Siguiente: Diagrama de capas
Diagrama de capas de Linux
flowchart TD
U[Usuario / Aplicaciones] --> S[Shell]
S --> K[Kernel]
K --> H[Hardware CPU RAM Disco Red]
TODO MEDIUM: Exportar este diagrama como PNG o SVG.
| Capa | ¿Qué es? | ¿Por qué existe? | ¿Qué ves tú? |
|---|---|---|---|
| Usuario / apps | Programas: Python, Spark, editores, navegadores | Resolver problemas de negocio | Procesos, puertos, logs de app |
| Shell | Intérprete de comandos (Bash, Zsh…) | Traducir tu intención en ejecución | Prompt, scripts, pipes |
| Kernel | Núcleo del SO | Administrar recursos y dispositivos | /proc, /sys, syscalls (indirectas) |
| Hardware | CPU, RAM, disco, red | Ejecutar de verdad | Fallos físicos, capacidad, latencia |
Si depuras en la capa equivocada, puedes pasar horas “optimizando Spark” cuando el disco está lleno, o culpando a la red cuando el proceso simplemente no arrancó.
→ Anterior: Arquitectura · Siguiente: Analogía y demonios
Analogía, procesos y demonios en Big Data
Imagina un restaurante de alta rotación.
- Tú eres el cliente (usuario).
- El mesero toma tu pedido (shell).
- La cocina coordina fuegos, tiempos e inventario (kernel).
- Los fogones, neveras y cables son el hardware.
No entras a la cocina a abrir el gas cada vez que quieres un plato. Pides. El sistema organiza.
En Big Data, Hadoop, Spark o Kafka no son “la nube”. Son procesos — a menudo demonios: servicios de larga vida que corren en segundo plano — sobre Linux.
flowchart LR
C[Comando o servicio] --> S[Shell / supervisor del sistema]
S --> K[Kernel]
K --> R[CPU / RAM / Disco / Red]
TODO MEDIUM: Exportar este diagrama como PNG o SVG.
| Componente típico | Se ve en Linux como |
|---|---|
| NameNode / DataNode | Procesos de larga vida + logs + puertos |
| Spark worker / driver | Procesos JVM con CPU y memoria visibles |
| Broker Kafka | Demonio con logs y almacenamiento en disco |
| Scheduler (Airflow) | Procesos + base + logs |
Espacio de usuario vs. espacio de kernel (intuición): tus apps viven “arriba”, con restricciones. El kernel vive “abajo”, con privilegio real sobre el hardware. Por eso un bug de app suele matar un proceso, y un panic de kernel tumba la máquina.
Para pensar: si Spark “se queda sin memoria”, ¿estás ante un problema de aplicación, de límites del sistema, o de hardware insuficiente? A veces son los tres. La arquitectura te obliga a preguntar en orden.
→ Anterior: Diagrama de capas · Siguiente: Inspección práctica
# Inspección práctica ligera de la arquitectura
# Consola: Bash (Ubuntu)
# Solo lectura. Sin sudo. Sin matar procesos. Sin escribir en /proc.
set -euo pipefail
LAB="${HOME}/bigdata_linux_lab/logs"
mkdir -p "$LAB"
echo "=== Proceso de esta shell ==="
ps -p $$ -o pid,ppid,cmd
echo
echo "=== Una mirada a /proc del proceso actual ==="
ls "/proc/$$" | head -n 20
echo
echo "=== Memoria (primeras líneas) ==="
head -n 5 /proc/meminfo
echo
echo "=== CPU (primeras líneas) ==="
head -n 5 /proc/cpuinfo
{
echo "timestamp=$(date -Iseconds)"
ps -p $$ -o pid,ppid,cmd
head -n 5 /proc/meminfo
} > "${LAB}/architecture_probe.txt"
echo
echo "Nota guardada en ${LAB}/architecture_probe.txt"
echo "Idea clave: el kernel expone información del sistema como si fueran archivos."Cierre de arquitectura y puente al sistema de archivos
Acabas de ver una idea que atraviesa todo Unix: el kernel habla en archivos y descriptores. /proc no es una carpeta de documentos personales; es una interfaz viva.
Síntesis mínima:
- Tú operas desde el espacio de usuario.
- El shell es tu volante cotidiano.
- El kernel reparte recursos.
- El hardware impone límites físicos.
El kernel administra. Tú, además, navegas un territorio: directorios, permisos, logs y datos. Ese territorio tiene mapa. Se llama sistema de archivos.
→ Anterior: Inspección · Siguiente: Sección 7
7. Sistema de archivos
En Linux todo cuelga de un único árbol cuya raíz es /.
No hay C: y D: como lenguajes distintos del sistema. Un disco nuevo no “aparece como letra mágica”: se monta en algún punto del árbol. Esa decisión de diseño —heredada de Unix— es una de las razones por las que automatizar infraestructura con texto funciona tan bien.
¿Qué es el sistema de archivos (para ti, ingeniero de datos)?
El mapa donde viven configuraciones, binarios, logs, datos y dispositivos.
¿Por qué existe esta jerarquía?
Para que cualquier persona (y cualquier script) sepa dónde mirar sin adivinar.
Sabías que… la frase clásica “todo es un archivo” no es poesía: dispositivos, sockets e incluso información del kernel se exponen con metáforas de archivo. Por eso
ls /procse siente raro… y poderoso.
→ Siguiente: Directorios esenciales
Directorios esenciales del árbol
flowchart TD
R["/"] --> H["/home"]
R --> E["/etc"]
R --> V["/var"]
R --> U["/usr"]
R --> O["/opt"]
R --> T["/tmp"]
TODO MEDIUM: Exportar este diagrama como PNG o SVG.
| Ruta | ¿Qué es? | ¿Por qué existe? | Ejemplo en datos |
|---|---|---|---|
/ |
Raíz del árbol | Origen único de rutas absolutas | Punto de partida de cualquier path |
/home |
Hogares de usuarios | Aislar el trabajo de cada persona | ~/bigdata_linux_lab |
/etc |
Configuración del sistema y servicios | Separar config de código | configs de red, servicios, a veces apps |
/var |
Datos variables | Logs, colas, estado que cambia | /var/log, colas, cachés |
/usr |
Programas y recursos compartidos de usuario | Organizar software “del sistema” | binarios en /usr/bin |
/opt |
Software opcional / de terceros | Instalar stacks sin mezclarlos del todo | Hadoop, Spark, herramientas vendor |
/tmp |
Temporal | Espacio de paso; no archivo eterno | dumps temporales de jobs |
¿Cuándo usar cada uno (criterio)?
- Tu trabajo diario de aprendizaje →
/home(nuestro lab). - “¿Por qué el servicio no arranca?” → mira configs en
/etcy logs en/var. - “¿Dónde dejaron el Spark de la empresa?” → a menudo
/opto rutas documentadas del equipo.
→ Anterior: FS intro · Siguiente: Directorios del sistema vivo
Directorios del sistema vivo
Estos directorios confunden al principio porque no se comportan como carpetas de documentos.
| Ruta | ¿Qué es? | ¿Se edita a mano? | Cómo se usa en la práctica |
|---|---|---|---|
/dev |
Interfaces a dispositivos | Casi nunca | Discos, terminales, dispositivos lógicos |
/proc |
Interfaz al kernel (procesos, memoria, etc.) | No como archivos normales | Diagnóstico: meminfo, PIDs, uptime |
/sys |
Interfaz a dispositivos/buses vía sysfs | No como playground | Inventario y atributos de hardware lógico |
/run |
Estado volátil de tiempo de ejecución | No | PIDs de servicios, sockets temporales |
/srv |
Datos de servicios servidos por este host | Según diseño del equipo | Contenidos servidos; menos común en laptops |
Error común: intentar “limpiar disco” borrando cosas dentro de
/proco/sys. No son datasets. Son ventanas al sistema.
¿Cuándo te importan en Big Data?
Cuando un nodo “no tiene memoria”, “no ve el disco”, “el servicio no deja PID” o necesitas evidencia antes de reiniciar nada.
→ Anterior: Directorios esenciales · Siguiente: Big Data en el disco
Dónde vive el stack Big Data en el disco
No hay una ley universal única —cada instalación documenta sus rutas— pero el patrón se repite:
| Tipo de artefacto | Dónde suele vivir | Por qué |
|---|---|---|
| Configuración | /etc/... o conf/ de la app |
Debe sobrevivir a redeploys con control |
| Logs | /var/log/... o volumen dedicado |
Crece sin aviso; hay que rotarlo |
| Binarios / stacks | /opt/..., /usr/local/... |
Separar producto del SO |
| Datos | discos montados (/data, /mnt/...) |
No ahogar la raíz / |
| Trabajo personal / labs | /home/... |
Exactamente nuestro caso |
Rutas absolutas vs relativas (mínimo vital)
| Notación | Significado |
|---|---|
/home/ana/lab |
Absoluta: desde la raíz |
./out |
Relativa: desde el directorio actual |
../raw |
Un nivel arriba, luego raw |
~ |
Atajo a tu $HOME |
En esta serie, la convención es férrea:
~/bigdata_linux_lab
En producción… separar disco del sistema operativo y discos de datos no es capricho: es la diferencia entre “se llenó un volumen de datos” y “el nodo no puede ni escribir logs porque
/está al 100%”.
→ Anterior: Sistema vivo · Siguiente: Exploración guiada
# Exploración guiada del árbol
# Consola: Bash (Ubuntu)
# Lectura del sistema + notas SOLO en ~/bigdata_linux_lab
set -euo pipefail
LAB="${HOME}/bigdata_linux_lab"
NOTES="${LAB}/notes"
LOGS="${LAB}/logs"
mkdir -p "$NOTES" "$LOGS"
echo "=== Raíz (ls /) ==="
ls /
echo
echo "=== Home ==="
ls -la "$HOME"
echo
echo "=== Laboratorio ==="
ls -la "$LAB"
# Guardar un listado de la raíz para estudio (no modifica el sistema)
ls / > "${LOGS}/root_listing.txt"
cat > "${NOTES}/filesystem_map.txt" <<'EOF'
Mapa personal — Notebook 01
/ raíz
/home usuarios
/etc configuración
/var logs y datos variables
/opt software opcional (stacks)
/tmp temporal
/proc /sys interfaces del kernel (no "limpiar")
EOF
echo
echo "Notas escritas en:"
echo " ${LOGS}/root_listing.txt"
echo " ${NOTES}/filesystem_map.txt"# Mirar /proc, /sys y /dev sin miedo
# Consola: Bash (Ubuntu)
# Solo lectura. Sin sudo. Sin escritura en /proc ni /sys.
set -euo pipefail
LAB="${HOME}/bigdata_linux_lab/notes"
mkdir -p "$LAB"
echo "=== Entradas en /proc (muestra) ==="
ls /proc | head -n 15
echo
echo "=== Uptime (vía /proc) ==="
head -n 1 /proc/uptime
echo
echo "=== Entradas en /sys (muestra) ==="
ls /sys | head -n 15
echo
echo "=== Entradas en /dev (muestra) ==="
ls /dev | head -n 15
{
echo "timestamp=$(date -Iseconds)"
echo "--- /proc/uptime ---"
cat /proc/uptime
echo "--- head /proc/meminfo ---"
head -n 8 /proc/meminfo
} > "${LAB}/proc_sys_observations.txt"
echo
echo "Observaciones guardadas en ${LAB}/proc_sys_observations.txt"
echo "Recuerda: esto se observa, no se 'limpia'."Orientación en el disco: errores comunes y checklist
Errores comunes
| Error | Consecuencia | Antídoto |
|---|---|---|
Confundir / con ~ |
Comandos en el lugar equivocado | Mira el prompt; usa pwd |
Llenar / sin mirar /var |
Nodo inestable | Monitorear logs y volúmenes |
Datasets pesados en /mnt/c (WSL) |
Lentitud y rarezas | Datos en el home Linux |
Editar a ciegas en /etc |
Servicio roto | Backup + cambio mínimo + lectura |
Checklist de orientación
Reto corto: escribe en
~/bigdata_linux_lab/notes/una línea: dónde pondrías logs de un scheduler y dónde binarios de un motor de cómputo en un servidor serio. No hay una sola respuesta correcta; hay respuestas defendibles.
Ya conoces el territorio. Falta la ventana desde la que lo operas cada día.
→ Anterior: Exploración · Siguiente: Sección 8
8. La terminal
La terminal no es “lo negro raro para gente antigua”. Es el IDE de la infraestructura.
Desambiguemos de una vez:
| Término | ¿Qué es? |
|---|---|
| Terminal (o emulador de terminal) | La ventana/programa que recibe tu teclado y muestra texto |
| Shell | El programa que interpreta lo que escribes (bash, zsh…) |
| TTY | La abstracción de terminal del sistema; de ahí vienen ideas como “sesión de terminal” |
| Bash | Bourne Again Shell: el shell más común en Ubuntu por defecto |
| Zsh | Shell popular, muy usable con buen autocompletado; alternativa frecuente |
flowchart LR
T[Teclado / Terminal] --> S[Shell Bash/Zsh]
S --> K[Kernel]
K --> HW[Hardware]
TODO MEDIUM: Exportar este diagrama como PNG o SVG.
¿Por qué existe esta separación?
Porque puedes cambiar de shell sin cambiar de sistema, y puedes automatizar sin interfaz gráfica.
¿Cuándo usar la terminal en proyectos reales?
SSH a un nodo, inspeccionar logs, lanzar jobs, copiar artefactos, depurar contenedores, leer df a las 3 a.m. cuando el dashboard miente por omisión.
En este notebook priorizamos Bash. Zsh puede esperar; los conceptos se transfieren.
→ Siguiente: Variables y prompt
Prompt, HOME, PATH y variables de entorno
Una variable de entorno es un valor con nombre que procesos heredan. Configura comportamiento sin recompilar el mundo.
| Variable | ¿Qué es? | ¿Por qué importa? |
|---|---|---|
HOME |
Tu directorio home | Ancla de ~ y de configs de usuario |
USER |
Tu nombre de usuario | Identidad en scripts y prompts |
SHELL |
Shell por defecto | Qué intérprete te atiende |
PATH |
Lista de directorios donde buscar programas | Decide si comando se encuentra o no |
¿Cómo funciona PATH?
Cuando escribes ls, el shell no “se inventa” ls. Busca un ejecutable llamado ls en los directorios listados en PATH, en orden. Si no está, respondes al famoso:
command not found
flowchart TD
C[Comando escrito] --> P[¿Está en el PATH?]
P -->|sí| E[Ejecutar]
P -->|no| N[command not found]
TODO MEDIUM: Exportar este diagrama como PNG o SVG.
Autocompletado e historial (preview)
Tab completa nombres. Flecha arriba recorre historial. En el Notebook 02 los usaremos como músculo, no como anécdota.
Buenas prácticas: no ensucies
PATHcon rutas aleatorias pegadas de foros. En entornos serios, los cambios son deliberados y documentados.
→ Anterior: Terminal · Siguiente: Lab entorno
# Laboratorio corto — inspeccionar el entorno
# Consola: Bash (Ubuntu)
# Sin sudo. Sin modificar PATH de forma persistente.
set -euo pipefail
LAB="${HOME}/bigdata_linux_lab/notes"
mkdir -p "$LAB"
echo "HOME=$HOME"
echo "USER=${USER:-}"
echo "SHELL=${SHELL:-}"
echo "PWD=$(pwd)"
echo
echo "PATH (una entrada por línea):"
echo "$PATH" | tr ':' '\n'
{
echo "timestamp=$(date -Iseconds)"
echo "HOME=$HOME"
echo "USER=${USER:-}"
echo "SHELL=${SHELL:-}"
echo "PATH=$PATH"
} > "${LAB}/environment.txt"
echo
echo "Bitácora: ${LAB}/environment.txt"# Laboratorio corto — localizar ejecutables
# Consola: Bash (Ubuntu)
# Preview del Notebook 02. Sin instalar paquetes. Sin sudo.
set -euo pipefail
LAB="${HOME}/bigdata_linux_lab/notes"
mkdir -p "$LAB"
echo "=== command -v (preferido y portable) ==="
command -v bash
command -v ls
command -v pwd
echo
echo "=== type (builtin vs externo) ==="
type ls
type pwd
type command
{
echo "timestamp=$(date -Iseconds)"
echo -n "bash="
command -v bash
echo -n "ls="
command -v ls
} > "${LAB}/executables.txt"
echo
echo "Bitácora: ${LAB}/executables.txt"
echo "Si algo esencial falta, vuelve a la sección de herramientas básicas."Errores comunes del primer contacto con la terminal
| Error | Qué está pasando | Qué hacer |
|---|---|---|
command not found |
No está instalado o no está en PATH |
command -v; instalar con criterio; no adivinar |
| Rutas con espacios mal citadas | El shell parte argumentos | Usa comillas |
Pegar bloques con sudo sin leer |
Riesgo real | Leer línea a línea |
| Mezclar PowerShell y Bash | Sintaxis y comandos distintos | Mirar la etiqueta de consola |
| Miedo al prompt vacío tras contraseña | Feedback oculto normal | Confiar el mecanismo; reintentar con cuidado |
En producción… entras por SSH a un nodo y el modelo mental es el mismo: identidad,
pwd,PATH, logs, procesos. La laptop fue el ensayo; el clúster es la función.
Puente al Notebook 02
Ya tienes el territorio (sistema de archivos) y la ventana (terminal + entorno).
Falta el lenguaje con el que se opera un clúster de verdad: anatomía de comandos, filtros, pipes y un proyecto pequeño de punta a punta.
Eso es Dominando la Terminal para Big Data.
9. Lo que acabas de aprender
Hace un capítulo, Linux podía parecerte un requisito borroso en las ofertas laborales. Ahora tienes un mapa.
Puedes explicar por qué la industria de datos habla Linux.
Puedes instalar Ubuntu 24.04 LTS sobre WSL2 con método.
Puedes dibujar de memoria —o casi— la cadena Usuario → Shell → Kernel → Hardware.
Puedes caminar el árbol de archivos sin sentir que estás en un bosque aleatorio.
Puedes mirar HOME y PATH como lo que son: configuración del entorno, no magia.
Eso no es “saber de todo”. Es mejor: es dejar de estar perdido.
Para pensar: si mañana entras a un nodo remoto, ¿qué mirarías primero —
/, los procesos o tuPATH? No hay una única respuesta correcta. Hay un orden defendible según el síntoma.
→ Siguiente: Mapa conceptual
Mapa conceptual del Notebook 01
flowchart TD
A[Por qué Linux] --> B[Instalación WSL2 + Ubuntu 24.04]
B --> C[Primer setup]
C --> D[Arquitectura por capas]
D --> E[Sistema de archivos]
E --> F[Terminal Shell PATH]
F --> G[Listo para Notebook 02]
TODO MEDIUM: Exportar este diagrama como PNG o SVG.
Si puedes narrar este diagrama en voz alta en dos minutos, sin mirar el texto, este capítulo cumplió su trabajo.
→ Anterior: Lo aprendido · Siguiente: Autoevaluación
Autoevaluación de criterio
Responde honestamente con sí/no. No es un examen: es un espejo.
- ¿Puedo explicar la diferencia entre kernel y distribución?
- ¿Sé por qué Ubuntu 24.04 LTS es la ruta principal de este laboratorio?
- ¿Diferencio con claridad PowerShell (Windows) de Bash (Ubuntu)?
- ¿Verifiqué WSL 2 (
wsl -l -v) si mi ruta fue Windows? - ¿Puedo describir Usuario → Shell → Kernel → Hardware con una analogía propia?
- ¿Sé para qué sirven, a grandes rasgos,
/etc,/var,/homey/opt? - ¿Entiendo por qué
/procno se “limpia” como una carpeta de descargas? - ¿Puedo explicar qué problema resuelve
PATH? - ¿Mi trabajo práctico está en
~/bigdata_linux_lab? - ¿Sé qué queda deliberadamente para el Notebook 02?
Lo que aún no cubrimos (a propósito):
- anatomía profunda de un comando (flags, comodines, expansiones)
- laboratorio amplio de herramientas de consola
- pipes, redirecciones,
tee,xargs - mini-proyecto de logs de punta a punta
- operación cotidiana frente a Hadoop, Spark, Kafka, Airflow, Docker y Kubernetes
Eso no falta por olvido. Está diseñado para el siguiente capítulo, cuando ya no estás sobreviviendo al SO, sino usándolo.
→ Anterior: Mapa conceptual · Siguiente: Sección 10
10. Próximo notebook
Dominando la Terminal para Big Data
Ya tienes el territorio y la ventana.
En el siguiente capítulo aprendemos el lenguaje con el que se opera un clúster de verdad.
Trabajaremos dentro del mismo hogar de práctica:
~/bigdata_linux_lab
Allí construiremos músculo real: navegar, filtrar, encadenar comandos, entender pipes como idea hermana de MapReduce, y cerrar con un mini-proyecto que se sienta a trabajo — no a ejercicio ornamental.
flowchart LR
A[NB01 Fundamentos Linux] --> B[NB02 Dominando la Terminal]
B --> C[MapReduce]
TODO MEDIUM: Exportar este diagrama como PNG o SVG.
Reto de continuidad: antes de abrir el Notebook 02, deja Ubuntu actualizado a tu criterio y verifica que
~/bigdata_linux_labexiste con sus subcarpetas.
→ Anterior: Autoevaluación · Siguiente: Resumen
Resumen
En este notebook aprendimos:
- por qué Linux es el cimiento del ecosistema Big Data — servidores, nube, contenedores y clústeres
- cómo instalar y verificar Ubuntu 24.04 LTS sobre WSL2, distinguiendo PowerShell de Bash
- cómo pensar la arquitectura Usuario → Shell → Kernel → Hardware
- cómo orientarse en el sistema de archivos, incluyendo
/proc,/sys,/dev,/runy/srv - cómo funciona la terminal y el entorno del shell (
HOME,PATH, prompt)
Ahora comprendes el suelo sobre el que se construyen Hadoop, Spark y el resto de una plataforma moderna de datos.
En el siguiente artículo — Dominando la Terminal para Big Data — bajaremos las manos al teclado de verdad: comandos, pipes y un flujo de trabajo reproducible.
Recursos opcionales
Pocos enlaces. Alta señal. Verifica siempre la fecha de lo que leas.
- Documentación oficial de WSL (Microsoft Learn): instalación, versiones, buenas prácticas
- Notas de publicación y documentación de Ubuntu 24.04 LTS
- Filesystem Hierarchy Standard (FHS) — para entender el “porqué” de
/etc,/var,/opt…
- Manuales del sistema en tu propia máquina:
man bash(cuando lleguemos al Notebook 02, se volverá hábito)
TODO: verificar fuente y fecha antes de publicar. — URLs finales y fechas de consulta para la versión Medium.
Este notebook debe sostenerse solo. Los recursos son ampliaciones, no muletas.
¿Te resultó útil este artículo?
Si este notebook te ayudó a comprender mejor Big Data:
- compártelo con alguien que esté aprendiendo
- deja una pregunta en los comentarios
- sígueme para continuar esta serie
Cada nuevo artículo desarrolla una pieza adicional de una arquitectura moderna de Big Data.
Nos vemos en la siguiente publicación: Dominando la Terminal para Big Data.