Hadoop伪分布式环境搭建
一. 案例信息
1. 实验内容
Hadoop的安装部署的模式一共有三种:
- 本地模式,默认的模式,无需运行任何守护进程(daemon),所有程序都在单个JVM上执行。由于在本机模式下测试和调试MapReduce程序较为方便,因此,这种模式适宜用在开发阶段。使用本地文件系统,而不是分布式文件系统。
- 伪分布模式,在一台主机模拟多主机。即,Hadoop的守护程序在本地计算机上运行,模拟集群环境,并且是相互独立的Java进程。在这种模式下,Hadoop使用的是分布式文件系统,各个作业也是由JobTraker服务,来管理的独立进程。在单机模式之上增加了代码调试功能,允许检查内存使用情况,HDFS输入输出,以及其他的守护进程交互。类似于完全分布式模式,因此,这种模式常用来开发测试Hadoop程序的执行是否正确。
- 全分布模式,完全分布模式的守护进程运行在由多台主机搭建的集群上,是真正的生产环境。在所有的主机上安装JDK和Hadoop,组成相互连通的网络。
本案例采用伪分布模式搭建Hadopp,在一台主机模拟多主机,用于后续的程序开发。
2. 实验目的
- 掌握Hadoop单机版的搭建及配置方法
- 掌握HDFS文件系统的开启及关闭方法
- 掌握Yarn的开启及关闭方法
- 掌握Hadoop平台的基本使用
3. 实验环境
- hadoop == 3.3.0
- CentOS == 7.3
- jdk == 1.8
二. 实验指导
1. 关联技术
- 环境准备
- 文件解包解压
- JDK安装配置
- VIM文本编辑命令
- 文件上传
- 系统环境配置
- 配置Hadoop
- XML配置
- 防火墙配置
- jps命令
- 使用内置程序计算PI值
- jar包执行
2. 实验步骤
- 环境准备
- 配置Hadoop
- 初始化并启动Hadoop
- Hadoop(YARN)环境搭建
- 使用内置程序计算PI值
3. 实验效果
三. 实验操作
注意:本实验虚拟机ip绑定为server,所有填ip的地方均为server
01. 步骤一:环境准备
步骤操作说明
1. 配置JDK
-
下载JDK,登录官方https://www.oracle.com/java/technologies/downloads/#java8 下载所需版本的 JDK,版本为JDK 1.8

-
上传JDK至服务器
- 使用yum下载时,可以先修改软件源(非必须):
-
创建tools目录,用于存放文件
mkdir /opt/tools -
切换至tools目录,上传JDK安装包
-
解压JDK安装包
-
创建server目录,用于存放JDK解压后的文件
mkdir /opt/server -
解压至server目录
tar -zvxf jdk-8u131-linux-x64.tar.gz -C /opt/server
-
-
配置环境变量
-
编辑 /etc/profile 文件
vim /etc/profile # 文件末尾增加 export JAVA_HOME=/opt/server/jdk1.8.0_131 export PATH=${JAVA_HOME}/bin:$PATH -
执行source命令,使配置立即生效
source /etc/profile -
检查是否安装成功
java -version
-
2. 配置免密登录
Hadoop 组件之间需要基于 SSH 进行通讯,配置免密登录后不需要每次都输入密码。
-
配置映射,配置 ip 地址和主机名映射
vim /etc/hosts # 文件末尾增加 192.168.80.100 server -
生成公钥私钥
ssh-keygen -t rsa -
授权,进入 ~/.ssh 目录下,查看生成的公匙和私匙,并将公匙写入到授权文件:
cd ~/.ssh cat id_rsa.pub >> authorized_keys chmod 600 authorized_keys
3. 下载解压Hadoop
- 访问http://archive.apache.org/dist/hadoop/core/hadoop-3.3.0/ 下载Hadoop

