• Hadoop+微服务 环境搭建笔记


    准备工作

      相关软件和资料

       链接:https://pan.baidu.com/s/1CPGqJSH2e6rnPvfXGYo8ow

      提取码:pe9c

    目标:VMware(虚拟机)安装

    双击开始安装

    下一步

    接受许可,下一步

     修改路径,下一步

     取消勾选,下一步

     下一步

     安装

     安装中....

     安装完成

     双击打开

     输入秘钥,点击“继续”,密钥找度娘一大把

     完成

     安装完毕

    目标:Centos7.5软硬件安装

    注意内容:

    1、在安装系统之前需要检查自己虚拟机的bios的虚拟化是否打开(大部分的电脑都是打开的,大家可以先尝试直接安装,如果出现错误再去调试,没有出错就不用管了)

    以下是查看虚拟机bios是否开启的方式

    (1)Windows10

    CPU,性能查看

    (2)Windows7里面看不到(得到bios里面看)

    (3)如果发现bios虚拟化没有开启怎么办,重启电脑,在加载界面时按f1-f10,或者电脑旁边一个小洞,具体怎么进入得去查一下(按照自己电脑的型号去查)

    (4)修改虚拟化为开启(thinkpad为例)找到security里面的VT并改成enabled

    创建新的虚拟机

     选择“自定义”,下一步

     下一步

     选择“稍后安装操作系统”,下一步

     选择客户机操作系统为“Linux”,版本为“CentOS 7 64位”,下一步

     修改虚拟机名称为“hadoop100”,修改安装位置,下一步

     修改处理器数量和每个处理器的内核数量,下一步

    注意:处理器数量和每个处理器的内核数量的总和不能超过自己系统的CPU总数

     修改虚拟机内存,向下兼容一般设置为4G,下一步

     网络类型选择“使用网络地址转换(NAT)”,下一步

     I/0选择器类型选择推荐的即可,下一步

     磁盘类型选择默认推荐的

     选择“创建新虚拟磁盘”,下一步

     修改最大磁盘大小为“50G”,下一步

     修改磁盘文件路径到当前虚拟机目录下,方便统一管理。下一步

     点击“完成”

     这就是刚刚安装的虚拟机,名字是刚刚自己取的

     继续安装操作系统,步骤如下:

     点击“CD/DVD”选择插入一块硬盘

     选择“使用ISO映像文件”插入镜像文件,确定

     插入镜像文件之后,“开启此虚拟机”

     开启之后,进入页面直接Enter回车,正常安装

     等待安装中.....

    .

     来到了欢迎页面

     选择“中文”,继续

     点击“日期和时间”设置时间

     选择“亚洲”,“上海”之后,设置好时间,点击“完成”

     完整日期时间设置后,点击“软件选择”

     选择“桌面”版安装,点击完成

    注意:也可以选择“最小安装”,区别:最小系统没有图形化页面,全部命令行操作,本人学习阶段选择的是桌面版本

     接下来点击“安装位置”

     选择“我要配置分区”,然后“添加磁盘”,点击完成

     弹出以下页面,点击“+”,弹出页面选择挂载点和容量,并将文件系统设置为“ext4”

     这个过程中,我配置了三个挂载点,分别为

    /boot 1g  、  swap  4g   、   /  45g

    添加完毕,点击完成

     接受并更改

     点击“KDUMP”

     去掉勾选“kdump”,学习阶段崩溃不备份,并点击“完成”

     点击“网络和主机名”

     修改主机名为“hadoop100”,打开网络,点击完成

     点击“SECURITY POUCY”

     保持默认打开即可,点击完成

     所有准备完毕,开始安装

     等待安装中........

     安装过程中顺便配置一下ROOT密码

     设置密码为123456,点击完成

     经过十几分钟的等待,安装完毕,点击“重启”

     回车

     进入主页面,点击“LICENSIGN”

     勾选同意,点击完成

     点击“完成配置”

     直接“前进”

     前进

     前进

     允许访问

     输入“上海”,前进

     跳过

     设置账号,atguigu

     设置密码123456,前进

     至此,该虚拟机设置完毕

    目标: ip和主机名称配置

    1、配置VM的ip地址

    VMware点击“编辑”,选择“虚拟网络编辑器”

     点击“VMnet8”,“更改设置”

     再次打开“虚拟网络编辑器”,点击“VMnet8”,选择NAT模式,修改子网掩码为:192.168.10.0,点击“NAT设置”

     修改NAT设置网关IP为:192.168.10.2,点击确定

    点击确定

     2、修改win10的的ip地址

    “控制面板”找到“网络和Internet”,找到“网络连接”,右键VMnet8,选择属性

    双击“Internet协议版本4”

     

     修改ip地址和网关如下,点击确定保存

      注意:如果你的网络连接页面没有出现VMnet8,则打开VMware的“虚拟网络编辑”页面,点击“还原默认设置”按钮,操作完毕之后就会出现VMnet8

     3、修改主机ip

     回到VMware页面,输入密码登录

     右键“打开终端”,打开如下页面。显示当前用户是atguigu

     输入以下命令

    #切换到root用户
    su root
    
    #输入密码
    123456
    
    #vim打开ifcfg-ens33文件
    vim /etc/sysconfig/network-scripts/ifcfg-ens33

     得到以下页面,按照截图所示操作

    IPADDR=192.168.10.100
    GATEWAY=192.168.10.2
    DNS1=192.168.10.2

    修改主机名称

    #vim打开修改主机名称
    vim /etc/hostname

    进入后发现主机名称默认为hadoop100(创建虚拟机的时候设置的),不用修改,直接退出

     

     修改hosts主机文件,输入以下命令

    vim /etc/hosts

     

     打开hosts文件之后,添加以下配置,并保存退出

    192.168.10.100 hadoop100
    192.168.10.101 hadoop101
    192.168.10.102 hadoop102
    192.168.10.103 hadoop103
    192.168.10.104 hadoop104
    192.168.10.105 hadoop105
    192.168.10.106 hadoop106
    192.168.10.107 hadoop107
    192.168.10.108 hadoop108

     重启主机

    #reboot命令:重启主机
    reboot

    重启之后以root账号重新登录虚拟机,并打开终端

     输入以下命令,验证ip地址,发现ip地址已更新

    #输入命令验证ip地址
    ifconfig

     ping一下百度,看是否能ping通

    ping www.baidu.com

     查看主机名称

    hostname

    目标:Xshell远程访问工具

    傻瓜式下一步安装xshell工具,这里不做介绍了

    输入ip地址192.168.10.100连接,以atguigu账号连接入

     

    下面我们的目的是将ip地址和主机名称关联起来:修改Windows的主机映射文件(host文件)

    (1)如果操作系统是window7,可以直接修改

     (a)进入C:WindowsSystem32driversetc路径找到hosts文件

     打开hosts文件并添加如下内容,然后保存

    192.168.10.100 hadoop100
    192.168.10.101 hadoop101
    192.168.10.102 hadoop102
    192.168.10.103 hadoop103
    192.168.10.104 hadoop104
    192.168.10.105 hadoop105
    192.168.10.106 hadoop106
    192.168.10.107 hadoop107
    192.168.10.108 hadoop108

    (2)如果操作系统是window10,先拷贝出来,修改保存以后,再覆盖即可

    a)进入C:WindowsSystem32driversetc路径

    (b)拷贝hosts文件到桌面

    c)打开桌面hosts文件并添加如下内容

    192.168.10.100 hadoop100
    192.168.10.101 hadoop101
    192.168.10.102 hadoop102
    192.168.10.103 hadoop103
    192.168.10.104 hadoop104
    192.168.10.105 hadoop105
    192.168.10.106 hadoop106
    192.168.10.107 hadoop107
    192.168.10.108 hadoop108

    (d)将桌面hosts文件覆盖C:WindowsSystem32driversetc路径hosts文件

    修改完毕之后,重新连接xshell,这次输入名称和主机为hadoop100,仍然以atguigu账号登录

     接着傻瓜式安装xftp工具

    目标:模板虚拟机准备完成

    输入以下命令,切换到root账号

     切换目录,并且查看网络状态

    输入以下命令,安装epel-release:是一个软件仓库

    yum install -y epel-release

     发现有一个pid被占用,用kill命令杀掉进程

    kill -9 3030

    再次执行命令:yum install -y epel-release

     注意:如果Linux安装的是最小系统版,还需要安装如下工具;如果安装的是Linux桌面标准版,不需要执行如下操作

    • net-tool:工具包集合,包含ifconfig等命令
    yum install -y net-tools
    • vim:编辑器
    yum install -y vim

    关闭防火墙,关闭防火墙开机自启

    #关闭防火墙
    systemctl stop firewalld
    
    #关闭防火墙开机自启
    systemctl disable firewalld.service

     注意:在企业开发时,通常单个服务器的防火墙时关闭的。公司整体对外会设置非常安全的防火墙

    配置atguigu用户具有root权限,方便后期加sudo执行root权限的命令

    vim /etc/sudoers

    修改/etc/sudoers文件,在%wheel这行下面添加一行,保存并退出,如下所示:

    ## Allow root to run any commands anywhere
    root    ALL=(ALL)     ALL
    
    ## Allows people in group wheel to run all commands
    %wheel  ALL=(ALL)       ALL
    atguigu   ALL=(ALL)     NOPASSWD:ALL

     

     测试一下是否好用

    #切换到/opt目录
    cd /opt/
    
    #查看目录内容
    ll
    
    #退出到aiguigu用户,因为我们是从atguigu用户切换进来的
    exit
    
    #再次切换到/opt目录
    cd /opt/
    
    #查看目录内容
    ll
    
    #删除掉rh文件(root权限),发现权限不足
    rm -rf rh/
    
    #sudo执行删除
    sudo rm -rf rh/
    
    #查看是否删除,发现已经删除了rh文件
    ll

    做准备工作

    #在当前路径/opt创建module文件夹(软件安装目录),当前操作账号是atguigu
    sudo mkdir module
    
    #查看目录文件
    ll
    
    #创建software文件夹
    sudo mkdir software
    
    #查看目录文件,发现module、software文件夹的所有者和所属组均为root用户
    ll
    
    #修改module、software文件夹的所有者和所属组均为atguigu用户
    #注意:需要切换到root账号操作 chown atguigu:atguigu
    /opt/module chown atguigu:atguigu /opt/software #查看module、software文件夹的所有者和所属组 ll

     发现modulesoftware文件夹的所有者和所属组都已经变为atguigu了

    卸载虚拟机自带的JDK

    注意:如果你的虚拟机是最小化安装不需要执行这一步

    rpm -qa | grep -i java | xargs -n1 rpm -e --nodeps
    
    rpm -qa:查询所安装的所有rpm软件包
    grep -i:忽略大小写
    xargs -n1:表示每次只传递一个参数
    rpm -e –nodeps:强制卸载软件

     最后重启虚拟机

    reboot

    目标:克隆三台虚拟机

    此次的目标是利用模板机hadoop100,克隆三台虚拟机:hadoop102   hadoop103   hadoop104

    注意:克隆的时候,要先关闭hadoop100

    右键hadoop100--->管理--->克隆

     

    下一步

     

    下一步

     选择“创建完整克隆”,点击下一步

     修改虚拟机名称,选择安装位置,点击完成

     克隆等待中

     一模一样的操作过程,克隆出103和104,并将虚拟机新建目录进行管理

     启动虚拟机hadoop102,root用户登录,并打开终端

     修改克隆虚拟机hadoop102的静态IP

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

     修改虚拟机hadoop102名称

    vim /etc/hostname

    查看hosts文件是否都已经修改了

    vim /etc/hosts

    发现之前都已经修改过了,不用修改

     重启机器

    reboot

    一模一样的流程修改hadoop103和hadoop104

    (1)启动虚拟机hadoop103(4),root用户登录,并打开终端

    (2)命令vim /etc/sysconfig/network-scripts/ifcfg-ens33打开,修改IPADDR=192.168.10.100为IPADDR=192.168.10.103(4)

    (3)命令vim /etc/hostname虚拟机hadoop103(4)名称 

    (4)重启虚拟机

    xshell工具链接hadoop102、hadoop103、hadoop104

    目标:JDK安装

    注意:安装JDK之前,一定要确保提前删除了虚拟机自带的JDK

    用XShell传输工具将JDK导入到opt目录下面的software文件夹下面

     切换到/opt/software目录,查看是否上传成功

     解压JDK到/opt/module目录下

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

    解压完毕后切换目录到/opt/module/jdk1.8.0_212下

    配置JDK环境变量

    (1)新建/etc/profile.d/my_env.sh文件

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

    注意截图里面是已经切换到/etc/profile.d目录了

    添加如下内容

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

     2)保存后退出

    :wq

    3source一下/etc/profile文件,让新的环境变量PATH生效

    source /etc/profile

    测试JDK是否安装成功

    java -version

    如果能看到以下结果,则代表Java安装成功。

    java version "1.8.0_212"

    注意:重启(如果java -version可以用就不用重启

    目标:hadoop安装

    XShell文件传输工具将hadoop-3.1.3.tar.gz导入到opt目录下面的software文件夹下面

     进入到hadoop安装包路径下

    cd /opt/software/

    解压安装文件到/opt/module下面

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

    查看是否解压成功

    ls /opt/module/

    将hadoop添加到环境变量

    (1)打开/etc/profile.d/my_env.sh文件

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

    my_env.sh文件末尾添加如下内容:(shift+g

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

     保存并退出

    (2)让修改后的文件生效

    source /etc/profile

    测试是否安装成功

    hadoop version

    重启(如果hadoop命令不能用再重启虚拟机)

    目标:本地运行模式

     主机hadoop102切换目录到/opt/module/hadoop-3.1.3,在此下面新建一个wcinput文件夹

    mkdir wcinput

    在wcinput文件夹下创建一个word.txt文件

    #进入创建的wcinput文件夹
    cd wcinput/
    
    #创建word.txt文件
    vim word.text

    编辑word.txt文件,在文件中输入如下内容,保存并退出

    hadoop yarn
    hadoop mapreduce
    atguigu
    atguigu

    回到hadoop目录 /opt/module/hadoop-3.1.3

    执行以下命令

    hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-3.1.3.jar wordcount wcinput wcoutput

    查看结果

    cat wcoutput/part-r-0000
    看到如下结果:
    
    atguigu 2
    
    hadoop  2
    
    mapreduce       1
    
    yarn    1

    目标:完全分布式运行模式

    1、scpsecure copy安全拷贝

    1scp定义

    scp可以实现服务器与服务器之间的数据拷贝。from server1 to server2

      2)基本语法

    scp    -r        $pdir/$fname             $user@$host:$pdir/$fname

    命令   递归     要拷贝的文件路径/名称   目的地用户@主机:目的地路径/名称

    3)案例实操

    前提:hadoop102hadoop103hadoop104都已经创建好的/opt/module/opt/software两个目录,并且已经把这两个目录修改为atguigu:atguigu

    sudo chown atguigu:atguigu -R /opt/module

     备注:由于我们在克隆主机之前就已经设置好了,所以这里不需要设置

      a在hadoop102上,hadoop102/opt/module/jdk1.8.0_212目录拷贝到hadoop103上。

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

    首次连接需要密码,拷贝时间比较长

      (b在hadoop103上,hadoop102/opt/module/hadoop-3.1.3目录拷贝到hadoop103上。

    scp -r atguigu@hadoop102:/opt/module/hadoop-3.1.3 /opt/module/

      (c)在hadoop103上操作,将hadoop102/opt/module目录下所有目录拷贝到hadoop104上。

    scp -r atguigu@hadoop102:/opt/module/* atguigu@hadoop104:/opt/module

    2、rsync远程同步工具

      rsync主要用于备份和镜像。具有速度快、避免复制相同内容和支持符号链接的优点。

      rsyncscp区别:rsync做文件的复制要比scp的速度快,rsync只对差异文件做更新。scp是把所有文件都复制过去。

      (1)基本语法

        rsync    -av       $pdir/$fname             $user@$host:$pdir/$fname

        命令   选项参数   要拷贝的文件路径/名称   目的地用户@主机:目的地路径/名称

          选项参数说明

    选项

    功能

    -a

    归档拷贝

    -v

    显示复制过程

         (2)案例实操

        (a)删除hadoop103中/opt/module/hadoop-3.1.3/wcinput

    cd /opt/module/hadoop-3.1.3
    rm -rf wcinput/

    发现主机hadoop103上的wcinput文件已经被删除了

        (b)同步hadoop102中的/opt/module/hadoop-3.1.3hadoop103

    cd /opt/module
    rsync -av hadoop-3.1.3/ atguigu@hadoop103:/opt/module/hadoop-3.1.3/

     

     并且hadoop102上的wcinput文件已经被同步到hadoop103

    发现这次同步时间比上次快

     3、xsync集群分发脚本

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

      (2需求分析:

        (arsync命令原始拷贝:

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

        (b)期望脚本:

          xsync要同步的文件名称

    举例子:

    创建a.txt文件

     

     

     期望执行 xsync 同步文件名称 命令将a.tx同步到hadoop102和hadoop103上

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

    echo $PATH

       (3)脚本实现

    a/home/atguigu/bin目录下创建xsync文件

    cd
    
    mkdir bin
    
    ll
    
    cd bin/
    
    pwd

    vim xsync

    该文件中编写如代码

    #!/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

     保存并退出

    ll

     发现这个脚本没有可执行的权限

    (b)修改脚本xsync具有执行权限

    chmod +x xsync

     修改完毕,该脚本具有可执行权限了

    (c)测试脚本

    测试之前hadoop1003上没有bin目录

     

     在主机hadoop102上执行脚本

    cd 
    
    ll
    
    xsync /home/atguigu/bin

     查看hadoop103和hadoop104上是否已经同步

     

     发现已经同步过去

    (d)分发同步虚拟机hadoop102上的环境变量到hadoop103和hadoop104

    xsync /etc/profile.d/my_env.sh

    发现分发的时候权限被拒绝了,排查发现是找不到路径为绝对路径

    修改命令如下:

    cd
    
    sudo ./bin/xsync /etc/profile.d/my_env.sh

     分别在hadoop103和hadoop104上查看环境变量是否同步

    cd
    
    vim /etc/profile.d/my_env.sh

    发现同步完毕,最后记得分别重新加载一下环境变量

    source /etc/profile

    目标:ssh免密登录

    1、配置ssh

      (1)基本语法

        ssh另一台电脑的IP地址

      2ssh连接时出现Host key verification failed的解决方法

    ssh hadoop103

      Ø 如果出现如下内容

      Are you sure you want to continue connecting (yes/no)?

      Ø 输入yes,并回车

      (3退回到hadoop102

    exit

    2、无密钥配置

      (1免密登录原理 

     

      (2)生成公钥和私钥

    虚拟机hadoop102执行

    cd 
    
    pwd
    
    ls -al
    
    cd .ssh/
    
    ll
    
    cd 

     期望目标:hadoop102可以无密登录hadoop103和hadoop104,语法如下

    #生成公私钥
    ssh-keygen -t rsa
    
    #查看私钥
    cat id_rsa

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

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

    #将hadoop102的公钥拷贝到hadoop103
    ssh-copy-id hadoop103
    
    #测试是否可以ssh免密登录hadoop103
    ssh hadoop103
    
    #测试当前是否已登录到hadoop103
    hostname
    
    #退出
    exit
    
    
    #将hadoop102的公钥拷贝到hadoop104
    ssh-copy-id hadoop104
    
    #测试是否可以ssh免密登录hadoop104
    ssh hadoop104
    
    #测试当前是否已登录到hadoop104
    hostname
    
    #退出
    exit

     测试hadoop102是否可以ssh免密登录自己,发现不能之后,说明自己也要配置ssh免密登录才行

    #测试hadoop102是否可以ssh免密登录自己
    ssh hadoop102
    
    #将hadoop102的公钥拷贝到hadoop102
    ssh-copy-id hadoop103
    
    #测试是否可以ssh免密登录hadoop102
    ssh hadoop102
    
    #测试当前是否已登录到hadoop102
    hostname

     注意

      还需要在hadoop103采用atguigu账号配置一下无密登录到hadoop102hadoop103hadoop104服务器上。

      还需要在hadoop104采用atguigu账号配置一下无密登录到hadoop102hadoop103hadoop104服务器上。

      还需要在hadoop102采用root账号,配置一下无密登录到hadoop102hadoop103hadoop104

    此处相关操作与hadoop102一模一样,不再记录

     3、.ssh文件夹下~/.ssh的文件功能解释

    known_hosts

    记录ssh访问过计算机的公钥public key

    id_rsa

    生成的私钥

    id_rsa.pub

    生成的公钥

    authorized_keys

    存放授权过无密登录服务器公钥

    目标:集群配置

    1、集群部署规划

    注意:

    Ø NameNodeSecondaryNameNode不要安装在同一台服务器

    Ø ResourceManager也很消耗内存,不要和NameNodeSecondaryNameNode配置在同一台机器上。

     

    hadoop102

    hadoop103

    hadoop104

    HDFS

     

    NameNode

    DataNode

     

    DataNode

    SecondaryNameNode

    DataNode

    YARN

     

    NodeManager

    ResourceManager

    NodeManager

     

    NodeManager

     2、配置文件说明

    Hadoop配置文件分两类:默认配置文件和自定义配置文件,只有用户想修改某一默认配置值时,才需要修改自定义配置文件,更改相应属性值。

    1)默认配置文件:

    获取的默认文件

    文件Hadoopjar包中的位置

    [core-default.xml]

    hadoop-common-3.1.3.jar/core-default.xml

    [hdfs-default.xml]

    hadoop-hdfs-3.1.3.jar/hdfs-default.xml

    [yarn-default.xml]

    hadoop-yarn-common-3.1.3.jar/yarn-default.xml

    [mapred-default.xml]

    hadoop-mapreduce-client-core-3.1.3.jar/mapred-default.xml

      (2)自定义配置文件:

      core-site.xmlhdfs-site.xmlyarn-site.xmlmapred-site.xml四个配置文件存放在$HADOOP_HOME/etc/hadoop这个路径上用户可以根据项目需求重新进行修改配置。

     

     3、配置集群

      1核心配置文件

       配置core-site.xml

    cd $HADOOP_HOME/etc/hadoop
    
    vim core-site.xml

    文件内容如下:

     保存退出

       2HDFS配置文件

       配置hdfs-site.xml

    vim hdfs-site.xml

      文件内容如下:

    <?xml version="1.0" encoding="UTF-8"?>
    <?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
    
    <configuration>
        <!-- nn web端访问地址-->
        <property>
            <name>dfs.namenode.http-address</name>
            <value>hadoop102:9870</value>
        </property>
        <!-- 2nn web端访问地址-->
        <property>
            <name>dfs.namenode.secondary.http-address</name>
            <value>hadoop104:9868</value>
        </property>
    </configuration>

      (3YARN配置文件

       配置yarn-site.xml

    vim yarn-site.xml

    文件内容如下:

    <?xml version="1.0" encoding="UTF-8"?>
    <?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
    
    <configuration>
        <!-- 指定MR走shuffle -->
        <property>
            <name>yarn.nodemanager.aux-services</name>
            <value>mapreduce_shuffle</value>
        </property>
    
        <!-- 指定ResourceManager的地址-->
        <property>
            <name>yarn.resourcemanager.hostname</name>
            <value>hadoop103</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>
    </configuration>

       4MapReduce配置文件

       配置mapred-site.xml

    vim mapred-site.xml
    
    <?xml version="1.0" encoding="UTF-8"?>
    <?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
    
    <configuration>
        <!-- 指定MapReduce程序运行在Yarn上 -->
        <property>
            <name>mapreduce.framework.name</name>
            <value>yarn</value>
        </property>
    </configuration>

     4、在集群上分发配置好的Hadoop配置文件

    xsync /opt/module/hadoop-3.1.3/etc/hadoop/

    5、去103和104上查看文件分发情况

    cat /opt/module/hadoop-3.1.3/etc/hadoop/core-site.xml

    目标:集起集群并测试

    1、配置workers

    vim /opt/module/hadoop-3.1.3/etc/hadoop/workers

    该文件中增加如下内容(默认localhost删除掉):

    hadoop102
    hadoop103
    hadoop104

     注意:该文件中添加的内容结尾不允许有空格,文件中不允许有空行。

    同步所有节点配置文件

    xsync /opt/module/hadoop-3.1.3/etc 

     2、启动集群

      1如果集群是第一次启动,需要在hadoop102节点格式化NameNode注意:格式化NameNode会产生新的集群id导致NameNodeDataNode的集群id不一致,集群不到已数据。如果集群在运行过程中报错,需要重新格式化NameNode的话,一定要停止namenodedatanode进程,并且要删除所有机器的datalogs目录,然后再进行格式化。

    hdfs namenode -format

    初始化完毕之后,发现多了data和log目录

       2)启动HDFS

    sbin/start-dfs.sh

     启动之后,hadoop102、hadoop103、hadoop104

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

    sbin/start-yarn.sh

     注意:一定要在hadoop103上启动

    启动之后,

    hadoop102

    hadoop103

    hadoop104

       4Web端查看HDFS的NameNode

        (a)浏览器中输入http://hadoop102:9870

        (b)查看HDFS上存储的数据信息

      (5)Web端查看YARN的ResourceManager

        (a)浏览器中输入http://hadoop103:8088

        (b)查看YARN上运行的Job信息

    3、集群基本测试

      (1)上传文件到集群

    • 上传小文件
    cd
    
    hadoop fs -mkdir /input

    • 上传大文件
    hadoop fs -put  /opt/software/jdk-8u212-linux-x64.tar.gz  /

       (2)上传文件后查看文件存放在什么位置

    • 查看HDFS文件存储路径
    cd /opt/module/hadoop-3.1.3/
    
    ll
    
    cd data/
    
    ll
    
    cd dfs/
    
    ll
    
    cd data/
    
    ll
    
    cd current/
    
    ll
    
    cd BP-1475925467-192.168.10.102-1634967224222/
    
    ll
    
    cd finalized/
    
    ll
    
    cd subdir0/
    
    ll

     发现存储目录是

    /opt/module/hadoop-3.1.3/data/dfs/data/current/BP-1475925467-192.168.10.102-1634967224222/current/finalized/subdir0/subdir0

      (3)拼接

    cat blk_1073741826>>tmp.tar.gz
    
    cat blk_1073741827>>tmp.tar.gz
    
    ll

     解压完毕

     删除压缩文件和解压文件

    目标:ZooKeeper 本地安装

    本地模式安装

    1、安装前准备

      (1)安装JDK

      (2) 拷贝apache-zookeeper-3.5.7-bin.tar.gz 安装包到 Linux 系统下

      (3)解压到指定目录

    cd /opt/software/
    
    ll
    
    tar -zxvf apache-zookeeper-3.5.7-bin.tar.gz -C /opt/module/

     

       (4)修改名称

    #切换目录
    cd /opt/module
    
    #修改文件名称
    mv apache-zookeeper-3.5.7-bin zookeeper-3.5.7

     2、配置修改

      (1)将/opt/module/zookeeper-3.5.7/conf 这个路径下的 zoo_sample.cfg 修改为 zoo.cfg;

    cd /opt/module/zookeeper-3.5.7/conf/
    
    mv zoo_sample.cfg  zoo.cfg
    
    ll

      (2)打开 zoo.cfg 文件,修改 dataDir 路径:

    vim zoo.cfg
      修改如下内容:
    dataDir=/opt/module/zookeeper-3.5.7/zkData

     保存退出

      (3)在cd /opt/module/zookeeper-3.5.7/这个目录上创建zkData文件夹

    mkdir zkData
    
    ll

    3、操作Zookeeper

      (1)启动Zookeeper

    bin/zkServer.sh start

       (2)查看进程是否启动

    jps

      (3)查看状态

    bin/zkServer.sh status

      (4)启动客户端

    bin/zkCli.sh

      (5)退出客户端

    quit

      (6)停止Zookeeper

    #停止ZooKeeper
    bin/zkServer.sh stop
    
    #查看状态
    bin/zkServer.sh status

     

    目标:ZooKeeper 集群安装

     分布式安装部署

    1、集群规划

      在hadoop102、hadoop103和hadoop104三个节点上部署Zookeeper

    2、解压安装

      (1)解压Zookeeper安装包到/opt/module/目录下

    tar -zxvf apache-zookeeper-3.5.7-bin.tar.gz -C /opt/module/

      具体解压安装修改名称操作见本地安装模式,不再详细描述

      (2)同步/opt/module/zookeeper-3.5.7目录内容到hadoop103、hadoop104

    xsync zookeeper-3.5.7/

    3、配置服务器编号

      (1)在/opt/module/zookeeper-3.5.7/ 这个目录下创建zkData

    mkdir -p zkData

      由于我在单机本地安装模式已经操作过,这里就不演示了

      (2)在/opt/module/zookeeper-3.5.7/zkData 目录下创建一个myid的文件,并编辑myid文件

      注意:添加myid文件,注意一定要在Linux里面创建,在notepad++里面很可能乱码

    cd /opt/module/zookeeper-3.5.7/
    
    ll
    
    cd zkData/
    
    vim myid
    

      在文件中添加与server对应的编号:

    2
    

      (3)拷贝配置好的zookeeper到其他机器上

    xsync myid
    

    并分别在hadoop103、hadoop104上修改myid文件中内容为3、4

     

     

     4、配置zoo.cfg文件

    (1)将/opt/module/zookeeper-3.5.7/conf 这个路径下的 zoo_sample.cfg 修改为 zoo.cfg;

    cd /opt/module/zookeeper-3.5.7/conf/
    
    mv zoo_sample.cfg  zoo.cfg
    
    ll

      注意,hadoop102的文件名称在单机本地安装模式的时候已经修改了

      (2)打开 zoo.cfg 文件,修改 dataDir 路径:

    vim zoo.cfg
      修改数据存储路径配置
    dataDir=/opt/module/zookeeper-3.5.7/zkData

       增加如下配置

    #######################cluster##########################
    server.2=hadoop102:2888:3888
    server.3=hadoop103:2888:3888
    server.4=hadoop104:2888:3888

     

      (3)同步zoo.cfg配置文件

    xsync zoo.cfg

     

       (4)配置参数解读

    server.A=B:C:D
    
    A是一个数字,表示这个是第几号服务器;
        集群模式下配置一个文件myid,这个文件在dataDir目录下,这个文件里面有一个数据就是A的值,Zookeeper启动时读取此文件,拿到里面的数据与zoo.cfg里面的配置信息比较从而判断到底是哪个server
    
    B是这个服务器的地址;
    
    C是这个服务器Follower与集群中的Leader服务器交换信息的端口;
    
    D是万一集群中的Leader服务器挂了,需要一个端口来重新进行选举,选出一个新的Leader,而这个端口就是用来执行选举时服务器相互通信的端口。

     5、集群操作

      (1)分别启动ZooKeeper 

    bin/zkServer.sh start

     

      同样的方式,启动hadoop003、hadoop004

       (2)查看状态

    bin/zkServer.sh status

     

      注意:如果hadoop003和hadoop004上的ZooKeeper 没启动就会显示上面的状态,当我们把hadoop003和hadoop004分别启动之后,结果如下:

  • 相关阅读:
    使用 Rust 编写更快的 React 组件
    快速入门 postcss 插件:自动转换 px 到 rem
    通过实战理解CPU上下文切换
    “web资源加载优先级”原来能这么精准控制
    使用Brotli提高网站访问速度
    使用 npm shrinkwrap 来管理项目依赖
    如何用“底层逻辑”,看清世界的底牌?
    Node.js 应用全链路追踪技术——全链路信息获取
    解决 Elastic Search 的深分页问题
    Whistle 实现原理 —— 从 0 开始实现一个抓包工具
  • 原文地址:https://www.cnblogs.com/javahr/p/15433729.html
Copyright © 2020-2023  润新知