环境搭建--Hadoop完全分布式

Hadoop完全分布式—环境搭建

Hadoop的环境搭建分为伪分布式和完全分布式,这里演示完全分布式搭建过程,并且以三台机器作为节点服务器。

1、准备工作

1.首先要准备好vmware虚拟机与centos7光盘映像,完成虚拟机的一个基础机的安装(可以选择最小系统进行安装)。

这里根据自己的电脑实际配置将内存尽可能的设置大一点,避免后面运行出错。其他步骤这里不作赘述。

2.将准备好的基础机打开,进行准备工作配置

  • 配置静态IP,避免因每次重新启动后,ip发生变化。

    输入命令:vi /etc/sysconfig/network-scripts/ifcfg-ens33
    

在这里插入图片描述

​ 将上述红色框中的内容进行修改,并添加四行内容:

BOOTPROTO="static"
ONBOOT="yes"
IPADDR=192.168.10.102  (ip地址,根据自己的网卡进行设置)
GATEWAY=192.168.10.2   (网关,网段.2)
NETMASK=255.255.255.0  (子网掩码,可不写,默认24位掩码)
DNS1=8.8.8.8           (公网dns解析地址1)
DNS2=114.114.114.114   (公网dns解析地址2)

​ 修改完成后”:wq“进行保存退出并重启网卡。

systemctl restart network
  • 修改默认主机名称。

    vi /etc/hostname
    

在这里插入图片描述

第一台节点将原来的localhost改为master(第二、三台分别为slave1,slave2)

修改完毕后保存退出。

  • 配置Linux下静态ip映射,添加自己的IP地址与对应的主机名称。

    vi /etc/hosts
    

在这里插入图片描述

添加完毕后保存退出即可。

  • 关闭防火墙。

    systemctl stop firewalld   (暂时关闭防火墙)
    systemctl disable firewalld  (永久关闭防火墙)
    

至此基本的准备工作配置已经完成。

2、安装JDK

①进入opt目录下创建两个文件夹software(软件安装包)、module(解压后的文件)

mkdir software module

在这里插入图片描述

②进入software目录下,使用xftp或者其他软件将jdk的安装包传进来并进行解压。
在这里插入图片描述

使用命令进行解压

tar -zxvf jdk-8u212-linux-x64.tar.gz -C /opt/module/

这里指将jdk安装包解压到opt下的module目录, -C 参数代表解压到某文件目录,后面跟目录地址

在这里插入图片描述

③解压完成后我们开始配置环境变量

sudo vi /etc/profile.d/my_env.sh

在etc下的profile.d目录下编辑一个新的文件用来存放以后各种软件的环境变量(在以前的版本中是直接在profile文件下进行添加)。

添加以下内容:

#JAVA_HOME
export JAVA_HOME=/opt/module/jdk1.8.0_212
#将JAVA_HOME拼接到PATH中
export PATH=$PATH:$JAVA_HOME/bin

在这里插入图片描述

④添加完毕后保存退出

⑤source环境变量,使其生效

source /etc/profile.d/my_env.sh

⑥检验java是否安装成功,输入java和javac进行检验

java

在这里插入图片描述

javac

在这里插入图片描述

看到以上提示信息代表java已经安装完毕·。

3、安装Hadoop

①进入software目录下,使用xftp或者其他软件将hadoop的安装包传进来并进行解压。

使用命令进行解压:

tar -zxvf hadoop-3.2.1.tar.gz -C /opt/module/

在这里插入图片描述

②解压完毕后,配置Hadoop的环境变量

sudo vi /etc/profile.d/my_env.sh

在my_env.sh中添加下面的内容:

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

在这里插入图片描述

③使用source命令将环境变量生效

source /etc/profile.d/my_env.sh

④输入hadoop version检验当前hadoop是否安装完毕
在这里插入图片描述

可以看到版本号即代表当前hadoop已经安装完毕。至此安装过程已经完成。

4、克隆虚拟机

在vmware左侧导航栏中右键当前虚拟机,管理,选择克隆,具体操作步骤见下图:
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

之后单击完成即可。

注意,这里总共需要克隆两台机器,克隆时需要注意修改虚拟机名称分别为slave1、slave2,同时可以选择修改虚拟机保存的位置。

克隆完成后,按照上述过程中的步骤将克隆后的slave1和slave2进行主机名和ip地址的修改,修改完成后重新启动。

5、编写xsync集群分发脚本

①scp(secure copy)安全拷贝:

scp可以实现服务器与服务器之间的数据拷贝。(from server1 to server2),其基本语法为:

scp    -r        $pdir/$fname             $user@$host:$pdir/$fname
命令   递归     要拷贝的文件路径/名称   目的地用户@主机:目的地路径/名称

例如:在hadoop102上,将hadoop102中/opt/module/jdk1.8.0_212目录拷贝到hadoop103上。

scp -r /opt/module/jdk1.8.0_212  xiaodong@hadoop103:/opt/module

②rsync远程同步工具

rsync主要用于备份和镜像。具有速度快、避免复制相同内容和支持符号链接的优点。
rsync和scp区别:用rsync做文件的复制要比scp的速度快,rsync只对差异文件做更新。scp是把所有文件都复制过去。

其基本语法如下:

rsync    -av       $pdir/$fname             $user@$host:$pdir/$fname
命令   选项参数   要拷贝的文件路径/名称   目的地用户@主机:目的地路径/名称

-a 归档拷贝
-v 显示复制过程

例如:同步hadoop102中的/opt/module/hadoop-3.2.1到hadoop103

rsync -av hadoop-3.2.1/ xiaodong@hadoop103:/opt/module/hadoop-3.2.1/

③xsync集群分发脚本

需求:循环复制文件到所有节点的相同目录下

