Hadoop3.x集群搭建及配置的完整操作流程

一、Linux安装及网络配置

1.虚拟机的选择

虚拟机选择的是VMware Workstation Pro16,下载地址https://www.vmware.com/cn.html,自行选择需要的版本,然后正版激活的方式就因钱而异了。

2.系统的选择

系统选择的是基于Linux内核的CentOS7,下载地址http://vault.centos.org/,将iso文件保存在本地任意文件夹内即可。

3.安装CentOS7

具体安装的流程推荐看这篇博客,写的非常细致:https://blog.csdn.net/qq_39135287/article/details/83993574

4.CentOS7基本设置

先完成一台虚拟机的基本配置,作为母虚拟机。
配置hadoop集群至少需要三台虚拟机,这三台虚拟机是通过对母虚拟机的克隆得到的。

4.1母虚拟机的操作

4.1.1修改网络信息

输入:

vi /etc/sysconfig/network-scripts/ifcfg-ens33
//修改以下内容
BOOTPROTO=static  //静态IP地址
ONBOOT=yes        //开机自动启用网络连接
//添加以下内容
IPADDR=192.168.***.1    //设置IP地址
NETMASK=255.255.255.0   //子网掩码
GATEWAY=192.168.***.2   //设置网关(网关是和IP在同一个子字段下的不会被IP使用的地址)
DNS1=192.168.1.1        //DNS设置是根据当前使用的网络决定的

IP设置的规则:三者相同即保证以下三个地方查看到的IP的前三个网段相同)
1.CentOS7中 /etc/sysconfig/network-scripts/ifcfg-ens33IPADDR
2.Windows + R输入cmd进入命令行模式,输入ipconfig查看到的以太网适配器 VMware Network Adapter VMnet8下的IPv4 地址
3.进入VMware依次点击编辑(E)-虚拟网络编辑器(N)-VMnet8(NAT模式)-NAT设置(S)后看到的子网IP,注意这里看到的网关即/etc/sysconfig/network-scripts/ifcfg-ens33GATEWAY应该设置为的网关

4.1.2永久关闭防火墙

依次输入:

systemctl stop firewalld.service    // 停止firewalld
 
systemctl disable firewalld.service // 禁止开机启动

输入:

vi /etc/sysconfig/selinux 

SELINUX修改为disabled

全部修改完成后输入service network restart重启网络服务,或者直接重启虚拟机,此时母虚拟机的基本配置就完成了。

4.2创建hadoop集群中的三台虚拟机

4.2.1将母虚拟机克隆三份
4.2.1单独配置每台虚拟机的网络(四步)

第一步:

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

修改IPADDR,修改IP以区分不同的虚拟机

第二步:

vi /etc/hostname

修改该主机的名称,以用名称的方式区分不同虚拟机

第三步:

vi /etc/hosts

将三台虚拟机的IP和主机名输入进去
例如:

192.168.11.111 hadoop1
192.168.11.222 hadoop2
192.168.11.333 hadoop3

第四步:
去本机C:\Windows\System32\drivers\etc\hosts把新的虚拟机的IP和主机名添加进去,为了可以在网络上通过主机名找到对应的IP

二、Haoop集群配置

集群的三台机器为hadoop2、3、4

1.创建新用户testman

[root@hadoop1 ~]$ useradd testman
[root@hadoop1 ~]$ passwd testman

2.赋予testman用户root的权限

[root@hadoop1 ~]#vi /etc/sudoers

修改以下内容:

## Allow root to run any commands anywhere
root      ALL=(ALL)     ALL  //原有内容
testman   ALL=(ALL)     ALL  //添加该行

3.在/opt目录操作

在/opt目录下创建module、software文件夹,并修改所有者

[testman@hadoop101 opt]$ sudo mkdir module
[testman@hadoop101 opt]$ sudo mkdir software
[testman@hadoop1 opt]$ sudo chown testman:testman module/ software/

4.安装JDK和Hadoop

