Hadoop 完全分布式搭建(超详细)
Hadoop 完全分布式搭建
前言:本文中使用的 Hadoop 版本为 hadoop-3.1.3
,系统为 CentOS 7
。
集群其它生态安装与配置:
1. 虚拟机安装
在学习过程中,一般情况下我们都是在本机通过安装虚拟机来完成 Hadoop 完全分布式的安装。在安装完虚拟机后,我们来设置虚拟机,安装镜像等操作。
系统安装
第一步:点击左上角文件—— 新建虚拟机
![](https://img-blog.csdnimg.cn/0eec9aa5f69846aab24a9c0dcd2e6653.png)
选择自定义,点击下一步。
选择稍后安装操作系统,点击下一步。
![](https://img-blog.csdnimg.cn/70ceb7f10d3d4af9b5b529d422f7bb0e.png)
选择虚拟机的版本(我使用的是 CentOS 7),点击下一步。
![](https://img-blog.csdnimg.cn/47d5da406621454184a39d4285c5d68e.png)
点击下一步,设置虚拟机名称和安装位置。
![](https://img-blog.csdnimg.cn/90e33b049ce04b638fb6337ed221166f.png)
点击下一步,设置系统参数。请结合自身电脑的性能来进行设置(在任务管理器中的性能一栏中查看):
- 内存:因为我们要搭建完全分布式(一台主机两台从机),所以我们将内存总容量除 4 得到的就是每台虚拟机可设置的内存容量。我的内存是 16 G,所以在这里设置为 4G。
- 处理器:设置为和本机数量一致,不能大于。
- 网络适配器:设置为 NAT 模式。
![](https://img-blog.csdnimg.cn/9d8ab7b33abc4ec89efe85b534ed9562.png)
一直点击下一步,设置虚拟机磁盘容量,根据自身的实际情况来,建议设置为 50G,避免其它应用安装不了。并不是给多少就会在本地占用多少硬盘,而是用多少占用多少。
![](https://img-blog.csdnimg.cn/cbb1f881cb82434f80475ff9d06c81bb.png)
一直点击下一步,直到完成。编辑虚拟机,为其添加镜像文件
![](https://img-blog.csdnimg.cn/ae040ebb8eef4c48be34515ff501ba6f.png)
点击确定,我们就可以开启虚拟机,等待安装完成。
在安装过程中需要我们对系统进行一些安装配置,首先下拉菜单将语言修改为简体中文。
点击软件选择,勾选桌面那一栏,点击完成退出。
![](https://img-blog.csdnimg.cn/3dd4211562b24b32b1c9c9c069a650ef.png)
点击安装位置,选择我要配置分区。
![](https://img-blog.csdnimg.cn/c94f4ee7f58e43689c697512ca38c389.png)
点击完成,进入分区配置界面,切换成标准分区。
![](https://img-blog.csdnimg.cn/a1081c39640a4771875c797eba71d2d2.png)
点击左下角 +
号添加分区,点击下拉列表框,选择 /boot
,分配 1G 空间,点击添加,添加完成后修改文件系统为 ext4
。
![](https://img-blog.csdnimg.cn/74ea2205e05641ba925c0a5d5163285e.png)
点击左下角 +
号添加分区,点击下拉列表框,选择 swap
交换分区,分配 4G 空间。将剩余的空间全部给主目录 /
。
我这里分配完成后如下所示:
![](https://img-blog.csdnimg.cn/ac1f81fbff464d4dbf288fecc1705165.png)
点击完成接受更改,保存退出。
关闭 KDUMP
![](https://img-blog.csdnimg.cn/7928ade203e64a968d6fb4d17e9eacd7.png)
开启网络
![](https://img-blog.csdnimg.cn/434eaa791e824d4598740029efc6238b.png)
上述设置完成后,点击开始安装,设置 ROOT 密码,顺便添加一个用户,等待系统安装完成。
网络设置
系统安装完成后,我们来设置虚拟机的网络,点击左上角编辑——虚拟网络编辑器
设置网络基础信息
![](https://img-blog.csdnimg.cn/5e523d8f463c4bebb1962697641c972e.png)
设置网关
![](https://img-blog.csdnimg.cn/dc51f824090c4c4292602d8987bb1a7c.png)
点击确定,保存退出。
设置本地网络,点击控制面板,进入网络适配器界面,选择 vm8
![](https://img-blog.csdnimg.cn/4a79d981d8a041b7b81b32ed21e501f7.png)
右击,选择属性,修改 ipv4。
![](https://img-blog.csdnimg.cn/da3f3c2185884bc3b65f77749c1970ab.png)
注意:需要和虚拟机中设置的网络信息保持一致。
![](https://img-blog.csdnimg.cn/d19123535c5f414291bc9d687be5b0a6.png)
进入到系统中,打开终端,设置为静态 ip ,添加 ip 地址、网关和域名。
vi /etc/sysconfig/network-scripts/ifcfg-ens33
![](https://img-blog.csdnimg.cn/64063c99e844424888ff349fe9acbe3c.png)
重启网络服务
systemctl restart network
使用 ifconfig
命令检查是否设置成功。
![](https://img-blog.csdnimg.cn/8a6b7eda4fba4091a825e4985a2035ff.png)
到此为止,我们的虚拟机网络设置完成。
2. 安装 Hadoop 完全分布式
前置环境设置
1.修改主机名称为 “master” (你可以取其它的名字)与 hosts
文件,方便后去集群之间的映射。
# 修改主机名称
vi /etc/hostname
# 或者
hostnamectl set-hostname master
修改 hosts
文件,提前添加映射,注意保存退出。
![](https://img-blog.csdnimg.cn/9e60654cfedc482190d590b100809156.png)
2.关闭防火墙
# 临时关闭防火墙
systemctl stop firewalld
# 永久关闭防火墙
systemctl disable firewalld
3.安装相关软件
# 安装下载库
yum install -y epel-release
如果是最小化安装,还需安装以下工具:
# net-tool:工具包集合,包含ifconfig等命令
yum install -y net-tools
# vim:编辑器(可选)
yum install -y vim
4.卸载原生 JDK,最小化安装的无需操作。
rpm -qa | grep -i java | xargs -n1 rpm -e --nodeps
5.克隆两台虚拟机,作为从机使用。
右击创建好的虚拟机,选择管理——克隆——点击下一页,完整克隆。
克隆完成后,启动两台克隆机器。打开终端,修改主机名称,设置为静态 ip ,添加 ip 地址、网关和域名,注意与主节点 master
中的 hosts
文件保持一致。设置完成后,重启网络,检查是否设置成功。
免密登录设置
为了后期使用方便,我们为集群机器之间设置免密登录,这里使用 Xshell 工具使用远程登录连接操作,可以在官网免费下载 Xshell 官网,顺便也下载 Xftp 工具,方便后期传输文件和安装包。
打开 Xshell 工具,点击左上角文件——新建,在弹出框中设置名称和 ip 地址,然后点击连接,随后输入 ROOT 账号密码完成连接。
如果连接不上请检查你的虚拟机是否启动或者 ip 地址是否填写有误。
![](https://img-blog.csdnimg.cn/a9e33336fc754c3a948cb8f4071a8623.png)
三台机子都连接成功之后,开始设置免密登录。我这里给出 master
主节点免密登录其它两台从机的示例,从机免密登录主机就照葫芦画瓢吧。
# 生成公钥与私钥(三次回车)
ssh-keygen
# 向目标主机发送公钥(输入密码)
ssh-copy-id slave1
ssh-copy-id slave2
# 也需要对自己设置免密哦
ssh-copy-id master
# 免密登录,输入 exit 退出登录
ssh slave1
...
为其它两台从机设置好免密登录。
集群安装规划
为了合理的分配资源,我们需要对集群进行节点规划。
master | slave1 | slave2 | |
---|---|---|---|
HDFS | NameNode DataNode | DataNode | SecondaryNameNode DataNode |
YARN | NodeManager | ResourceManager NodeManager | NodeManager |
节点解析
名称 | 作用 |
---|---|
NameNode | 也称为 nn,管理文件系统的命名空间,维护文件系统树以及整个树上所有文件和目录,负责协调集群中的数据存储。 |
SecondaryNameNode | 帮助 NameNode 缓解压力,合并编辑日志,减少 NameNode 启动时间。 |
ResourceManager | 一个仲裁整个集群可用资源的主节点,帮助 YARN 系统管理其上的分布式应用。 |
NodeManager | YARN 中单节点的代理,它管理 Hadoop 集群中单个计算节点。 |
DataNode | 负责真正存储数据的节点,提供来自文件系统客户端的读写请求。 |
开始安装
1.上传安装包 和 JDK1.8
我这里的 Hadoop 安装包是 hadoop-3.1.3
版本,根据自身需求来。在主节点 master
中的 /opt
目录下新建两个文件夹 module
(存放数据) 和 sofeware
(存放安装包)。使用 Xftp 工具将 Hadoop 安装包 和 JDK上传到 sofeware
文件夹下,便于后期管理。
2.解压文件
解压文件到 /opt/module
中。
tar -zxvf hadoop-3.1.3.tar.gz -C /opt/module/
tar -zxvf jdk-8u212-linux-x64.tar.gz -C /opt/module/
3.配置环境变量
vi /etc/profile
# 在文件末尾添加,将路径更改为你的安装路径
#JAVA_HOME
export JAVA_HOME=/opt/module/jdk1.8.0_212
export PATH=$PATH:$JAVA_HOME/bin
#HADOOP_HOME
export HADOOP_HOME=/opt/module/hadoop-3.1.3
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
保存退出后执行命令 source /etc/profile
,使用配置的环境变量立即生效。
输入命令 java -version
验证 JDK 是否安装成功:
4. 配置 Hadoop-env.sh 文件
该位于 $HADOOP_HOME/etc/hadoop
目录下,是一个配置 Hadoop 环境变量的文件,我们只需要在其中指定 Java 安装目录即可。
export JAVA_HOME=/opt/module/jdk1.8.0_212
5. 配置 Hadoop 重要文件
在 Hadoop 中有四个重要的配置文件,位于 $HADOOP_HOME/etc/hadoop
目录下,分别是:
-
核心配置文件 —— core-site.xml
-
HDFS 配置文件 —— hdfs-site.xml
-
YARN 配置文件 —— yarn-site.xml
-
MapReduce 配置文件 —— mapred-site.xml
根据集群规划,配置文件:
1.core-site.xml
<configuration>
<!-- 指定 NameNode 的地址 -->
<property>
<name>fs.defaultFS</name>
<value>hdfs://master:8020</value>
</property>
<!-- 指定 Hadoop 数据的存储目录 -->
<property>
<name>hadoop.tmp.dir</name>
<value>/opt/module/hadoop-3.1.3/data</value>
</property>
<!-- 配置 HDFS 网页登录使用的静态用户为 master -->
<property>
<name>hadoop.http.staticuser.user</name>
<value>master</value>
</property>
</configuration>
2.hdfs-site.xml
<configuration>
<!-- nn(NameNode) web 端访问地址-->
<property>
<name>dfs.namenode.http-address</name>
<value>master:9870</value>
</property>
<!-- 2nn(SecondaryNameNode) web 端访问地址-->
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>slave2:9868</value>
</property>
</configuration>
3.yarn-site.xml
<configuration>
<!-- 指定 MR 走 shuffle -->
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<!-- 指定 ResourceManager 的地址-->
<property>
<name>yarn.resourcemanager.hostname</name>
<value>slave1</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.log-aggregation-enable</name>
<value>true</value>
</property>
<!-- 设置日志聚集服务器地址 -->
<property>
<name>yarn.log.server.url</name>
<value>http://master:19888/jobhistory/logs</value>
</property>
<!-- 设置日志保留时间为 7 天 -->
<property>
<name>yarn.log-aggregation.retain-seconds</name>
<value>604800</value>
</property>
</configuration>
4.mapred-site.xml
<configuration>
<!-- 指定 MapReduce 程序运行在 Yarn 上 -->
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
<!-- 历史服务器端地址 -->
<property>
<name>mapreduce.jobhistory.address</name>
<value>master:10020</value>
</property>
<!-- 历史服务器 web 端地址 -->ha
<property>
<name>mapreduce.jobhistory.webapp.address</name>
<value>master:19888</value>
</property>
</configuration>
6.配置 workers/slaves 文件
在 Hadoop 的 2.x 版本中 workers
叫 slaves
。
该文件位于 $HADOOP_HOME/etc/hadoop
目录下,用于记录集群运行的所有主机。
vi $HADOOP_HOME/etc/hadoop/workers
# 添加你的主机
master
slave1
slave2
注意:该文件中添加的内容结尾不允许有空格,文件中不允许有空行。
7.文件分发
我们上面的操作都只是在主节点 master
中进行,现在我们需要把所有文件分发给从机 slave1
和 slave2
。
# 分发环境变量
rsync -r /etc/profile slave1:/etc/profile
rsync -r /etc/profile slave2:/etc/profile
# 分发 JDK 和 Hadoop
scp -r /opt/module slave1:/opt
scp -r /opt/module slave2:/opt
分发完成后,进入两台从机使分发的环境变量立即生效。
source /etc/profile
8.启动集群
如果集群是第一次启动,则需要先格式化 NameNode 节点。
hdfs namenode -format
格式化正确则如下所示:
![](https://img-blog.csdnimg.cn/9c9984cf602e46f4952e903ff96dad02.png)
格式化完成后,启动集群:
# 在主节点中运行
start-dfs.sh
# 在 ResourceManager 节点中运行
start-yarn.sh
# 或者
# 在主节点中运行
start-all.sh
# 在 ResourceManager 节点中运行
start-yarn.sh
启动时如果发生如下错误:
![](https://img-blog.csdnimg.cn/8ddf1b395d344c24a5b8cea343755ec3.png)
请在 /etc/profile
文件末尾添加如下参数
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
添加完成后分发到其它节点,并使其立即生效。
启动完成后,输入 jps
命令检查各节点是否正常:
master
主节点
![](https://img-blog.csdnimg.cn/38267a34bdac48468526321ab4a62139.png)
slave1
节点
![](https://img-blog.csdnimg.cn/7473feea69b04bc7a021e853a0ae9332.png)
slave2
节点
![](https://img-blog.csdnimg.cn/2e383466872c473ba5c04778cf5481fc.png)
在本地浏览器中查看 Hadoop web 界面:192.168.10.10:9870
![](https://img-blog.csdnimg.cn/012adff906e74517b4b7402fdc965d33.png)
到此为止,我们的 Hadoop 完全分布式就已经搭建完成啦!
相关文章
- 【技术种草】cdn+轻量服务器+hugo=让博客“云原生”一下
- CLB运维&运营最佳实践 ---访问日志大洞察
- vnc方式登陆服务器
- 轻松学排序算法:眼睛直观感受几种常用排序算法
- 十二个经典的大数据项目
- 为什么使用 CDN 内容分发网络?
- 大数据——大数据默认端口号列表
- Weld 1.1.5.Final,JSR-299 的框架
- JavaFX 2012:彻底开源
- 提升as3程序性能的十大要点
- 通过凸面几何学进行独立于边际的在线多类学习
- 利用行动影响的规律性和部分已知的模型进行离线强化学习
- ModelLight:基于模型的交通信号控制的元强化学习
- 浅谈Visual Source Safe项目分支
- 基于先验知识的递归卡尔曼滤波的代理人联合状态和输入估计
- 结合网络结构和非线性恢复来提高声誉评估的性能
- 最佳实践丨云开发CloudBase多环境管理实践
- TimeVAE:用于生成多变量时间序列的变异自动编码器
- 具有线性阈值激活的神经网络:结构和算法
- 内网渗透之横向移动 -- 从域外向域内进行密码喷洒攻击