欢迎光临散文网 会员登陆 & 注册

Hadoop 完全分布式环境的搭建

2023-03-13 19:35 作者:ZZR老师  | 我要投稿

一、前言

对于Hadoop完全分布式环境搭建,总体来说还是具有一定的复杂度。本篇文章简化了不必要的步骤,极简的完成了分布式环境搭建。

二、关于虚拟机的选择

如果您使用的windows系统,请安装VMware虚拟机软件,需要特别注意的是,如果你使用的Windows 11的操作系统,请安装VMware17版本会有更好的体验。

三、集群规划

集群规划

四、安装Linux

本文使用的是CentOS 7,选择最小化安装,设定root密码为123456,安装过程5分钟左右。过程较为简单,不再赘述。

安装过程

五、配置网络

新安装好的系统重新启动后,第一件事情,配置网络。

首先,查看当前网络情况,使用:

默认网络配置

图中第1项 lo:是本地环回接口的意思;ip只能是“127.0.0.1”。

上图中ens33:本地未设置的网络设备名,默认情况下,该网络还未被设定ip地址和启用。它对应着一个配置文件ifcfg-ens33.此文件在/etc/sysconfig/network-scripts/ifcfg-ens33,编辑这个文件即可配置ip。

1.编辑的网络配置文件:

2.修改内容如下:

技巧:利用VMware编辑菜单的粘贴,可以复制文字。编辑好上面的内容,然后复制,可以很快速正确的完成ip地址的设定,注意不能有中文。

3.重启网络服务

 重新启动网络后,配置才会生效,此时也可以通过ping命令测试下网络的连通情况。

网络配置生效后,推荐在本地使用连接工具,连接虚拟机进行后续配置,本文使用MobaXterm进行远程连接。

六、修改主机名

1.修改主机名,将本机主机名修改为node1

注意,修改后,无需重启系统,重新启动连接客户端即可。

修改主机名,重启连接后

2.还需要修改主机名与ip地址的映射,不然启动hadoop时报错。通过修改/etc/hosts文件,添加如下内容,ip地址与主机名的映射,可以参看前面的集群规划。

修改后如下图所示:

hosts文件内容

修改完成后,可以通过如下命令,测试是否成功。

七、关闭防火墙

如果不关闭防火墙,那么,需要依次放行,Hadoop运行过程中的网络服务端口,比较麻烦。所以在学习的过程中,索性就把防火墙关闭,命令如下:

八、安装JDK

根据官方文档可知,JDK具有较好的兼容性,所以,本文选用JDK8版本安装。

官方JDK兼容文档

1.上传解压JDK

请到Oracle官网下载JDK8安装包,上传至虚拟机的/root/soft目录,并解压。涉及到的主要命令如下:

2.配置JDK

编辑profile文件,配置环境变量。

添加内容:

最后内容如下图:

环境变量修改后

刷新环境变量,使配置生效:

九、配置Hadoop

1.下载和上传

请到官网下载所需要的Hadoop 版本,本文选用的是hadoop3.2.2,其他版本也是类似的安装方法:

下载

上传至虚拟机后,对其解压:

2.配置core-site.xml(核心站点)

此文件位于hadoop安装目录下,etc/hadoop/文件夹

fs.defaultFS:用来设定hadoop使用的文件系统及hdfs服务器的地址。

hadoop.tmp.dir:临时数据目录。但是通过hdfs-default.xml可知,很多路径都依据hadoop.tmp.dir 路径。而hadoop.tmp.dir默认为linux的临时路径,重启启动或系统硬盘吃紧时,就会释放这个路径内容,使得hadoop报错,所以强烈推荐要修改这个路径。

在hadoop安装目录执行

3.修改hdfs-site.xml

主要设定namenode(主节点)和secondarynamenode(辅助节点)的站点地址。

4.修改hadoop-env.sh

此文件位于hadoop安装目录下,etc/hadoop/文件夹,在第54行左右找到export JAVA_HOME,根据JDK的安装路径,配置此部分。

5.修改mapred-site.xml

此文件主要配置了,以下三方面内容:

(1)设定分布式资源管理方案为yarn,默认是local;

(2)设置 历史任务服务器地址 ;

(3)设置历史服务器web应用地址。

6.修改yarn-site.xml

此文件主要配置了,以下两方面内容:

(1)设置ResourceManager主机名;