使用Xftp,将JDK和Hadoop的安装jar包放进/opt/software中,并解压到/opt/module

[testman@hadoop1 software]$ tar -zxvf jdk-8u144-linux-x64.tar.gz -C /opt/module/
[testman@hadoop1 software]$ tar -zxvf hadoop-3.1.3.tar.gz -C /opt/module/

获取JDK和Hadoop的的路径

[testman@hadoop1 jdk1.8.0_144]$ pwd
/opt/module/jdk1.8.0_144
[testman@hadoop1 hadoop-3.1.3]$ pwd
/opt/module/hadoop-3.1.3

新建/etc/profile.d/my_env.sh文件并编辑,在文件内加入以下内容:

#JAVA_HOME
export JAVA_HOME=/opt/module/jdk1.8.0_144
export PATH=$PATH:$JAVA_HOME/bin
#HADOOP_HOME
export HADOOP_HOME=/opt/module/hadoop-3.1.3
export PATH=$PATH:$HADOOP_HOME/bin
export PATH=$PATH:$HADOOP_HOME/sbin

保存退出并让文件生效:

[testman@ hadoop1 hadoop-3.1.3]$ source /etc/profile.d/my_env.sh

测试是否安装成功:

[testman@hadoop1 jdk1.8.0_144]$ java -version
java version "1.8.0_144"
[testman@hadoop1 hadoop-3.1.3]$ hadoop version
Hadoop 3.1.3

5.拷贝到集群机

在hadoop1上,将hadoop1中/opt/module目录下的软件拷贝到hadoop2、3、4上

[testman@hadoop1 /]$ scp -r /opt/module root@hadoop2:/opt/module
[testman@hadoop1 /]$ scp -r /opt/module root@hadoop3:/opt/module
[testman@hadoop1 /]$ scp -r /opt/module root@hadoop4:/opt/module

在hadoop2、hadoop3、hadoop4上修改所有文件的,所有者和所有者组

sudo chown testman:testman -R /opt/module

hadoop1中/etc/profile.d/my_env.sh文件拷贝到hadoop2、3、4的/etc/profile.d/my_env.sh

[testman@hadoop1 ~]$ sudo scp /etc/profile.d/my_env.sh root@hadoop2:/etc/profile.d/my_env.sh
[testman@hadoop1 ~]$ sudo scp /etc/profile.d/my_env.sh root@hadoop3:/etc/profile.d/my_env.sh
[testman@hadoop1 ~]$ sudo scp /etc/profile.d/my_env.sh root@hadoop4:/etc/profile.d/my_env.sh

分别在hadoop2、3、4上使配置文件生效

source /etc/profile.d/my_env.sh

6.准备集群分发的脚本文件xsync

[testman@hadoop2 ~]$ mkdir bin
[testman@hadoop2 ~]$ cd bin/
[testman@hadoop2 bin]$ touch xsync
[testman@hadoop2 bin]$ vi xsync

并在文件中编写如下的shell代码:

#!/bin/bash
#1 获取输入参数个数,如果没有参数,直接退出
pcount=$#
if((pcount==0)); then
echo no args;
exit;
fi

#2 获取文件名称
p1=$1
fname=`basename $p1`
echo fname=$fname

#3 获取上级目录到绝对路径
pdir=`cd -P $(dirname $p1); pwd`
echo pdir=$pdir

#4 获取当前用户名称
user=`whoami`

#5 循环
for((host=3; host<5; host++)); do
        echo ------------------- hadoop$host --------------
        rsync -rvl $pdir/$fname $user@hadoop$host:$pdir
done

修改脚本 xsync 具有执行权限

[testman@hadoop2 bin]$ chmod 777 xsync

在hadoop2、3、4中安装rsync:

yum -y install rsync

注意:如果将xsync放到/home/testman/bin目录下仍然不能实现全局使用,可以将xsync移动到/usr/local/bin目录下。

7.集群部署规划

