目录
一、集群简介
二、Hadoop 集群部署方式
三、集群安装
3.1 集群角色规划
3.2 服务器基础环境准备
3.2.1 环境初始化
3.2.2 ssh 免密登录(在 hadoop01 上执行)
3.2.3 各个节点上安装 JDK 1.8 环境
3.3 安装 Hadoop
3.4 Hadoop 安装包目录结构
3.5 编辑 Hadoop 配置文件
3.5.1 hadoop-env.sh
3.5.2 core-site.xml
3.5.3 hdfs-site.xml
3.5.4 mapred-site.xml
3.5.5 yarn-site.xml
3.5.6 workers
3.6 分发同步安装包
3.7 配置 Hadoop 环境变量
3.8 NameNode format(格式化操作)
3.9 Hadoop 集群启动关闭
3.9.1 手动逐个进程启停
3.9.2 shell 脚本一键启停
3.9.3 Hadoop 集群启动日志
3.10 Hadoop Web UI 页面
3.10.1 配置 windows 域名映射
3.10.2 访问 HDFS 集群 UI 页面
3.10.3 访问 YARN 集群 UI 页面
3.10.4 访问 JobHistory 服务 UI 页面
四、Hadoop 初体验
4.1 HDFS 初体验
4.1.1 shell 命令操作
4.1.2 Web UI 页面操作
4.2 MapReduce+YARN 初体验
4.2.1 执行 Hadoop 官方自带的 MapReduce 案例
Hadoop 集群包括两个集群:HDFS 集群、YARN 集群。两个集群逻辑上分离、通常物理上在一起;两个集群都是标准的主从架构集群。
两个集群互相之间没有依赖、互不影响
某些角色进程往往部署在同一台物理服务器上
MapReduce 是计算框架、代码层面的组件,没有集群之说
集群模式主要用于生产环境部署,需要多台主机,并且这些主机之间可以相互访问。本次是在 Centos 7.6 搭建集群模式,以三台主机为例,以下是集群规划:
各节点 IP | 各节点名称 | 运行角色 | 各节点资源规划 |
192.168.170.136 | hadoop01 | NameNode、DataNode、ResourceManager、NodeManager | 2 cpu / 4 G |
192.168.170.137 | hadoop02 | SecondaryNamenode、DataNode 、NodeManager | 2 cpu / 4 G |
192.168.170.138 | hadoop03 | DataNode 、NodeManager | 2 cpu / 4 G |
给三台机器进行环境初始化,特别是需要做好 Hosts 映射:CentOS 7 初始化系统_centos7初始化_Stars.Sky的博客-CSDN博客
# 4 个 回车,生成公钥、私钥 [root@hadoop01 ~]# ssh-keygen # 推送到各个节点 [root@hadoop01 ~]# ssh-copy-id root@hadoop01 [root@hadoop01 ~]# ssh-copy-id root@hadoop02 [root@hadoop01 ~]# ssh-copy-id root@hadoop03
Linux 部署 JDK+MySQL+Tomcat 详细过程_一键部署jdk mysql tomcat_Stars.Sky的博客-CSDN博客
hadoop 3.2.4 官方下载地址:Apache Downloads
# 创建统一工作目录(3 台机器) [root@hadoop01 ~]# mkdir -p /bigdata/hadoop/server # 软件安装路径 [root@hadoop01 ~]# mkdir -p /bigdata/hadoop/data # 数据存储路径 [root@hadoop01 ~]# mkdir -p /bigdata/softwares # 安装包存放路径 # 上传、解压安装包(hadoop01) [root@hadoop01 ~]# cd /bigdata/softwares/ [root@hadoop01 /bigdata/softwares]# ls hadoop-3.2.4.tar.gz [root@hadoop01 /bigdata/softwares]# tar -zxvf hadoop-3.2.4.tar.gz -C /bigdata/hadoop/server/
[root@hadoop01 /bigdata/softwares]# cd /bigdata/hadoop/server/ [root@hadoop01 /bigdata/hadoop/server]# ls hadoop-3.2.4 [root@hadoop01 /bigdata/hadoop/server]# cd hadoop-3.2.4/ [root@hadoop01 /bigdata/hadoop/server/hadoop-3.2.4]# ls bin etc include lib libexec LICENSE.txt NOTICE.txt README.txt sbin share
文件中设置的是 Hadoop 运行时需要的环境变量。JAVA_HOME 是必须设置的,即使我们当前的系统中设置了 JAVA_HOME,它也是不认识的,因为 Hadoop 即使是在本机上执行,它也是把当前的执行环境当成远程服务器。
[root@hadoop01 /bigdata/hadoop/server/hadoop-3.2.4/etc/hadoop]# pwd /bigdata/hadoop/server/hadoop-3.2.4/etc/hadoop # 在文件最后面直接添加下面内容 [root@hadoop01 /bigdata/hadoop/server/hadoop-3.2.4/etc/hadoop]# vim hadoop-env.sh # 配置 JAVA_HOME export JAVA_HOME=/usr/java/jdk1.8.0_381 # 设置用户以执行对应角色 shell 命令 export HDFS_NAMENODE_USER=root export HDFS_DATANODE_USER=root export HDFS_SECONDARYNAMENODE_USER=root export YARN_RESOURCEMANAGER_USER=root export YARN_NODEMANAGER_USER=root
hadoop 的核心配置文件,有默认的配置项 core-default.xml。core-default.xml 与 core-site.xml 的功能是一样的,如果在 core-site.xml 里没有配置的属性,则会自动会获取 core-default.xml 里的相同属性的值。
[root@hadoop01 /bigdata/hadoop/server/hadoop-3.2.4/etc/hadoop]# vim core-site.xmlfs.defaultFS hdfs://hadoop01:8020 hadoop.tmp.dir /bigdata/hadoop/data/tmp hadoop.http.staticuser.user root
HDFS 的核心配置文件,主要配置 HDFS 相关参数,有默认的配置项 hdfs-default.xml。hdfs-default.xml 与 hdfs-site.xml 的功能是一样的,如果在 hdfs-site.xml 里没有配置的属性,则会自动会获取 hdfs-default.xml 里的相同属性的值。
[root@hadoop01 /bigdata/hadoop/server/hadoop-3.2.4/etc/hadoop]# vim hdfs-site.xmldfs.namenode.secondary.http-address hadoop02:9868
MapReduce 的核心配置文件,Hadoop 默认只有个模板文件 mapred-site.xml.template,需要使用该文件复制出来一份 mapred-site.xml 文件。
[root@hadoop01 /bigdata/hadoop/server/hadoop-3.2.4/etc/hadoop]# vim mapred-site.xmlmapreduce.framework.name yarn mapreduce.jobhistory.address hadoop01:10020 mapreduce.jobhistory.webapp.address hadoop01:19888 yarn.app.mapreduce.am.env HADOOP_MAPRED_HOME=${HADOOP_HOME} mapreduce.map.env HADOOP_MAPRED_HOME=${HADOOP_HOME} mapreduce.reduce.env HADOOP_MAPRED_HOME=${HADOOP_HOME}
YARN 的核心配置文件,在该文件中的
[root@hadoop01 /bigdata/hadoop/server/hadoop-3.2.4/etc/hadoop]# vim yarn-site.xmlyarn.resourcemanager.hostname hadoop01 yarn.nodemanager.aux-services mapreduce_shuffle yarn.scheduler.minimum-allocation-mb 512 yarn.scheduler.maximum-allocation-mb 2048 yarn.nodemanager.vmem-pmem-ratio 4 yarn.log-aggregation-enable true yarn.log-aggregation.retain-seconds 86400 yarn.log.server.url http://hadoop01:19888/jobhistory/logs
workers 文件里面记录的是集群主机名。一般有以下两种作用:
dfs.hosts 指定一个文件,其中包含允许连接到 NameNode 的主机列表。必须指定文件的完整路径名,那么所有在 workers 中的主机才可以加入的集群中。如果值为空,则允许所有主机。
[root@hadoop01 /bigdata/hadoop/server/hadoop-3.2.4/etc/hadoop]# vim workers hadoop01 hadoop02 hadoop03
在 hadoop01 机器上将 Hadoop 安装包 scp 同步到其他机器:
[root@hadoop01 /bigdata/hadoop]# cd /bigdata/hadoop/server/ [root@hadoop01 /bigdata/hadoop/server]# scp -r hadoop-3.2.4 root@hadoop02:/bigdata/hadoop/server/ [root@hadoop01 /bigdata/hadoop/server]# scp -r hadoop-3.2.4 root@hadoop03:/bigdata/hadoop/server/
在三台机器上配置 Hadoop 环境变量:
[root@hadoop01 /bigdata/hadoop/server]# vim /etc/profile # hadoop export HADOOP_HOME=/bigdata/hadoop/server/hadoop-3.2.4/ export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin # 重新加载环境变量 [root@hadoop01 /bigdata/hadoop/server]# source /etc/profile # 验证环境变量是否生效 [root@hadoop01 /bigdata/hadoop/server]# hadoop
首次启动 HDFS 时,必须对其进行格式化操作。format 本质上是初始化工作,进行 HDFS 清理和准备工作。
# 仅在 hadoop01 上执行 [root@hadoop01 ~]# hdfs namenode -format [root@hadoop01 ~]# ll /bigdata/hadoop/data/tmp/dfs/name/current/ 总用量 16 -rw-r--r-- 1 root root 396 8月 31 17:04 fsimage_0000000000000000000 -rw-r--r-- 1 root root 62 8月 31 17:04 fsimage_0000000000000000000.md5 -rw-r--r-- 1 root root 2 8月 31 17:04 seen_txid -rw-r--r-- 1 root root 218 8月 31 17:04 VERSION
每台机器上每次手动启动关闭一个角色进程。
hdfs --daemon start namenode|datanode|secondarynamenode hdfs --daemon stop namenode|datanode|secondarynamenode
yarn --daemon start resourcemanager|nodemanager yarn --daemon stop resourcemanager|nodemanager
在 hadoop01 上,使用软件自带的 shell 脚本一键启动。前提:配置好机器之间的 SSH 免密登录和 workers 文件。
start-dfs.sh
stop-dfs.sh
start-yarn.sh
stop-yarn.sh
start-all.sh
stop-all.sh
[root@hadoop01 ~]# start-all.sh Starting namenodes on [hadoop01] 上一次登录:五 9月 1 14:24:35 CST 2023pts/0 上 Starting datanodes 上一次登录:五 9月 1 14:25:14 CST 2023pts/0 上 Starting secondary namenodes [hadoop02] 上一次登录:五 9月 1 14:25:17 CST 2023pts/0 上 Starting resourcemanager 上一次登录:五 9月 1 14:25:23 CST 2023pts/0 上 Starting nodemanagers 上一次登录:五 9月 1 14:25:30 CST 2023pts/0 上
# 启动完毕之后可以使用 jps 命令查看进程是否启动成功 [root@hadoop01 ~]# jps 22337 NodeManager 21798 DataNode 22203 ResourceManager 22669 Jps 21662 NameNode [root@hadoop02 ~]# jps 21114 NodeManager 21005 DataNode 21213 Jps [root@hadoop03 ~]# jps 21010 DataNode 21219 Jps 21119 NodeManager # Hadoop 启动日志 [root@hadoop01 ~]# ll /bigdata/hadoop/server/hadoop-3.2.4/logs/ 总用量 184 -rw-r--r-- 1 root root 36069 8月 31 17:54 hadoop-root-datanode-hadoop01.log -rw-r--r-- 1 root root 692 8月 31 17:54 hadoop-root-datanode-hadoop01.out -rw-r--r-- 1 root root 43819 8月 31 17:54 hadoop-root-namenode-hadoop01.log -rw-r--r-- 1 root root 692 8月 31 17:54 hadoop-root-namenode-hadoop01.out -rw-r--r-- 1 root root 40045 8月 31 17:55 hadoop-root-nodemanager-hadoop01.log -rw-r--r-- 1 root root 2264 8月 31 17:55 hadoop-root-nodemanager-hadoop01.out -rw-r--r-- 1 root root 47741 8月 31 17:55 hadoop-root-resourcemanager-hadoop01.log -rw-r--r-- 1 root root 2280 8月 31 17:54 hadoop-root-resourcemanager-hadoop01.out -rw-r--r-- 1 root root 0 8月 31 17:04 SecurityAuth-root.audit drwxr-xr-x 2 root root 6 8月 31 17:54 userlogs
地址:http://namenode_host:9870
其中 namenode_host 是 namenode 运行所在机器的主机名或者 ip。
HDFS 文件系统 Web 页面浏览:
地址:http://resourcemanager_host:8088
其中 resourcemanager_host 是 resourcemanager 运行所在机器的主机名或者 ip。
# 启动 JobHistory 服务 [root@hadoop01 ~]# mapred --daemon start historyserver
地址:http://historyserver_host:19888/jobhistory
其中 historyserver_host 是 historyserver 运行所在机器的主机名或者 ip。
[root@hadoop01 ~]# hadoop fs -mkdir /test1 [root@hadoop01 ~]# hadoop fs -put jdk-8u381-linux-x64.tar.gz /test1 [root@hadoop01 ~]# hadoop fs -ls / Found 1 items drwxr-xr-x - root supergroup 0 2023-09-01 14:43 /test1
评估圆周率 π 的值:
[root@hadoop01 ~]# cd /bigdata/hadoop/server/hadoop-3.2.4/share/hadoop/mapreduce/ [root@hadoop01 /bigdata/hadoop/server/hadoop-3.2.4/share/hadoop/mapreduce]# hadoop jar hadoop-mapreduce-examples-3.2.4.jar pi 2 4
下一篇文章:HDFS HA 高可用集群搭建详细图文教程_Stars.Sky的博客-CSDN博客