(2)NodeManager上运行的附属服务。需配置成mapreduce_shuffle,才可运行MapReduce程序。

注意:

Hadoop3.1.3以上版本安装后,执行MapReduce操作出现包冲突错误:

找不到或无法加载主类org.apache.hadoop.mapreduce.v2.app.MRAppMaster。
解决办法

执行,如下命令,返回hadoop的classpath值,并把这些值复制了。

编辑yarn-site.xml,添加yarn.application.classpath属性,值为上面命令的值,如下图所示:

yarn-site.xml

7.配置etc/hadoop/workers

配置从节点列表,此文件中列出每个从节点的hostname 或ip。

8.定义hdfs和yarn用户

(1)在/hadoop/sbin路径下: 将start-dfs.sh,stop-dfs.sh两个文件顶部添加以下参数:

(2)start-yarn.sh,stop-yarn.sh顶部也需添加以下:

9.配置hadoop的环境变量

使用 vi /etc/profile或连接工具的文本编辑器,在profile文件中添加如下内容:

然后更新并测试:

十、复制两个虚拟机

1.完全关闭后,复制虚拟机硬盘,然后文件夹文本改名为node2和node3。

复制后

2.双击node2里面的虚拟机

3.修改虚拟机的名字为node2,然后启动

4.启动时选择,我已经复制该虚拟机

5.修改IP地址为:192.168.6.22

重启网络服务

6.修改主机名:

7.配置node3

按照如上步骤配置node3

(1)双击node3文件夹里的虚拟机;

(2)修改虚拟机名为node3;

(3)启动虚拟机,选择【我已经复制该虚拟机】

(4)修改IP地址为:192.168.6.33

(5)修改主机名为node3

8.重启新配置的虚拟机

十一、配置免密登录

为什么要免密登录?

在分布式模式下,hadoop需要联机操作,需要免密操作;
Hadoop 节点众多, 所以一般在主节点启动从节点, 这个时候就需要程序自动在主节点登录到从节点中, 如果不能免密就每次都要输入密码, 非常麻烦。

具体步骤如下:

1.推荐配置前在虚拟机中创建快照;

2.使用连接工具分配连接node1、node2和node3,然后配置免密登录。

3.在三台机器分别执行以下命令,生成公钥与私钥。

执行该命令之后,按三个回车即可。

4.拷贝公钥到同一台机器,三台机器分别执行如下命令:

输入yes和主机密码123456

5.将第一台机器的公钥拷贝到其他机器上,在第一台机器上面指向以下命令:

十二、启动集群

要启动 Hadoop 集群,需要启动 HDFS 和 YARN 两个模块。 注意: 首次启动 HDFS 时,必须对其进行格式化操作。 第一台机器执行以下命令,如果设置了环境变量,不需要加目录。

jps查看已启动的服务

服务列表

注意,如果重复格式化了,要选N,如果选了Y,有可能出现如下错误:
Re-format filesystem in Storage Directory /tmp/hadoop-root/dfs/name ? (Y or N)

解决办法:

可以删除core.site.xml的hadoop.tmp.dir所定义的目录里的内容。

十三、查看集群

推荐将上面的地址收藏,这样调试比较方便。

十四、测试集群

1.创建目录

2.拷贝input文件中的内容到分布式文件系统

3.检查是否启动了3个服务

执行操作时,会把日志写到历史服务器,因此需要启动历史服务器。主服务器(node1),任务过多,有时会卡住,导致历史服务器访问失败,程序执行失败。所以,要为主服务器分配更多的CPU和内存资源或将历史服务器放到其他节点中,例如,node3中,启动历史服务器要到node3主机中启动。

4.执行程序

进入hadoop安装路径,执行如下命令(运行需要等待5分钟左右):

5.查看结果

6.再次执行

7.关闭服务

总结

恭喜您,能够看到这里,证明您已经配置成功了。最后,我们成功运行了官方的程序,在执行效率上可能与您的预期不一致。主要有两个原因,首先,咱们的节点配置实在是太差了。其次Hadoop是一个离线计算的系统,如果只跑少量数据的话体现不出他的优势。Hadoop的优势在于计算大规模的海量数据,hadoop不是为了解决性能问题,是为了解决伸缩、分布式存储和计算问题。好了,就到这里吧。


Hadoop 完全分布式环境的搭建的评论 (共 条)

分享到微博请遵守国家法律