返回 导航

大数据

hangge.com

Hadoop - 多节点集群搭建部署教程

作者:hangge | 2024-06-26 08:31
    Hadoop 是一个强大的分布式计算框架,用于处理大规模数据。本文以 CentOS 系统为例,演示如何在多节点集群上搭建和部署 Hadoop

1,架构说明

下面这张图显示了使用多节点安装 Hadoop 的架构图:
  • NameNodeSecondaryNameNodeDataNodeHDFS 服务的进程
  • ResourceManagerNodeManager YARN 服务的进程
  • MapRedcue 在这里没有进程,因为它是一个计算框架,等 Hadoop 集群安装好了以后 MapReduce 程序可以在上面执行。

2,准备工作

(1)首先我们准备三台 linux 服务器进行集群搭建,具体信息如下:
主机名 内网IP 外网IP
node1 172.31.4.99 13.211.44.248
node2 172.31.3.72 3.106.170.197
node3 172.31.6.103 3.25.88.196

(2)为方便后续 Kafka 集群的配置,我们在三台服务上均执行如下命令编辑的 host 文件,使得可以通过主机名相互访问:
echo '
172.31.4.99 node1
172.31.3.72 node2
172.31.6.103 node3' >> /etc/hosts

(3)由于在启动 Hadoop 集群时,主节点需要通过 SSH 远程登录从节点以启动从节点中的进程,所以需要配置主节点到所有从节点的免密码登录。如何进行配置免密码登录,具体可以参考我之前写的文章:
注意:主节点在启动自身节点上的进程时也是通过 SSH 远程登录的,所以主节点也需要免密码登录自己。

(4)需要在集群中的所有节点上安装配置 JDK,建议使用企业中常用的 JDK 1.8 版本,版本太高可能会有问题(比如 ResourceManagerNodeManager 无法启动)。关于 JDK 的安装可以参考我之前写的文章:

3,下载并解压 Hadoop 安装包

(1)我们访问 Hadoop 的官网获取需要的版本安装包(点击访问),然后将其下载到 node1 服务器上:
wget https://dlcdn.apache.org/hadoop/common/hadoop-3.3.6/hadoop-3.3.6.tar.gz

(2)接着执行如下命令解压下载下来的压缩包:
tar -zxvf hadoop-3.3.6.tar.gz

(3)最后将解压出来的文件夹移动到合适的位置,这个可以根据个人习惯修改:
mv hadoop-3.3.6 /usr/local/hadoop

4,配置 HADOOP_HOME 环境变量

提示Hadoop 目录下面有两个重要的目录:bin 目录和 sbin 目录。要操作 Hadoop,则需要用到这两个目录下的一些脚本。为了后期使用方便,建议配置 HADOOP_HOME 环境变量,并将 bin 目录和 sbin 目录添加到 PATH 环境变量中。
(1)首先执行如下命令编辑系统 profile 文件:
vi /etc/profile

(2)在文件尾部添加如下内容:
export HADOOP_HOME=/usr/local/hadoop
export PATH=$HADOOP_HOME/sbin:$HADOOP_HOME/bin:$PATH

(3)最后执行如下命令使配置生效:
source /etc/profile

5,修改 Hadoop 的配置文件

(1)Hadoop 的相关配置文件都在 Hadoop 安装目录下的“etc/hadoop”目录下,主要修改以下配置文件。
  • hadoop-env.shHadoop 的环境变量配置文件。
  • core-site.xmlHadoop 的扩展配置文件。
  • hdfs-site.xmlHDFS 的扩展配置文件。
  • mapred-site.xmlMapReduce 的扩展配置文件。
  • yarn-site.xmlYARN 的扩展配置文件。
  • workers:从节点的配置文件。

(2)我们进入该目录:
cd /usr/local/hadoop/etc/hadoop

(3)首先编辑 hadoop-env.sh 文件: 
vi hadoop-env.sh
export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.392.b08-3.el9.x86_64
export HADOOP_LOG_DIR=/data/hadoop_repo/logs/hadoop

(4)接着编辑 core-site.xml 文件:
vi core-site.xml
<configuration>
  <property>
    <name>fs.defaultFS</name>
    <value>hdfs://node1:9000</value>
  </property>
  <property>
    <name>hadoop.tmp.dir</name>
    <value>/data/hadoop_repo</value>
  </property>
</configuration>

(5)然后编辑 hdfs-site.xml 文件:
vi hdfs-site.xml
<configuration>
  <property>
    <name>dfs.replication</name>
    <value>2</value>
  </property>
  <property>
    <name>dfs.namenode.secondary.http-address</name>
    <value>node1:50090</value>
  </property>
