Hadoop完全分布式集群搭建

Hadoop完全分布式集群搭建

清泓
2022-05-06 / 0 评论 / 4,021 阅读 / 7136字 / 正在检测是否收录...

Hadoop完全分布式集群搭建

环境准备

操作环境主机名IP地址JDKhadoop版本
CentOS7hadoop102192.168.128.172jdk1.8.0_191hadoop-2.7.2
CentOS7hadoop103192.168.128.173jdk1.8.0_191hadoop-2.7.2
CentOS7hadoop104192.168.128.174jdk1.8.0_191hadoop-2.7.2

配置静态IP、主机名及主机映射

1.修改各节点的网络配置

命令行输入

vim /etc/sysconfig/network-scripts/ifcfg-ens33

进入虚拟机的网卡配置

需要修改虚拟机的网卡默认配置,将虚拟机的网卡配置设置为静态ip

ip地址 根据 VMware 虚拟网络进行相关配置 如图
1.png
2.png
在虚拟机里修改配置可以如图所示
3.png
修改完命令行输入:

service network restart

重启网络服务

对其余两个hadoop节点也同样做上述操作,只不过IPADDR值不一样,分别填其节点对应的ip

2.修改节点主机名,并且添加各节点映射

在命令行中输入

vim /etc/hostname

进入文件中修改hostname名称为hadoop102,在其他两个子节点的hostname处分别填hadoop103和hadoop104

配置节点主机映射,命令行输入

vim /etc/hosts

添加节点映射
4.png
这里多写了一些,此次搭建只需要添加hadoop102,hadoop103,hadoop104的映射即可

关闭防火墙

关闭防火墙后才能在三台机器之间互相通信

所以关闭防火墙是很有必要的

可以使用这条命令来检查我们虚拟机开机时的防火墙状态

chkconfig iptables --list    

如果是已经关闭应该会如下图所示
5.png
如果没有关闭我们可以使用这两条命令来关闭我们的防火墙

systemctl stop firewalld

这条命令是在本次虚拟机开启过程中关闭防火墙,也就是一次性关闭

还需要这条命令禁止防火墙关机自启动,这样防火墙就是是关闭了

systemctl disable firewalld.service

当hadoop102关闭防火墙后,对于hadoop103与hadoop104也要做同样的操作

在防火墙关闭完成后,输入

reboot

重启虚拟机,检查防火墙是否已经关闭

配置节点间ssh免密

在hadoop102上输入

ssh-keygen -t rsa

一直按回车

完成后在保证三台虚拟机开启且完成之前所有配置的情况下输入:

[root@hadoop102 ~]# ssh-copy-id hadoop102
[root@hadoop102 ~]# ssh-copy-id hadoop103
[root@hadoop102 ~]# ssh-copy-id hadoop104

注:如果提示not found 可能是ssh没有安装,输入

yum install openssh-clients

安装openssh
在hadoop102上完成后,在其他两个节点上重复上述操作

验证ssh免密登录是否成功
6.png
这里可以看到使用ssh登录到了hadoop103节点上

安装java和hadoop

使用xftp将hadoop和java的压缩包上传到我们新建的/opt/software上同时新建一个module文件夹放置解压后的hadoop和java,新建文件夹代码如下、

[root@hadoop102 ~]# cd /opt/
[root@hadoop102 ~]# mkdir software
[root@hadoop102 ~]# mkdir module

上传完成之后我们需要解压java和hadoop到/opt/module下,以便未来的管理

解压代码如下

tar -zxf jdk-8u191-linux-x64.tar.gz -C /opt/module/
tar -zxf hadoop-2.7.2.tar.gz -C /opt/module/

解压完成后/opt/module如图所示
7.png
配置环境变量

vi /etc/profile

在末尾添加

export JAVA_HOME=/opt/module/jdk1.8.0_191
export PATH=$PATH:$JAVA_HOME/bin

export HADOOP_HOME=/opt/module/hadoop-2.7.2
export PATH=$PATH:$HADOOP_HOME/bin
export PATH=$PATH:$HADOOP_HOME/sbin

退出后,输入

source /etc/profile

使其生效

验证java和hadoop环境变量是否配置完成