hadoop2hadoop3hadoop4
HDFSNameNode DataNodeDataNodeSecondaryNameNode DataNode
YARNNodeManagerResourceManager NodeManagerNodeManager

8.配置

先进入

[root@hadoop132 ~]$ cd /opt/module/hadoop-3.1.3/etc/hadoop/

8.1配置核心文件

配置core-site.xml

[testman@hadoop2 hadoop]$ vi core-site.xml

文件中配置:

<!-- 指定NameNode的地址 -->
<property>
        <name>fs.defaultFS</name>
        <value>hdfs://hadoop132:9820</value>
</property>
 <!-- 指定hadoop数据的存储目录 -->
<property>
	<name>hadoop.tmp.dir</name>
	<value>/opt/module/hadoop-3.1.3/data</value>
</property>

8.2配置HDFS

配置hadoop-env.sh

[testman@hadoop2 hadoop]$ vi hadoop-env.sh

在文件中添加:

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

配置hdfs-site.xml

[testman@hadoop2 hadoop]$ vi hdfs-site.xml

文件中配置:

<!-- nn web端访问地址-->
<property>
	<name>dfs.namenode.http-address</name>
        <value>hadoop132:9870</value>
</property>
<!-- 2nn web端访问地址-->
<property>
	<name>dfs.namenode.secondary.http-address</name>
        <value>hadoop134:9868</value>
</property>
<property>
	<name>dfs.replication</name>
	<value>3</value>
</property>

8.3配置YARN

配置yarn-env.sh

[testman@hadoop2 hadoop]$ vi yarn-env.sh

在文件中添加:

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

配置yarn-site.xml

[testman@hadoop2 hadoop]$ vi yarn-site.xml

文件中配置:

<!-- Site specific YARN configuration properties -->
<!-- 指定MR走shuffle -->
<property>
	<name>yarn.nodemanager.aux-services</name>
        <value>mapreduce_shuffle</value>
</property>
<!-- 指定ResourceManager的地址-->
<property>
        <name>yarn.resourcemanager.hostname</name>
        <value>hadoop133</value>
</property>

8.4配置MapReduce

配置mapred-env.sh

[testman@hadoop2 hadoop]$ vi mapred-env.sh

在文件中添加:

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

mapred-site.xml.template修改为mapred-site.xml
配置mapred-site.xml

[testman@hadoop2 hadoop]$ vi mapred-site.xml

文件中配置:

<!-- 指定MapReduce程序运行在Yarn上 -->
    <property>
        <name>mapreduce.framework.name</name>
        <value>yarn</value>
    </property>

    <!-- 历史服务器端地址 -->
    <property>
        <name>mapreduce.jobhistory.address</name>
        <value>hadoop132:10020</value>
    </property>

    <!-- 历史服务器web端地址 -->
    <property>
        <name>mapreduce.jobhistory.webapp.address</name>
        <value>hadoop132:19888</value>
    </property>

8.5配置SSH无密登录(需要配置三次)

生成公钥和私钥:

[testman@hadoop2 .ssh]$ ssh-keygen -t rsa

将公钥拷贝到要免密登录的目标机器上:

[testman@hadoop2 .ssh]$ ssh-copy-id hadoop2
[testman@hadoop2 .ssh]$ ssh-copy-id hadoop3
[testman@hadoop2 .ssh]$ ssh-copy-id hadoop4

注意:
还需要在hadoop2上采用root账号,配置一下无密登录到hadoop2、hadoop3、hadoop4;
还需要在hadoop3上采用testman账号配置一下无密登录到hadoop2、hadoop3、hadoop4服务器上。

8.6配置workers

修改文件:
[testman@hadoop2 hadoop]$ vi workers
在该文件中增加如下内容:
hadoop2
hadoop3
hadoop4

8.7在集群上分发Hadoop配置文件

[testman@hadoop2 hadoop]$ xsync /opt/module/hadoop-3.1.3/
已标记关键词 清除标记
相关推荐
©️2020 CSDN 皮肤主题: 1024 设计师:白松林 返回首页