1 ¿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 capítulo 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)
Antes de empezar
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.
Este libro propone otra ruta: cada capítulo se puede leer de corrido, practicarse 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 capítulo no supone conocimientos previos de Big Data y es la primera pieza del recorrido.
Cómo leer este capítulo
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 capítulo |
|---|---|---|
| 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 capítulo ocurre dentro de:
~/bigdata_linux_lab
No borramos archivos del sistema. No tocamos configuraciones críticas. Ningún bloque usa sudo sin avisarte. 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 siguiente capítulo: Dominando la terminal para Big Data.
1. ¿Qué construiremos en este libro?
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 este libro construiremos esa arquitectura de abajo hacia arriba. Linux es el cimiento. Encima aparecerán los contenedores, el sistema de archivos distribuido, el gestor de recursos del clúster y los motores de procesamiento: MapReduce, Spark y PySpark.
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.
Diagrama: el mapa completo del libro
Observa el recorrido completo. No necesitas dominarlo hoy. Necesitas ubicarte.

Estamos aquí: Linux — el sistema operativo sobre el que vive casi toda la infraestructura de datos.
| Tema | Pregunta que responde | Capítulos |
|---|---|---|
| Linux | ¿Sobre qué corre todo y cómo se opera desde la terminal? | 1–2 |
| Docker | ¿Cómo empaqueto y levanto la infraestructura igual en cualquier máquina? | 3 |
| Ecosistema Hadoop | ¿Qué piezas forman una plataforma Big Data? | 4 |
| HDFS | ¿Dónde viven los datos y cómo sobreviven a un fallo? | 5–6 |
| YARN | ¿Quién reparte CPU y memoria del clúster? | 7–8 |
| Cliente Spark | ¿Desde dónde envío trabajos al clúster? | 9 |
| MapReduce | ¿Cómo se piensa el procesamiento distribuido? | 10–11 |
| Spark | ¿Cómo se procesa con un motor moderno? | 12–13 |
| PySpark | ¿Cómo lo programo en Python? | 14–15 |
Dónde encaja este capítulo en el mapa
Este capítulo te deja con territorio y ventana: el sistema de archivos y la terminal, más un Ubuntu usable.
El siguiente capítulo, 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í?
¿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.
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.

| 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.
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.
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.
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.)
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.
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 este libro: 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 capítulo 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.
# 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."Lectura de la verificación y puente a la instalación
Copia el bloque anterior en una terminal 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 |
| El bloque falló con errores de sintaxis | Lo pegaste en PowerShell o CMD: ábrelo en una terminal de Ubuntu |
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.
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 este libro, profundizamos en la que mejor equilibra fricción diaria y fidelidad a producción para quienes trabajan en Windows: WSL2 + Ubuntu 24.04 LTS.

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, este libro, baja fricción | Necesitas un laboratorio multinodo “clásico” muy aislado |
Recomendación de este capítulo
- 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.
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.

¿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.
Error común: instalar una distro y quedarte en WSL 1 sin mirar la columna
VERSIONdewsl -l -v.
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 capítulo 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.
4. Laboratorio: instalando Ubuntu sobre WSL2
Este es el laboratorio extenso del capítulo. 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.
- Ningún bloque ejecuta
sudosin avisarte. - 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.
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 este libro | 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.
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 capítulo incluye formatear C:, borrar particiones o desactivar defensas del sistema como primer paso.
Si ya tienes Bash respondiendo, copia en tu terminal de Ubuntu el script de verificación que sigue.
# 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."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 capítulo 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.
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 capítulo y practicar todo lo que no requiera administración. Pide el privilegio antes de instalar paquetes del sistema.
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; los bloques del capítulo no elevan 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.
# 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 e Ingeniería de Datos — Capítulo 1
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?
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 del libro 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?
Diagrama de capas de Linux

| 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ó.
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.

| 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.
# 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.
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.
Directorios esenciales del árbol

| 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.
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.
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 este libro, 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%”.
# 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 — Capítulo 1
/ 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.
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 |

¿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 capítulo priorizamos Bash. Zsh puede esperar; los conceptos se transfieren.
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

Autocompletado e historial (preview)
Tab completa nombres. Flecha arriba recorre historial. En el siguiente capítulo 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.
# 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)
# Adelanto del siguiente capítulo. 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 siguiente capítulo
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.
Mapa conceptual del capítulo

Si puedes narrar este diagrama en voz alta en dos minutos, sin mirar el texto, este capítulo cumplió su trabajo.
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 siguiente capítulo?
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
Eso no falta por olvido. Está diseñado para el siguiente capítulo, Dominando la terminal para Big Data, cuando ya no estás sobreviviendo al SO, sino usándolo.
10. Próximo capítulo
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.

Reto de continuidad: antes de pasar al siguiente capítulo, deja Ubuntu actualizado a tu criterio y verifica que
~/bigdata_linux_labexiste con sus subcarpetas.
Resumen
En este capítulo 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 capítulo, 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 de Ubuntu 24.04 LTS
- Filesystem Hierarchy Standard (FHS) 3.0 — para entender el “porqué” de
/etc,/var,/opt…
- Manuales del sistema en tu propia máquina:
man bash(en el siguiente capítulo se volverá hábito)
Este capítulo debe sostenerse solo. Los recursos son ampliaciones, no muletas.