博客 基于完全分布式部署Hadoop

基于完全分布式部署Hadoop

   数栈君   发表于 2024-10-31 16:07  308  0


基于完全分布式模式部署Hadoop时,需要将Hadoop中HDFS和YARN的相关服务运行在不同的计算机中,这里使用的是已经部署好的三台虚拟机(Hadoop1、Hadoop2和Hadoop3)。为避免在使用过程中造成混淆,先规划HDFS和YARN的相关服务运行的虚拟机,如图所示。
http://dtstack-static.oss-cn-hangzhou.aliyuncs.com/2021bbs/files_user1/article/9202a8395f1a5f4fc12bb81c60e06cb3..png


图中,Hadoop集群包含一台Master主节点(虚拟机Hadoop1)和一和两台Slave从节点(虚拟机Hadoop2和Hadoop3)

主节点管理从节点,运行HDFS和YARN的NameNode服务和ResourceManager服务

从节点负责实际存储和计算,运行HDFS和YARN的DataNode服务和NodeManager服务

还有一个SecondaryNode服务辅助NameNode服务,与NameNode服务运行在不同的服务器。这里指定SecondaryNameNode服务运行在虚拟机Hadoop2中。

接下来在虚拟机Hadoop1、Hadoop2和Hadoop3上演示如何基于完全分布式模式部署Hadoop。

一、安装Hadoop
以解压缩的方式安装Hadoop,将Hadoop安装到虚拟机Hadoop1的/export/servers目录。

tar -zxvf /export/software/hadoop-3.3.0.tar.gz -C /export/servers

二、配置Hadoop环境变量
在Hadoop1上执行vi /etc/profile,在系统环境变量文件profile的底部添加如下内容:

export HADOOP_HOME=/export/servers/hadoop-3.3.0
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin

配置成功后,按Esc键,输入:wq保存退出。再输入source /etc/profile初始化系统环境变量,使添加的Hadoop系统环境变量生效。

三、验证Hadoop系统环境变量是否配置成功
在虚拟机的任意目录执行hadoop version,查看当前虚拟机Hadoop版本号,如下所示出现版本号,则表明Hadoop系统环境变量配置成功。

[root@hadoop1 ~]# hadoop version
Hadoop 3.3.0
Source code repository https://gitbox.apache.org/repos/asf/hadoop.git -r aa96f1871bfd858f9bac59cf2a81ec470da649af
Compiled by brahma on 2020-07-06T18:44Z
Compiled with protoc 3.7.1
From source with checksum 5dc29b802d6ccd77b262ef9d04d19c4
This command was run using /export/servers/hadoop-3.3.0/share/hadoop/common/hadoop-common-3.3.0.jar

四、修改Hadoop配置文件
修改Hadoop的自定义配置文件实现基于完全分布式模式部署Hadoop。以下所有操作均在/export/servers/hadoop-3.3.0/etc/hadoop/目录下,需先执行cd /export/servers/hadoop-3.3.0/etc/hadoop/。

1.配置Hadoop运行时的环境(hadoop-env.sh)
执行vi hadoop-env.sh,在底部添加以下内容。

export JAVA_HOME=/export/servers/jdk1.8.0_411 #指定Hadoop使用的JDK,这里使用的是本地安装的JDK
export HDFS_NAMENODE_USER=root #指定管理NameNode的务的用户
export HDFS_DATANODE_USER=root #指定管理DataNode服务的用户
export HDFS_SECONDARYNAMENODE_USER=root #指定管理SecondaryNameNode服务的用户
export HDFS_RESOURCEMANAGER_USER=root #指定管理ResourceManager服务的用户
export HDFS_NODEMANAGER_USER=root #指定管理NodeManager服务的用户

添加完后,按Esc键,输入:wq保存退出。

2.配置Hadoop(core-site.xml)
执行vi core-site.xml,在标签内添加以下内容。

<property>
<!--参数fs.defaultFS:指定HDFS(NameNode)的通讯地址,包括主机名(hadoop1)和端口号(9000)-->
<name>fs.defaultFS</name>
<value>hdfs://hadoop1:9000</value>
</property>

<property>
<!--指定HADOOP临时数据的存储目录-->
<name>hadoop.tmp.dir</name>
<value>/export/data/hadoop-3.3.0</value>
</property>

