Instalar Hadoop en MacBook con chip Apple silicon (M1 o M2)
En este artículo te voy a mostrar cómo instalar Hadoop en tu MacBook M1 o M2.
Confirma que tu MacBook cumple las siguientes especificaciones:
- Un MacBook M1 o M2 (chip Apple silicon) con macOS Ventura 13.2.1 o superior
- 8 GB de RAM como mínimo
Los pasos de instalación
- Verificar e instalar el JDK de Java
- Activar el SSH del MacBook en los ajustes del sistema
- Descargar Hadoop desde el sitio oficial
- Configurar Hadoop (variable
JAVA_HOME, archivoscore-site.xml,hdfs-site.xml,mapred-site.xml,yarn-site.xml) - Formatear el NameNode de HDFS
- Iniciar los servicios de Hadoop
- Usar la interfaz de usuario de Hadoop
Requisitos previos: una terminal y un editor de texto o de código (VS Code, Sublime Text, Xcode, IntelliJ IDEA).
Paso 1: Verificar e instalar el JDK de Java
Ejecuta el siguiente comando para comprobar si Java está instalado:
java -version
Si Java no está instalado, descarga Java SE Development Kit 8 u 11 desde el sitio oficial de Oracle. Se recomienda la versión 11 para Hadoop.
Si tienes una versión incompatible (JDK 17, 19, 20...), elimínala:
cd /Library/Java/JavaVirtualMachines && ls
sudo rm -rf /Library/Java/JavaVirtualMachines/jdk-19.1.jdk
Vuelve a comprobar después de la instalación:
java -version
Paso 2: Activar el SSH del MacBook
Busca Compartir en Spotlight, luego activa Sesión remota y concede a los usuarios remotos acceso a todo el disco.
Genera después un par de claves RSA SSH:
ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa
Añade la clave pública al archivo authorized_keys:
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
Asegura los permisos:
chmod 0600 ~/.ssh/id_rsa.pub
Prueba la conexión SSH a localhost:
ssh localhost
Deberías ver un mensaje del tipo Último inicio de sesión: martes 12 de septiembre…. SSH funciona. Cierra la conexión con Ctrl + D.
Paso 3: Descargar Hadoop
Ve al sitio oficial de Apache y descarga el archivo .tar.gz de la última versión estable de Hadoop.
Descomprime el archivo, la carpeta se llamará hadoop-<version>. Muévela a tu directorio personal (~).
Paso 4: Configurar Hadoop
Variables de entorno
Primero encuentra la ruta de tu JDK:
/usr/libexec/java_home
cd /Library/Java/JavaVirtualMachines/jdk-11.jdk && pwd
Copia la ruta que aparece y abre tu archivo .zprofile o .zshrc:
nano ~/.zprofile
Añade las siguientes líneas (sustituye dimitri por tu nombre de usuario, que puedes ver con cd ~ && pwd):
JAVA_HOME="/Library/Java/JavaVirtualMachines/jdk-11.jdk/Contents/Home"
export HADOOP_HOME=/Users/dimitri/hadoop-3.3.6/
export HADOOP_INSTALL=$HADOOP_HOME
export HADOOP_MAPRED_HOME=$HADOOP_HOME
export HADOOP_COMMON_HOME=$HADOOP_HOME
export HADOOP_HDFS_HOME=$HADOOP_HOME
export YARN_HOME=$HADOOP_HOME
export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native
export PATH=$PATH:$HADOOP_HOME/sbin:$HADOOP_HOME/bin
export HADOOP_OPTS="-Djava.library.path=$HADOOP_HOME/lib/native"
hadoop-env.sh
Abre el archivo de configuración del entorno de Hadoop:
nano $HADOOP_HOME/etc/hadoop/hadoop-env.sh
Busca la línea comentada que contiene JAVA_HOME (alrededor de la línea 54) y descoméntala añadiendo tu ruta:
export JAVA_HOME="/Library/Java/JavaVirtualMachines/jdk-11.jdk/Contents/Home"
core-site.xml
nano $HADOOP_HOME/etc/hadoop/core-site.xml
Entre las etiquetas <configuration> y </configuration>, añade (sustituye dimitri):
<property>
<name>hadoop.tmp.dir</name>
<value>/Users/dimitri/hdfs/tmp/</value>
</property>
<property>
<name>fs.default.name</name>
<value>hdfs://127.0.0.1:9000</value>
</property>
hdfs-site.xml
nano $HADOOP_HOME/etc/hadoop/hdfs-site.xml
<property>
<name>dfs.data.dir</name>
<value>/Users/dimitri/hdfs/namenode</value>
</property>
<property>
<name>dfs.data.dir</name>
<value>/Users/dimitri/hdfs/datanode</value>
</property>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
mapred-site.xml
nano $HADOOP_HOME/etc/hadoop/mapred-site.xml
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
yarn-site.xml
nano $HADOOP_HOME/etc/hadoop/yarn-site.xml
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.nodemanager.aux-services.mapreduce.shuffle.class</name>
<value>org.apache.hadoop.mapred.ShuffleHandler</value>
</property>
<property>
<name>yarn.resourcemanager.hostname</name>
<value>127.0.0.1</value>
</property>
<property>
<name>yarn.acl.enable</name>
<value>0</value>
</property>
<property>
<name>yarn.nodemanager.env-whitelist</name>
<value>JAVA_HOME,HADOOP_COMMON_HOME,HADOOP_HDFS_HOME,HADOOP_CONF_DIR,CLASSPATH_PREPEND_DISTCACHE,HADOOP_YARN_HOME,HADOOP_MAPRED_HOME</value>
</property>
Paso 5: Formatear el NameNode de HDFS
hdfs namenode -format
Si este comando devuelve un error porque Hadoop ya está en ejecución, deténlo primero con stop-all.sh y vuelve a lanzarlo.
Paso 6: Iniciar los servicios de Hadoop
start-all.sh
Comprueba que todos los demonios están en marcha:
jps
Deberías ver: NameNode, DataNode, ResourceManager, NodeManager y sus IDs de proceso.
Paso 7: Interfaz de usuario de Hadoop
Abre tu navegador y accede a:
http://localhost:9870
Desde esta interfaz puedes supervisar el estado de tu clúster HDFS.
Para detener Hadoop:
stop-all.sh
Felicidades, Hadoop corre en tu MacBook M1/M2. Ya puedes aprovechar la potencia del chip Apple silicon para el procesamiento y el análisis de datos.