需求分析:

  • rsync命令原始拷贝:

    rsync -av /opt/module atguigu@hadoop103:/opt/

  • ②期望脚本:

    xsync要同步的文件名称

  • ③期望脚本在任何路径都能使用(脚本放在声明了全局环境变量的路径)

    [xiaodong@hadoop102 ~]$ echo $PATH

    /usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/home/xiaodong/.local/bin:/home/xiaodong/bin:/opt/module/jdk1.8.0_212/bin

脚本实现:

  • 在/home/xiaodong/bin目录下创建xsync文件

    [xiaodong@hadoop102 opt]$ cd /home/xiaodong
    [xiaodong@hadoop102 ~]$ mkdir bin
    [xiaodong@hadoop102 ~]$ cd bin
    [xiaodong@hadoop102 bin]$ vim xsync
    

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

    #!/bin/bash
    
    #1. 判断参数个数
    if [ $# -lt 1 ]
    then
        echo "Not Enough Arguement!"
        exit
    fi
    
    #2. 遍历集群所有机器
    for host in hadoop102 hadoop103 hadoop104
    do
        echo ====================  $host  ====================
        #3. 遍历所有目录,挨个发送
    
        for file in $@
        do
            #4. 判断文件是否存在
            if [ -e $file ]
                then
                    #5. 获取父目录
                    pdir=$(cd -P $(dirname $file); pwd)
    
                    #6. 获取当前文件的名称
                    fname=$(basename $file)
                    ssh $host "mkdir -p $pdir"
                    rsync -av $pdir/$fname $host:$pdir
                else
                    echo $file does not exists!
            fi
        done
    done
    
    
  • 修改脚本 xsync 具有执行权限:

    chmod +x xsync
    
  • 将脚本复制到/bin中,以便全局调用

    sudo cp xsync /bin/
    
  • 同步环境变量配置(root所有者)

    sudo xsync /etc/profile.d/my_env.sh
    
  • 让环境变量生效

    [xiaodong@hadoop103 bin]$ source /etc/profile
    [xiaodong@hadoop104 opt]$ source /etc/profile
    

6、ssh无密码登录

在home目录下输入命令:

ssh-keygen -t rsa

然后敲(三个回车),就会生成两个文件id_rsa(私钥)、id_rsa.pub(公钥)

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

[xiaodong@hadoop102 .ssh]$ ssh-copy-id hadoop102
[xiaodong@hadoop102 .ssh]$ ssh-copy-id hadoop103
[xiaodong@hadoop102 .ssh]$ ssh-copy-id hadoop104

注意:在三台机器节点上都需要进行上述ssh无密登录配置,以便后续群起集群

7、配置hadoop的四个xml文件

进入到配置文件的目录里:

cd /opt/module/hadoop-3.2.1/etc/hadoop/

在这里插入图片描述

  • core-site.xml

    使用vi命令进行编辑,在标签里添加如下内容

    <!-- 指定NameNode的地址 -->
        <property>
            <name>fs.defaultFS</name>
            <value>hdfs://master:8020</value>
        </property>
     
        <!-- 指定hadoop数据的存储目录 -->
        <property>
            <name>hadoop.tmp.dir</name>
            <value>/opt/module/hadoop/data</value>
        </property>
     
        <!-- 配置HDFS网页登录使用的静态用户为xiaodong -->
        <property>
            <name>hadoop.http.staticuser.user</name>
            <value>xiaodong</value>
        </property>
    
  • hdfs-site.xml

    使用vi命令进行编辑,在标签里添加如下内容

    <!-- nn web端访问地址-->
    	<property>
            <name>dfs.namenode.http-address</name>
            <value>master:9870</value>
        </property>
    	<!-- 2nn web端访问地址-->
        <property>
            <name>dfs.namenode.secondary.http-address</name>
            <value>slave2:9868</value>
        </property>
    
  • yarn-site.xml

    使用vi命令进行编辑,在标签里添加如下内容

    <!-- 指定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>
    
  • mapred-site.xml

​ 使用vi命令进行编辑,在标签里添加如下内容

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

全部配置完毕后,在当前目录下执行

xsync ./

将写好的配置文件分发到另外两台节点上。

8、群起集群

配置workers文件

vi /opt/module/hadoop-3.2.1/etc/hadoop/workers

将原来的localhost改为自己的三台主机名

master
slave1
slave2

修改完毕后保存退出,xsync分发当前文件

xsync workers

启动集群:

如果集群是第一次启动,需要在hadoop102节点(主节点)格式化NameNode

 hdfs namenode -format

启动HDFS:在主节点上执行

start-all.sh

**在配置了ResourceManager的节点(hadoop103)**启动YARN

start-yarn.sh

启动完成后,观察各节点的jps进程:

hadoop102(master):

13691 NameNode
14651 Jps
13836 DataNode
14428 NodeManager

hadoop102(slave1):

2736 Jps
1865 NodeManager
2204 ResourceManager
1742 DataNode

hadoop103(slave2):

1748 DataNode
2182 Jps
1963 NodeManager
1871 SecondaryNameNode

Web端查看HDFS的NameNode

①浏览器中输入:http://hadoop102:9870

②查看HDFS上存储的数据信息

在这里插入图片描述

Web端查看YARN的ResourceManager

①浏览器中输入:http://hadoop103:8088

②查看YARN上运行的Job信息
在这里插入图片描述

至此Hadoop的完全分布式集群就已经搭建完毕了!

注意:

  • 此文中的集群规划如下:

    hadoop102hadoop103hadoop104
    HDFSNameNode DataNodeDataNodeSecondaryNameNode DataNode
    YARNNodeManagerResourceManager NodeManagerNodeManager
  • 全文出现的hadoop102、hadoop103、hadoop104都要分别替换为自己的主机名称。

重生之我学大数据。。。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值