Hadoop 集群环境搭建

复制和安装 hadoop

  1. 将本地hadoop-3.3.6.tar.gz复制进master容器中root目录中
1
docker cp /path/to/hadoop-3.3.6.tar.gz master:/root
  1. hadoop-3.3.6.tar.gz解压进/opt/module目录下
1
tar zxvf /root/hadoop-3.3.6.tar.gz -C /opt/module/
  1. 将解压后的目录改名为hadoop
1
mv /opt/module/hadoop-3.3.6 /opt/module/hadoop
  1. 创建存储tmp namenode datanode数据的目录
1
mkdir -p /opt/module/hadoop/tmp /opt/module/hadoop/dfs/{name,data}

配置 hadoop

  1. hadoop的配置文件都存放在${HADOOP_HOME}/etc/hadoop
1
cd /opt/module/hadoop/etc/hadoop/
  1. hadoop-env.sh第一行添加以下内容
  • 该文件类似 bashrc、profile,用于配置 Hadoop 的环境变量的
1
2
3
4
5
6
export JAVA_HOME=/opt/module/jdk
export HDFS_NAMENODE_USER=root
export HDFS_DATANODE_USER=root
export HDFS_SECONDARYNAMENODE_USER=root
export YARN_NODEMANAGER_USER=root
export YARN_RESOURCEMANAGER_USER=root
  • 指定JAVA_HOME路径
  • 指定HDFS_NAMENODE_USER服务的用户为root
  • 指定HDFS_DATANODE_USER服务的用户为root
  • 指定HDFS_SECONDARYNAMENODE_USER服务的用户为root
  • 指定YARN_NODEMANAGER_USER服务的用户为root
  • 指定YARN_RESOURCEMANAGER_USER服务的用户为root
  1. 配置 core-site.xml
  • 该文件是 Hadoop 的核心配置文件,其目的是配置 HDFS 地址、端口号,以及临时文件目录
1
2
3
4
5
6
7
8
9
10
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://master:9000</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/opt/module/hadoop/tmp</value>
</property>
</configuration>
  • fs.defaultFS: 文件系统的默认 URI 地址
  • hadoop.tmp.dir: 确定临时文件的存储路径
  1. 配置 hdfs-site.xml
  • 该文件用于设置 HDFS 的 NameNode 和 DataNode 两大进程。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
<configuration>
<property>
<name>dfs.replication</name>
<value>3</value>
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>/opt/module/hadoop/dfs/name</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>/opt/module/hadoop/dfs/data</value>
</property>
</configuration>
  • dfs.replication: 创建文件时指定实际的复制数
  • dfs.namenode.name.dir: 确定 namenode 在本地文件系统上存储位置
  • dfs.datanode.data.dir: 确定 datanode 在本地文件系统上存储位置
  1. 配置 mapred-site.xml
  • 该文件是 MapReduce 的核心配置文件,用于指定 MapReduce 运行时框架。
1
2
3
4
5
6
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
</configuration>
  • mapreduce.framework.name: 用于执行 MapReduce 作业的运行时框架。可以是local classicyarn
  1. 配置 yarn-site.xml
  • 本文件是 Yarn 框架的核心配置文件,配置 ResourceManager 和 NodeManager。
1
2
3
4
5
6
7
8
9
10
<configuration>
<property>
<name>yarn.resourcemanager.hostname</name>
<value>master</value>
</property>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
</configuration>
  • yarn.resourcemanager.hostname: resourcemanager 的主机名
  • yarn.nodemanager.aux-services: NodeManager 上运行的附属服务。需配置成 mapreduce_shuffle,才可运行 MapReduce 程序
  1. 配置 workers
  • 本文件是配置所有工作节点的主机名或 IP 地址。
1
2
3
master
slave1
slave2

分发文件

  1. 分发hadoopslave1 slave2
1
2
scp -r /opt/module/hadoop/ slave1:/opt/module/
scp -r /opt/module/hadoop/ slave2:/opt/module/

启动群集

  • master容器中格式化namenode(仅需执行一次)
1
/opt/module/hadoop/bin/hdfs namenode -format
  • 启动HDFS集群
1
/opt/module/hadoop/sbin/start-dfs.sh
  • 启动YARN集群
1
/opt/module/hadoop/sbin/start-yarn.sh

测试集群

  1. 查看HDFS的根目录
  • 输入hdfs dfs -ls /指令来查看根目录,一般来说都是空的
1
/opt/module/hadoop/bin/hdfs dfs -ls /
  1. 使用jps命令查看hadoop进程:
1
jps
  • master 容器中
1
2
3
4
5
6
6257 SecondaryNameNode
6549 ResourceManager
5990 DataNode
7641 Jps
6718 NodeManager
5823 NameNode
  • slave1 容器中
1
2
3
165 DataNode
441 Jps
271 NodeManager
  • slave2 容器中
1
2
3
247 NodeManager
397 Jps
141 DataNode

参考文章

Hadoop Cluster Setup

Hadoop YARN 配置参数剖析

Hadoop 学习(二) Hadoop 配置文件参数详解

【Hadoop】集群配置之主要配置文件(hadoop-env.sh、yarn-env.sh、core-site.xml、hdfs-site.xml、mapred-site.xml…)