-
切换至tools目录,上传Hadoop安装包
-
解压Hadoop至server目录
tar -zvxf hadoop-3.3.0.tar.gz -C /opt/server/
02. 步骤二:配置Hadoop
官方文档:https://hadoop.apache.org/docs/r3.3.0/
配置文件位于/opt/server/hadoop-3.3.0/etc/hadoop,主要配置文件如下:
- 第一类,1个文件:hadoop-env.sh,此文件用于指定Java环境及各进程运行的用户。
- 第二类,4个文件:xxxx-site.xml ,site表示的是用户定义的配置,会覆盖default中的默认配置。
- core-site.xml 核心模块配置
- hdfs-site.xml hdfs文件系统模块配置
- mapred-site.xml MapReduce模块配置
- yarn-site.xml yarn模块配置
- 第三类,1个文件,workers
步骤操作说明
1. 修改配置文件
进入/opt/server/hadoop-3.3.0/etc/hadoop 目录下,修改以下配置:
-
修改hadoop-env.sh文件,将以下内容加到文件最后
vim hadoop-env.sh # 使用G+o,跳转到文件最后一行,并插入 export JAVA_HOME=/opt/server/jdk1.8.0_131 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 -
修改core-site.xml文件,分别指定hdfs 协议文件系统的通信地址及hadoop 存储临时文件的目录(此目录不需要手动创建)
<configuration> <property> <!-- 设置默认使用的文件系统 Hadoop支持file、HDFS、GFS、ali|Amazon云等文件系统 --> <name>fs.defaultFS</name> <value>hdfs://server:8020</value> </property> <property> <!-- 设置Hadoop本地保存数据路径,此目录不需要提前创建会自动生成--> <name>hadoop.tmp.dir</name> <value>/home/hadoop/data</value> </property> <property> <!-- 设置HDFS web UI用户身份 --> <name>hadoop.http.staticuser.user</name> <value>root</value> </property> </configuration> -
修改hdfs-site.xml,指定 dfs 的副本系数
<configuration> <property> <!--由于我们这里搭建是单机版本,所以指定 dfs 的副本系数为 1--> <name>dfs.replication</name> <value>1</value> </property> </configuration> -
修改workers文件,配置所有从属节点
vim workers # 配置所有从属节点的主机名或 IP 地址,由于是单机版本,所以指定本机即可: server
2. 初始化并启动HDFS
-
关闭防火墙,不关闭防火墙可能导致无法访问 Hadoop 的 Web UI 界面
# 查看防火墙状态 sudo firewall-cmd --state # 关闭防火墙: sudo systemctl stop firewalld # 禁止开机启动 sudo systemctl disable firewalld -
初始化,第一次启动 Hadoop 时需要进行初始化,进入 /opt/server/hadoop-3.1.0/bin目录下,执行以下命令:
cd /opt/server/hadoop-3.3.0/bin ./hdfs namenode -format