[root@hadoop103 module]# java -version
java version "1.8.0_191"
Java(TM) SE Runtime Environment (build 1.8.0_191-b12)
Java HotSpot(TM) 64-Bit Server VM (build 25.191-b12, mixed mode)
[root@hadoop103 module]# hadoop version
Hadoop 2.7.2
Subversion Unknown -r Unknown
Compiled by root on 2017-05-22T10:49Z
Compiled with protoc 2.5.0
From source with checksum d0fda26633fa762bff87ec759ebe689c
This command was run using /opt/module/hadoop-2.7.2/share/hadoop/common/hadoop-common-2.7.2.jar
[root@hadoop103 module]# 

环境变量配置完成, 在其他两个节点上重复上述操作

修改hadoop配置文件

1.修改core-site.xml

core-site.xml文件包含了NameNode主机地址,监听端口等信息,对于这个完全分布式模型来说,此次教程的主机地址为hadoo101,NameNode默认使用的端口为8020。

<configuration>
<!-- 指定HDFS中NameNode的地址 -->
<property>
        <name>fs.defaultFS</name>
    <value>hdfs://hadoop101:8020</value>
</property>
        <!-- 指定hadoop运行时产生文件的存储目录 -->
        <property>
                <name>hadoop.tmp.dir</name>
                <value>/opt/module/hadoop-2.7.2/data/tmp</value>
        </property>
</configuration>

2.修改hdfs-site.xml

hdfs-site.xml用于配置/HDFS的相关属性,例如数据块的副本参数,数据块的副本对于完全分布式来说建议为3

<configuration>

  <property>
        <name>dfs.replication</name>
        <value>3</value>
  </property>

  <property>
        <name>dfs.namenode.secondary.http-address</name>
        <value>hadoop104:50090</value>
  </property>

  <property>
        <name>dfs.name.dir</name>
        <value>/opt/module/hadoop-2.7.2/data/tmp/name</value>

  </property>

  <property>
      <name>dfs.data.dir</name>
      <value>/opt/module/hadoop-2.7.2/data/tmp/data</value>
  </property>

</configuration>

3.修改yarn-site.xml

<configuration>
<!-- Site specific YARN configuration properties -->
<!-- reducer获取数据的方式 -->
    <property>
        <name>yarn.nodemanager.aux-services</name>
        <value>mapreduce_shuffle</value>
    </property>

<!-- 指定YARN的ResourceManager的地址 -->
    <property>
        <name>yarn.resourcemanager.hostname</name>
        <value>hadoop103</value>
    </property>
</configuration>

4.修改mapred-site.xml

重命名文件,本身是没有mapred-site.xml这个文件的
输入

mv mapred-site.xml.template mapred-site.xml

完成后

[root@hadoop102 ~]#vim mapred-site.xml

<configuration>
<!-- 指定mr运行在yarn上 -->
<property>
    <name>mapreduce.framework.name</name>
    <value>yarn</value>
</property>

<property>
    <name>mapreduce.jobhistory.address</name>
    <value>hadoop102:10020</value>
</property>

<property>
    <name>mapreduce.jobhistory.webapp.address</name>
    <value>hadoop102:19888</value>
</property>
</configuration>

5.修改slaves

slaves文件里面记录的是集群里所有DataNode的主机名

[root@hadoop102 hadoop]# vim slaves
hadoop102
hadoop103
hadoop104

6.修改yarn-env.sh,配置JAVA_HOME

export JAVA_HOME=/opt/module/jdk1.8.0_191

7.修改hadoop-env.sh,配置JAVA_HOME

export JAVA_HOME=/opt/module/jdk1.8.0_191

这些配置文件改好后,返回/opt/module目录下

把hadoop102下修改的文件分发到hadoop103和hadoop104下

[root@hadoop102 module]# scp -r hadoop root@hadoop103:/opt/module/
[root@hadoop102 module]# scp -r hadoop root@hadoop104:/opt/module/

测试Hadoop集群

格式化namenode

[root@hadoop2 hadoop-2.7.2]# bin/hdfs namenode –format

格式化成功后,启动集群

启动集群

[root@hadoop2 hadoop-2.7.2]# start-all.sh

每个节点上使用jps命令查看hadoop启动状况
hadoop102

[root@hadoop102 hadoop-2.7.2]# jps

8.png
hadoop103

[root@hadoop104 hadoop-2.7.2]# jps

9.png
hadoop104

[root@hadoop104 hadoop-2.7.2]# jps

10.png

启动完成后

在浏览器上访问可视化页面:http://namenode所在节点IP:50070
11.png

1

打赏

评论

博主关闭了当前页面的评论