搭建单节点Hadoop集群

目的

可以快速使用 Hadoop 的 MapReduce 和 HDFS 执行某些操作,主要用于学习的目的。

先决条件

环境信息

  • 操作系统:deepin 20.9 社区版
  • 内核:5.18.17-amd64-desktop-hwe
  • Hadoop版本:Apache Hadoop 3.3.6
  • Java版本:java version “11.0.21” 2023-10-17 LTS

安装必要的软件

1
2
$ sudo apt-get install ssh
$ sudo apt-get install pdsh

pdsh 是一个多线程并发在远程服务器上执行命令的 shell 客户端。项目地址:https://github.com/chaos/pdsh

Hadoop 安装

下载 Hadoop:Apache Download Mirrors。下载完成后解压至本地的目录。在解压后的目录中,编辑 etc/hadoop/hadoop-env.sh 文件,增加 JAVA_HOME 环境变量定义。如下:

1
2
# set to the root of your Java installation
export JAVA_HOME=/opt/java

执行以下命令会显示 hadoop 命令的使用文档,如下:

1
2
3
4
$ bin/hadoop
Usage: hadoop [OPTIONS] SUBCOMMAND [SUBCOMMAND OPTIONS]
or hadoop [OPTIONS] CLASSNAME [CLASSNAME OPTIONS]
where CLASSNAME is a user-provided Java class

伪分布式

配置

使用以下配置。

etc/hadoop/core-site.xml:

1
2
3
4
5
6
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://localhost:9000</value>
</property>
</configuration>

etc/hadoop/hdfs-site.xml:

1
2
3
4
5
6
<configuration>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
</configuration>

配置 ssh 免密登录

见我的另外一篇文章中的章节:Linux下Spark Standalone测试环境部署

启动 HDFS

  1. 格式换 HDFS
1
$ bin/hdfs namenode -format
  1. 启动 NameNode 和 DataNode
1
$ sbin/start-dfs.sh
  1. NameNode WebUI

http://localhost:9870/

  1. 停止 NameNode 和 DataNode
1
$ sbin/stop-dfs.sh

默认的 HDFS 元数据信息会存储在临时目录 tmp 下,机器重启后再次启动 HDFS 时会出现错误,见我的另外一篇文章:Directory /tmp/hadoop-zhangjc/dfs/name is in an inconsistent state

单节点 Yarn

  1. 添加以下配置

etc/hadoop/mapred-site.xml:

1
2
3
4
5
6
7
8
9
10
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
<property>
<name>mapreduce.application.classpath</name>
<value>$HADOOP_MAPRED_HOME/share/hadoop/mapreduce/*:$HADOOP_MAPRED_HOME/share/hadoop/mapreduce/lib/*</value>
</property>
</configuration>

etc/hadoop/yarn-site.xml:

1
2
3
4
5
6
7
8
9
10
<configuration>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</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_HOME,PATH,LANG,TZ,HADOOP_MAPRED_HOME</value>
</property>
</configuration>
  1. 启动 ResourceManager 和 NodeManager
1
$ sbin/start-yarn.sh
  1. ResourceManager WebUI

http://localhost:8088/

  1. 停止 ResourceManager 和 NodeManager
1
$ sbin/stop-yarn.sh