-
启动HDFS,进入/opt/server/hadoop-3.1.0/sbin/ 目录下,启动 HDFS:
cd /opt/server/hadoop-3.1.0/sbin/ ./start-dfs.sh -
验证是否启动
-
方式一:执行 jps 查看 NameNode 和 DataNode 服务是否已经启动:
[root@server bin]# jsp 41032 DataNode 41368 Jps 40862 NameNode 41246 SecondaryNameNode -
方式二:查看 Web UI 界面,端口为 9870:
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-CqUHbQRQ-1672286622617)(2.Hadoop伪分布式环境搭建.assets/image-20211109103546261.png)]](https://i-blog.csdnimg.cn/blog_migrate/5dbfab2146916672920f21f1711bd747.png)
-
-
配置环境变量,方便启动
export HADOOP_HOME=/opt/server/hadoop-3.3.0 export PATH=$PATH:${HADOOP_HOME}/bin:${HADOOP_HOME}/sbin source /etc/profile
3. 步骤效果
无
03. 步骤三:Hadoop(YARN)环境搭建
步骤操作说明
1. 修改配置文件
进入/opt/server/hadoop-3.3.0/etc/hadoop 目录下,修改以下配置:
-
修改mapred-site.xml文件
<configuration> <!-- 设置MR程序默认运行模式: yarn集群模式 local本地模式 --> <property> <name>mapreduce.framework.name</name> <value>yarn</value> </property> <!-- MR程序历史服务地址 --> <property> <name>mapreduce.jobhistory.address</name> <value>server:10020</value> </property> <!-- MR程序历史服务器web端地址 --> <property> <name>mapreduce.jobhistory.webapp.address</name> <value>server:19888</value> </property> <property> <name>yarn.app.mapreduce.am.env</name> <value>HADOOP_MAPRED_HOME=${HADOOP_HOME}</value> </property> <property> <name>mapreduce.map.env</name> <value>HADOOP_MAPRED_HOME=${HADOOP_HOME}</value> </property> <property> <name>mapreduce.reduce.env</name> <value>HADOOP_MAPRED_HOME=${HADOOP_HOME}</value> </property> </configuration> -
修改yarn-site.xml文件,配置 NodeManager 上运行的附属服务
<configuration> <property> <!--配置NodeManager上运行的附属服务。需要配置成mapreduce_shuffle后才可以在Yarn上运行MapReduce 程序。--> <name>yarn.nodemanager.aux-services</name> <value>mapreduce_shuffle</value> </property> <!-- 是否将对容器实施物理内存限制 --> <property> <name>yarn.nodemanager.pmem-check-enabled</name> <value>false</value> </property> <!-- 是否将对容器实施虚拟内存限制。 --> <property> <name>yarn.nodemanager.vmem-check-enabled</name> <value>false</value> </property> <!-- 开启日志聚集 --> <property> <name>yarn.log-aggregation-enable</name> <value>true</value> </property> <!-- 设置yarn历史服务器地址 --> <property> <name>yarn.log.server.url</name> <value>http://server:19888/jobhistory/logs</value> </property> <!-- 历史日志保存的时间 7天 --> <property> <name>yarn.log-aggregation.retain-seconds</name> <value>604800</value> </property> </configuration>
2. 启动服务
-
进入 ${HADOOP_HOME}/sbin/ 目录下,启动 YARN:
./start-yarn.sh -
验证是否启动成功
-
方式一:执行 jps 命令查看 NodeManager 和 ResourceManager 服务是否已经启动
[root@server bin]# jsp 41655 ResourceManager 41032 DataNode 42125 Jps 40862 NameNode 41246 SecondaryNameNode 41983 NodeManager -
方式二:查看 Web UI 界面,端口为 8088
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-hQbXfltm-1672286622617)(2.Hadoop伪分布式环境搭建.assets/image-20211102133221059.png)]](https://i-blog.csdnimg.cn/blog_migrate/8780a52bf456a43710c5598a31cb60d2.png)
-
-
启动历史日志服务,脚本位于sbin目录,开启此服务后,可以在Web控制台查看MR运行的日志信息
./mr-jobhistory-daemon.sh start historyserver
一键启停脚本,如果是多台机器,需要配置好机器之间的SSH免密登录和workers文件:
HDFS集群
- start-dfs.sh
- stop-dfs.sh
YARN集群
- start-yarn.sh
- stop-yarn.sh
Hadoop集群
- start-all.sh
- stop-all.sh
04. 步骤四:使用内置程序计算PI值
Hadoop自带的hadoop-mapreduce-examples-x.jar中包含一些示例程序,位于 ${HADOOP_HOME}/share/hadoop/mapreduce 目录。
步骤操作说明
1. 运行示例程序
-
进入 ${HADOOP_HOME}/bin/ 目录下,执行以下命令
hadoop jar /opt/server/hadoop-3.3.0/share/hadoop/mapreduce/hadoop-mapreduce-examples-3.1.0.jar pi 2 10
2. 查看运行效果

五. 附录
技术资料
- 官方文档:https://hadoop.apache.org/docs/r1.0.4/cn/quickstart.html
更多推荐
所有评论(0)