</configuration>

(6)接着编辑 mapred-site.xml 文件:
vi mapred-site.xml
<configuration>
  <property>
    <name>mapreduce.framework.name</name>
    <value>yarn</value>
  </property>
</configuration>

(7)然后编辑 yarn-site.xml 文件:
vi yarn-site.xml
<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_MAPRED_HOME</value>
  </property>
  <property>
    <name>yarn.resourcemanager.hostname</name>
    <value>node1</value>
  </property>
</configuration>

(8)最后编辑 workers 文件:
vi workers
node2
node3

6,修改 Hadoop 启动脚本

(1)进入 Hadoop 安装目录下 sbin 目录:
cd /usr/local/hadoop/sbin

(2)然后编辑 start-dfs.sh 文件:
vi start-dfs.sh
HDFS_DATANODE_USER=root
HDFS_DATANODE_SECURE_USER=hdfs
HDFS_NAMENODE_USER=root
HDFS_SECONDARYNAMENODE_USER=root

(3)接着编辑 stop-dfs.sh 文件:
vi stop-dfs.sh
HDFS_DATANODE_USER=root
HDFS_DATANODE_SECURE_USER=hdfs
HDFS_NAMENODE_USER=root
HDFS_SECONDARYNAMENODE_USER=root

(4)然后编辑 start-yarn.sh 文件:
vi start-yarn.sh
YARN_RESOURCEMANAGER_USER=root
HADOOP_SECURE_DN_USER=yarn
YARN_NODEMANAGER_USER=root

(5)接着编辑 stop-yarn.sh 文件:
vi stop-yarn.sh
YARN_RESOURCEMANAGER_USER=root
HADOOP_SECURE_DN_USER=yarn
YARN_NODEMANAGER_USER=root

7,其他节点的配置

(1)执行如下命令将 node1 上修改完配置的 Hadoop 安装包复制到 node2 上。
scp -rq /usr/local/hadoop node2:/usr/local/

(2)接着执行如下命令将 node1 上修改完配置的 Hadoop 安装包复制到 node3 上。
scp -rq /usr/local/hadoop node3:/usr/local/

8,格式化 NameNode

(1)我们在 node1 上执行如下命令格式化 NameNode
注意:格式化操作只需要在新安装 Hadoop 集群时执行 1 次即可,不能重复执行。如果要重复执行,则需要先清空集群所有节点中 hadoop.tmp.dir 属性对应的目录。
cd /usr/local/hadoop
bin/hdfs namenode -format

(2)如果在日志信息中能看到以下内容,则说明 NameNode 格式化成功了。

9,启动集群

(1)我们在 node1 hadoop 目录下执行如下启动集群命令。
sbin/start-all.sh

(2)启动后控制台输出如下信息:

10,查看是否启动成功

(1)在 node1 节点执行 jps 命令,可以看到如下进程信息。

(2)在 node2 节点执行 jps 命令,可以看到如下进程信息。

(3)在 node3 节点执行 jps 命令,可以看到如下进程信息。至此,Hadoop 分布式集群安装成功。

(4)使用浏览器访问 yarn 任务监控 web 页面,地址为 http://主节点IP:8088,显示如下内容也可以说明启动成功。

11,停止集群

如果要停止集群,则需要在 node1 上执行 stop-all.sh 文件。
cd /usr/local/hadoop
sbin/stop-all.sh

附:内置 mapreduce 样例使用测试

1,计算 PI

(1)首先进入 hadoop 目录:
cd /usr/local/hadoop

(2)然后执行如下命令运行一个内置的计算 PI 样例程序:
./bin/hadoop jar ./share/hadoop/mapreduce/hadoop-mapreduce-examples-3.3.6.jar pi 10 10

(3)等待程序执行完毕后即可输出计算得到的 PI 值:

2,单词统计

(1)首先进入 hadoop 目录:
cd /usr/local/hadoop

(2)然后将该目录下的 NOTICE.txt 文件上传到 HadoopHDFD 存储根目录下:
hdfs dfs -put NOTICE.txt /

(3)然后执行如下命令运行一个内置的 MapReduce 单词统计程序,统计该文件中各个单词出现的次数,并将结果输出至 /output 目录:
bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-3.3.6.jar wordcount /NOTICE.txt /output

(4)待程序执行完毕后,查看 hdfs /output 目录产生的内容:
hdfs dfs -ls /output

(5)其中 part-r-00000 即为统计结果,我们查看该文件数据:
hdfs dfs -cat /output/part-r-00000
评论

全部评论(0)

回到顶部