说明
在软件开发过程中,有时为了便于测试和开发,需要在本地安装一个 Hadoop 环境。本文档详细记录了我在本机环境下安装 Hadoop 3.3.6 的过程,以供后续参考和与他人分享。需要特别强调的是,此安装过程不包含 Zookeeper 配置和多节点设置,也不适用于高可用性的生产环境。
依赖环境
1、安装 Java 8
请参考《macOS M1 安装多个不同版本的 Java 环境》,或网上的其他资料。
2、设置远程登录
2.1、打开远程登录
在系统设置搜索”Remote login”
2.2、如果没有创建过 ssh 的 key, 生成ssh key
$ ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa
2.3、添加至authorized_keys
$ cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
2.4、给文件授予权限
$ chmod 0600 ~/.ssh/id_rsa.pub
2.5、测试
$ ssh localhost
安装 Hadoop
1、下载
1.1、Hadoop官网
https://hadoop.apache.org/
1.2、下载
当前最新的版本为 3.3.6,由于我的本地机器环境为 macOS M1 ,因此需下载 binary-aarch64,目前的下载地址为:https://dlcdn.apache.org/hadoop/common/hadoop-3.3.6/hadoop-3.3.6-aarch64.tar.gz
1.3、解压
$ sudo tar xzvf ~/Downloads/hadoop-3.3.6-aarch64.tar.gz -C /opt/
$ sudo chown -R yhz:admin /opt/hadoop-3.3.6
1.4、配置环境变量
$ vim ~/.zshrc
export HADOOP_HOME=/opt/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/nativ"
$ source ~/.zshrc
1.5 、确保 Java 8 的环境
$ jenv global 1.8
$ java -version
openjdk version "1.8.0_382"
OpenJDK Runtime Environment (Temurin)(build 1.8.0_382-b05)
OpenJDK 64-Bit Server VM (Temurin)(build 25.382-b05, mixed mode)
$ echo $JAVA_HOME
/Users/yhz/.jenv/versions/1.8
1.6、配置 hadoop-env.sh
$ vim $HADOOP_HOME/etc/hadoop/hadoop-env.sh
export JAVA_HOME=/Users/yhz/.jenv/versions/1.8
1.7、创建数据存储目录
$ mkdir -p ~/hdfs/tmp
$ mkdir -p ~/hdfs/namenode
$ mkdir -p ~/hdfs/datanode
1.8、配置 core-site.xml
$ vim $HADOOP_HOME/etc/hadoop/core-site.xml
<configuration>
<property>
<name>hadoop.tmp.dir</name>
<value>/Users/yhz/hdfs/tmp/</value>
</property>
<property>
<name>fs.default.name</name>
<value>hdfs://127.0.0.1:9000</value>
</property>
</configuration>
1.9、配置 hdfs-site.xml
$ vim $HADOOP_HOME/etc/hadoop/hdfs-site.xml
<configuration>
<property>
<name>dfs.data.dir</name>
<value>/Users/yhz/hdfs/namenode</value>
</property>
<property>
<name>dfs.data.dir</name>
<value>/Users/yhz/hdfs/datanode</value>
</property>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
</configuration>
1.10、配置 mapred-site.xml
$ vim $HADOOP_HOME/etc/hadoop/mapred-site.xml
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
</configuration>
1.11、配置 yarn-site.xml
$ vim $HADOOP_HOME/etc/hadoop/yarn-site.xml
<configuration>
<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_PERPEND_DISTCACHE,HADOOP_YARN_HOME,HADOOP_MAPRED_HOME</value>
</property>
</configuration>
1.12、格式化 NameNode
$ hdfs namenode -format
1.13、启动
$ start-all.sh
1.14、查看进行是否启动成功
$ jps
58180 ResourceManager
58279 NodeManager
57833 DataNode
58525 Jps
57727 NameNode
57983 SecondaryNameNode
1.15、停止
$ stop-all.sh
测试使用
1.1、访问WebUI
1.2、创建目录
$ hdfs dfs -mkdir -p /users/yhz/tmp
1.3、上传文件
$ echo "Just for test" > ./test.out
$ hdfs dfs -put ./test.out /users/yhz/tmp/
1.4、查看上传的文件
$ hdfs dfs -cat /users/yhz/tmp/test.out
Just for test