<property>
<!--指定通过Web UI访问HDFS的用户root-->
<name>hadoop.http.staticuser.user</name>
<value>root</value>
</property>

<property>
<!--以下两个皆为指定用户代理功能,允许任何服务器和任何用户组的root都可以向Hadoop提交任务-->
<name>hadoop.proxyuser.root.hosts</name>
<value>*</value>
</property>

<property>
<name>hadoop.proxyuser.root.groups</name>
 <value>*</value>
</property>

<property>
<!--参数fs.trash.interval:指定HDFS被删除文件在回收站的存放时间(1440秒),超过该时间后,才会被真正删除-->
<name>fs.trash.interval</name>
<value>1440</value>
</property>

添加完后,按Esc键,输入:wq保存退出。

3.配置HDFS(hdfs-site.xml)
执行vi hdfs-site.xml,在标签内添加以下内容。

<property>
<!--参数dfs.replication:指定HDFS的副本数为2-->
<name>dfs.replication</name>
<value>2</value>
</property>

<property>
<!--参数dfs.namenode.secondary.http-address:指定SecondaryNameNode服务的通讯地址,包括主机名(Hadoop2)和端口号(9868)-->
<name>dfs.namenode.secondary.http-address</name>
<value>hadoop2:9868</value>
</property>

<property>
<name>dfs.namenode.name.dir</name>
<value>file:/export/servers/hadoop-3.3.0/tmp/dfs/name</value>
</property>

<property>
<name>dfs.datanode.data.dir</name>
<value>file:/export/servers/hadoop-3.3.0/tmp/dfs/data</value>
</property>

添加完后,按Esc键,输入:wq保存退出。

4.配置MapReduce(mapred-site.xml)
执行vi mapred-site.xml,在标签内添加以下内容。

<property>
<!--参数mapreduce.framework.name:指定MapReduce服务运行在YARN上-->
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>

<property>
<!--参数mapreduce.jobhistory.adress:指定MapReduce服务的通讯地址,包括主机名(hadoop1)和端口号(10020),可查看运行过的所有MapReduce服务-->
<name>mapreduce.jobhistory.adress</name>
<value>hadoop1:10020</value>
</property>

<property>
<!--参数mapreduce.jobhistory.webapp.adress:指定通过Web UI访问的MapReduce历史服务的地址,包括主机号(hadoop1)和端口号(19888)-->
<name>mapreduce.jobhistory.webapp.adress</name>
<value>hadoop1:19888</value>
</property>

<property>
<!--参数yarn.app.mapreduce.am.env:指定MapReduce任务的运行环境,即Hadoop的安装目录-->
<name>yarn.app.mapreduce.am.env</name>
<value>HADOOP_MAPRED_HOME=${HADOOP_HOME}</value>
</property>

<property>
<!--参数mapreduce.map.env:指定MapReduce任务中Map阶段的运行环境,即Hadoop的安装目录-->
<name>mapreduce.map.env</name>
<value>HADOOP_MAPRED_HOME=${HADOOP_HOME}</value>
</property>

<property>
<!--参数mapreduce.reduce.env:指定MapReduce任务中Reduce阶段的运行环境,即Hadoop的安装目录-->
<name>mapreduce.reduce.env</name>
<value>HADOOP_MAPRED_HOME=${HADOOP_HOME}</value>
</property>

添加完后,按Esc键,输入:wq保存退出。

5.配置YARN(yarn-site.xml)
执行vi yarn-site.xml,在< configuration >标签内添加以下内容。

<property>
<!--参数yarn.resourcemanager.hostname:指定ResourceManager服务运行在虚拟机Hadoop1-->
<name>yarn.resourcemanager.hostname</name>
<value>hadoop1</value>
</property>

<property>
<!--参数yarn.nodemanager.aux-services:指定NodeManager运行服务的附属服务,这里只有将参数配置成mapreduce_shuffle,才可以在YARN上运行MapReduce任务-->
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>

<property>
<!--参数yarn.nodemanager.pmem-check-enabled:指定是否启动检查每个任务使用的物理内存,false表示关闭检测-->
<name>yarn.nodemanager.pmem-check-enabled</name>
<value>false</value>
</property>

<property>
<!--参数yarn.nodemanager.vmem-check-enabled:指定是否启动检查每个任务使用的虚拟内存,false表示关闭检测-->
<name>yarn.nodemanager.vmem-check-enabled</name>
<value>false</value>
</property>

<property>
<!--参数yarn.log-aggregation-enable:指定是否开启日志聚合功能(指将YARN集群所有日志聚合在一起,true表示开启该功能)-->
<name>yarn.log-aggregation-enable</name>
<value>true</value>
</property>

<property>
<!--参数yarn.log.server.url:指定日志聚合的服务器-->
<name>yarn.log.server.url</name>
<value>http://hadoop1:19888/jobhistory/logs</value>
</property>

<property>
<!--参数yarn.log.server.url:指定日志聚合后日志的保存时间-->
<name>yarn.log-aggregation.retain-seconds</name>
<value>604800</value>
</property>

添加完后,按Esc键,输入:wq保存退出。

6.配置从节点运行的服务器(workers)
执行vi workers,将workers文件的默认内容修改为以下内容

hadoop2
hadoop3

修改完后,按Esc键,输入:wq保存退出。

五、分发Hadoop安装目录
将虚拟机Hadoop1中的安装目录分发至Hadoop2和Hadoop3中的安装目录中

scp -r /export/servers/hadoop-3.3.0 root@hadoop2:/export/servers/
scp -r /export/servers/hadoop-3.3.0 root@hadoop3:/export/servers/

六、分发Hadoop系统环境变量
将虚拟机Hadoop1中的系统环境变量profile分发至Hadoop2和Hadoop3中的/etc目录中

scp /etc/profile root@hadoop2:/etc
scp /etc/profile root@hadoop3:/etc

上述命令执行完成后,分别在Hadoop2和Hadoop3中执行source /etc/profile初始化系统环境变量。

七、格式化HDSF文件系统
在Hadoop1上执行hdfs namenode -format,进行格式化HDFS文件系统。若出现“successfully formatted.”的信息,则说明格式化成功。格式化HDFS操作只在初次启动Hadoop集群之前进行,再次启动Hadoop集群,则无需重新格式化。

八、启动Hadoop
在Hadoop1上分别执行start-dfs.sh和start-yarn.sh,以在Hadoop1、Hadoop2和Hadoop3上启动HDFS和YARN的相关服务。若要关闭Hadoop,则在Hadoop1上分别执行stop-dfs.sh和stop-yarn.sh。

九、查看Hadoop运行状态
分别在Hadoop1、Hadoop2和Hadoop3上执行jps,查看Hadoop的运行状态,如下所示。
[root@hadoop1 ~]# jps
44801 NameNode
10347 ResourceManager
55564 Jps

[root@hadoop2 ~]# jps
6432 SecondaryNameNode
6836 NodeManager
15717 Jps
6254 DataNode

[root@hadoop3 ~]# jps
5744 NodeManager
5602 DataNode
11430 Jps

由上可知:

Hadoop1运行着HDFS的NameNode服务和ResourceManager服务;
Hadoop2运行着HDFS的SecondaryNameNode和DataNode服务,以及YARN的NodeManager服务;
Hadoop3运行着HDFS的DataNode服务和YARN的NodeManager服务。说明Hadoop启动成功。
————————————————

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。




原文链接:https://blog.csdn.net/2301_76901778/article/details/143273164


本文系转载,版权归原作者所有,如若侵权请联系我们进行删除!
《数据治理行业实践白皮书》下载地址:https://fs80.cn/4w2atu
《数栈V6.0产品白皮书》下载地址:https://fs80.cn/cw0iw1
想了解或咨询更多有关袋鼠云大数据产品、行业解决方案、客户案例的朋友,浏览袋鼠云官网:https://www.dtstack.com/?src=bbs
同时,欢迎对大数据开源项目有兴趣的同学加入「袋鼠云开源框架钉钉技术群」,交流最新开源技术信息,群号码:30537511,项目地址:https://github.com/DTStack

0条评论
社区公告
  • 大数据领域最专业的产品&技术交流社区,专注于探讨与分享大数据领域有趣又火热的信息,专业又专注的数据人园地

最新活动更多
微信扫码获取数字化转型资料
钉钉扫码加入技术交流群