上海古都建筑设计集团,上海办公室装修设计公司,上海装修公司高质量的内容分享社区,上海装修公司我们不是内容生产者,我们只是上海办公室装修设计公司内容的搬运工平台

【教程】Hadoop完全分布式环境搭建全过程

guduadmin11天前

文章目录

  • 简介
  • 内容&流程
    • 一、模板虚拟机准备
      • 安装模板虚拟机
        • 1,选择 - 自定义(高级)
        • 2,稍后安装操作系统(也可以选择直接安装,没有太大区别)
        • 3,虚拟机名称只作标识该虚拟机的作用,自定义即可
        • 4,处理器数量1,内核数量2
        • 5, 内存4G & 硬盘50G
        • 6,自定义硬件
        • 7,开启此虚拟机,选择install centos 7(对应选项呈白色)
        • 8,语言 - 中文 - 简体中文
        • 9,日期和时间:亚洲-上海
        • 10,软件选择:只选择GNOME桌面
        • 11,安装位置:自动配置分区
        • 12,网络和主机名
          • ☭问题1:打开网络后出现DNS1或者无法连接网络
          • 13, 开始安装
          • 14, 设置ROOT密码
          • 15, 创建用户
          • 模板虚拟机环境准备
            • 1, 配置静态网络
            • 2,设置hostname
              • ☭问题2:主机名变为bogon如何解决?
              • 3,SSH免密登录
              • 4,安装工具包
                • ☭问题3:报错14: curl#6 - “Could not resolve host: mirrorlist.centos.org; 未知的错误”
                • 5,关闭防火墙,并设置关闭防火墙开机自启
                • 6,修改/etc/sudoers文件,使hadoop用户(普通用户)具有 root 权限,方便后期加 sudo 执行 root 权限的命令
                • 7,在/opt 目录下创建 module、software 文件夹
                • 8,卸载虚拟机自带JDK并重启虚拟机
                • 二、克隆虚拟机准备
                  • 1,修改克隆机 IP
                  • 2,修改克隆机主机名
                  • 3,修改/etc/hosts文件
                  • 4,重启虚拟机
                  • 5,修改 windows 的主机映射文件
                  • 6,在hadoop102上安装JDK
                      • ☭问题4:执行 source /etc/profile命令时,报错:bash: #: 未找到命令
                      • 7,在hadoop102安装Hadoop
                      • 三、完全分布式环境部署
                        • 1,本地测试
                        • 2,编写集群分发脚本 xsync
                        • 3,ssh免密登录
                        • 4,集群配置
                        • 5,群起集群
                        • 6,配置历史服务器
                        • 7,配置日志的聚集
                        • 8,编写 Hadoop 集群常用脚本
                        • 9,时间同步
                        • 四、安装ZooKeeper、HBase、MAVEN和IDEA
                          • ZooKeeper完全分布式部署
                            • 1,解压安装
                            • 2,配置服务器编号
                            • 3,配置 zoo.cfg 文件
                              • ☭问题5:启动ZooKeeper报错 mkdir: 无法创建目录".": 权限不够 ?
                              • ☭问题6:Zookeeper启动显示成功,zkServer.sh status报错?
                              • 4,集群操作
                              • HBase安装
                                • 1,Zookeeper 正常部署
                                • 2,Hadoop 正常部署
                                • 3,HBase 的解压
                                • 4,HBase 的配置文件
                                  • ☭问题7:HBase启动警告:Java HotSpot™ 64-Bit Server VM warning
                                  • 5,HBase 远程发送到其他集群
                                  • 6,HBase 服务的启动
                                    • ☭问题8:HBase启动报错 错误:找不到或无法加载主类 org.jruby.Main
                                    • 安装MAVEN & IDEA
                                      • 1,解压安装
                                      • 2,设置环境变量
                                      • 3,测试 MAVEN
                                      • 4,修改MAVEN配置文件,使用阿里的镜像地址
                                      • 5,运行IDEA
                                      • 参考资料
                                      • 资源分享

                                        简介

                                        • 保姆级入门教程:图片讲解 + 各种问题解决方案
                                        • 集群服务器:hadoop102、hadoop103和hadoop104
                                        • 虚拟机版本:CentOS7-1804
                                        • 资源分享处(文章最后)提供CentOS7和Hadoop各组件压缩包(也可以自行下载,要注意版本兼容的问题),有需要自取~

                                        内容&流程

                                        1, 模板虚拟机准备

                                        2, 克隆三台虚拟机,作为完全分布式集群

                                        3, Hadoop完全分布式环境搭建

                                        4, ZooKeeper & HBase & Maven & IDEA安装

                                        一、模板虚拟机准备

                                        安装模板虚拟机

                                        注:下方未出现的步骤,选择默认选项即可

                                        1,选择 - 自定义(高级)

                                        【教程】Hadoop完全分布式环境搭建全过程,在这里插入图片描述,第1张

                                        2,稍后安装操作系统(也可以选择直接安装,没有太大区别)

                                        【教程】Hadoop完全分布式环境搭建全过程,在这里插入图片描述,第2张

                                        3,虚拟机名称只作标识该虚拟机的作用,自定义即可

                                        【教程】Hadoop完全分布式环境搭建全过程,在这里插入图片描述,第3张

                                        4,处理器数量1,内核数量2

                                        【教程】Hadoop完全分布式环境搭建全过程,在这里插入图片描述,第4张

                                        5, 内存4G & 硬盘50G

                                        (此虚拟机只为演示Hadoop完全分布式环境搭建过程所用,4G内存基本够用)

                                        【教程】Hadoop完全分布式环境搭建全过程,在这里插入图片描述,第5张

                                        硬盘50G

                                        (安装内容包含JDK、Hadoop、ZooKeeper、HBase、Maven和IDEA,50G够用)

                                        【教程】Hadoop完全分布式环境搭建全过程,在这里插入图片描述,第6张

                                        6,自定义硬件

                                        【教程】Hadoop完全分布式环境搭建全过程,在这里插入图片描述,第7张

                                        6.1 选择ISO映像文件

                                        选择稍后安装的要在这一步选择自定义硬件,添加ISO映像文件

                                        【教程】Hadoop完全分布式环境搭建全过程,在这里插入图片描述,第8张

                                        6.2 USB兼容性 - USB 3.1

                                        【教程】Hadoop完全分布式环境搭建全过程,在这里插入图片描述,第9张

                                        7,开启此虚拟机,选择install centos 7(对应选项呈白色)

                                        【教程】Hadoop完全分布式环境搭建全过程,在这里插入图片描述,第10张

                                        8,语言 - 中文 - 简体中文

                                        (在操作体验上,与选择英语差别不大,建议英语不太好的童靴选择中文)

                                        【教程】Hadoop完全分布式环境搭建全过程,在这里插入图片描述,第11张

                                        进入安装信息摘要界面

                                        【教程】Hadoop完全分布式环境搭建全过程,在这里插入图片描述,第12张

                                        9,日期和时间:亚洲-上海

                                        【教程】Hadoop完全分布式环境搭建全过程,在这里插入图片描述,第13张

                                        10,软件选择:只选择GNOME桌面

                                        【教程】Hadoop完全分布式环境搭建全过程,在这里插入图片描述,第14张

                                        11,安装位置:自动配置分区

                                        选择自动配置分区即可

                                        (若想要手动分区,则点击 我要配置分区 - 完成,就会出现手动分区的界面)

                                        【教程】Hadoop完全分布式环境搭建全过程,在这里插入图片描述,第15张

                                        12,网络和主机名

                                        12.1 选择配置

                                        【教程】Hadoop完全分布式环境搭建全过程,在这里插入图片描述,第16张

                                        12.2 查看个人虚拟机的相关信息

                                        • 虚拟机 - 编辑选项卡 - 虚拟网络编辑器

                                          【教程】Hadoop完全分布式环境搭建全过程,在这里插入图片描述,第17张

                                        • 选择NAT模式

                                          【教程】Hadoop完全分布式环境搭建全过程,在这里插入图片描述,第18张

                                        • NAT设置 - 查看子网掩码和网关

                                          【教程】Hadoop完全分布式环境搭建全过程,在这里插入图片描述,第19张

                                        • DHCP设置 - 查看IP地址范围

                                          • 之后在配置静态IP地址时,所有的IP地址都必须在这个范围之内

                                            【教程】Hadoop完全分布式环境搭建全过程,在这里插入图片描述,第20张

                                          • 回到配置界面 - 选择IPv4配置 - 点击 Add

                                            • 根据前面的步骤,地址填IP地址范围内的地址,子网掩码和网关照填即可【教程】Hadoop完全分布式环境搭建全过程,在这里插入图片描述,第21张

                                            • 附加DNS服务器:填入与网关IP相同的地址

                                              【教程】Hadoop完全分布式环境搭建全过程,在这里插入图片描述,第22张

                                            • 点击保存 - 回到配置界面 - 打开网络

                                              【教程】Hadoop完全分布式环境搭建全过程,在这里插入图片描述,第23张

                                              ☭问题1:打开网络后出现DNS1或者无法连接网络

                                              出现DNS1:检查网关地址是否正确

                                              无法连接网络:检查IP地址是否在起始和终止的IP地址范围之内

                                              • 点击完成
                                                13, 开始安装

                                                【教程】Hadoop完全分布式环境搭建全过程,在这里插入图片描述,第24张

                                                将出现以下界面:

                                                【教程】Hadoop完全分布式环境搭建全过程,在这里插入图片描述,第25张

                                                14, 设置ROOT密码

                                                建议密码不要太复杂

                                                【教程】Hadoop完全分布式环境搭建全过程,在这里插入图片描述,第26张

                                                15, 创建用户
                                                • 创建一个普通用户,名称可自定义(我创建的用户名称是hadoop,之后用此名称指代普通用户)
                                                • 目的: 在搭建项目的过程中,所有的项目有关的操作都由普通用户来执行,以此与超级用户(root用户)作区别,来维护系统的安全性(防止一些涉及到系统内核的操作被执行)。
                                                • 建议密码不要太复杂

                                                【教程】Hadoop完全分布式环境搭建全过程,在这里插入图片描述,第27张

                                                模板虚拟机环境准备

                                                1, 配置静态网络

                                                Q: 为什么使用静态IP地址?

                                                A: 在使用虚拟机的时候,默认情况下使用的DHCP协议分配的动态IP地址,使得每次打开虚拟机后当前的IP地址都会发生变化,这样不方便管理。为了能够给当前虚拟机设置一个静态IP地址,方便后期使用XShell连接工具进行连接,以及配置各种服务。所以,我们需要为虚拟机设置一个静态IP地址。

                                                1.1 打开终端,查看网卡名称 - 我的网卡名称为ens33,如下图所示

                                                [root@bogon ~]$ ip addr
                                                

                                                【教程】Hadoop完全分布式环境搭建全过程,在这里插入图片描述,第28张

                                                1.2 修改网卡配置文件(记得后面要改成自己的网卡名称)

                                                [root@bogon ~]$ vi /etc/sysconfig/network-scripts/ifcfg-ens33
                                                
                                                • 修改以下选项
                                                  BOOTPROTO='dhcp' -> 'static'
                                                  ONBOOT='no' -> 'yes'
                                                  
                                                  • 如果在前面安装过程中,设置 网络和主机名 没有出错,那下列选项应该没有问题
                                                    IPADDR='要设置的IP地址'
                                                    PREFIX='子网掩码'
                                                    GATEWAY='网关IP'
                                                    DNS1='网关IP'
                                                    

                                                    1.3 重启网络

                                                    [root@bogon ~]$ service network restart
                                                    
                                                    2,设置hostname
                                                    • 设置主机名很重要,我设置的模板机的主机名为hadoop100,之后集群服务器中的主机名为hadoop102、hadoop103和hadoop104
                                                    • 下面的命令按自己的主机名来
                                                    [root@bogon ~]$ hostnamectl set-hostname 主机名
                                                    例如:hostnamectl set-hostname hadoop100
                                                    

                                                    2.1 查看hostname

                                                    [root@bogon ~]$ cat /etc/hostname
                                                    hadoop100
                                                    

                                                    2.2 编辑hosts文件

                                                    目的: 修改/etc/hosts 文件,该文件主要用于映射 IP 地址和域名之间的连接

                                                    [root@bogon ~]$ vi /etc/hosts
                                                    
                                                    • 在第二行添加:原本第二行如果有内容删除即可;
                                                    • 之后保存退出
                                                      IP地址 主机名
                                                      例如:
                                                      我设置的IP地址为xxx.xxx.xxx.130,那么我要添加的内容就是
                                                      xxx.xxx.xxx.130 hadoop100
                                                      

                                                      【教程】Hadoop完全分布式环境搭建全过程,在这里插入图片描述,第29张

                                                      ☭问题2:主机名变为bogon如何解决?
                                                      # 执行su命令
                                                      [root@bogon ~]$ su
                                                      [root@localhost ~]$ 
                                                      
                                                      3,SSH免密登录
                                                      # hadoop 普通用户
                                                      [root@localhost ~]$ su hadoop
                                                      # 第一次配置免密登录,执行下面这个命令后点三次回车即可
                                                      [hadoop@localhost root]$ ssh-keygen
                                                      [hadoop@localhost root]$ ssh-copy-id localhost
                                                      [hadoop@localhost root]$ ssh localhost
                                                      Last login: Web Feb 8 21:43:26 2023
                                                      [hadoop@localhost ~]$ 
                                                      

                                                      【教程】Hadoop完全分布式环境搭建全过程,在这里插入图片描述,第30张

                                                      4,安装工具包
                                                      [root@localhost ~]$ yum install -y epel-release
                                                      ...
                                                      已安装:
                                                       epel-release.noarch 0:7-11
                                                      完毕!
                                                      [root@localhost ~]$ yum install -y net-tools
                                                      [root@localhost ~]$ yum install -y vim
                                                      
                                                      ☭问题3:报错14: curl#6 - “Could not resolve host: mirrorlist.centos.org; 未知的错误”

                                                      CentOS7下报错14: curl#6 - “Could not resolve host: mirrorlist.centos.org; 未知的错误”-解决方法

                                                      5,关闭防火墙,并设置关闭防火墙开机自启
                                                      [root@localhost ~]$ systemctl stop firewalld
                                                      [root@localhost ~]$ systemctl disable firewalld.service
                                                      Removed symlink /etc/systemd/system/multi-user.target.wants/firewalld.service.
                                                      Removed symlink /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service.
                                                      # 查看防火墙是否已关闭
                                                      [root@localhost ~]$ systemctl list-unit-files |grep firewalld
                                                      firewalld.service disabled
                                                      
                                                      6,修改/etc/sudoers文件,使hadoop用户(普通用户)具有 root 权限,方便后期加 sudo 执行 root 权限的命令
                                                      [root@localhost ~]$ vim /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
                                                      hadoop ALL=(ALL) NOPASSWD:ALL
                                                      
                                                      7,在/opt 目录下创建 module、software 文件夹

                                                      7.1 module文件夹存放解压后的文件,software文件夹存放待解压的压缩包

                                                      [root@localhost ~]$ mkdir /opt/module /opt/software
                                                      

                                                      7.2 修改两个目录的所属组和所有者均为hadoop用户

                                                      [root@localhost ~]$ chown -R hadoop:hadoop /opt/module
                                                      [root@localhost ~]$ chown -R hadoop:hadoop /opt/software
                                                      

                                                      7.3 查看 module、software 文件夹的所有者和所属组

                                                      [root@localhost ~]$ cd /opt/
                                                      [root@localhost opt]$ ll
                                                      总用量 0
                                                      drwxr-xr-x. 2 hadoop hadoop 6 2月 8 21:53 module
                                                      drwxr-xr-x. 2 root root     6 9月 7 2017 rh
                                                      drwxr-xr-x. 2 hadoop hadoop 6 2月 8 12:53 software
                                                      
                                                      8,卸载虚拟机自带JDK并重启虚拟机
                                                      [root@localhost opt]$ rpm -qa | grep -i java | xargs -n1 rpm -e --nodeps
                                                      [root@localhost opt]$ reboot
                                                      

                                                      8.1 查看JDK版本(看是否卸载干净)

                                                      [root@hadoop100 ~]$ java -version
                                                      bash: java: 未找到命令...
                                                      

                                                      二、克隆虚拟机准备

                                                      使用VMware自带的克隆功能,利用模板虚拟机克隆三台虚拟机:

                                                      主机名分别为hadoop102、hadoop103和hadoop104

                                                      IP地址为xxx.xxx.xxx.132、xxx.xxx.xxx.133和xxx.xxx.xxx.134(根据自己虚拟机的IP地址范围配置,下面有具体配置过程)

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

                                                      1,修改克隆机 IP

                                                      以下过程以hadoop102为例,三台虚拟机都需要做

                                                      1.1 修改网卡配置文件(记得后面要改成自己的网卡名称)

                                                      [root@hadoop100 ~]$ vi /etc/sysconfig/network-scripts/ifcfg-ens33
                                                      
                                                      • 修改以下选项
                                                        • 附:Linux中为网卡生成UUID
                                                          UUID='原来的UUID' -> '新生成的UUID'
                                                          IPADDR='原来的IP地址' -> '要设置的IP地址'
                                                          

                                                          1.2 重启网络

                                                          [root@hadoop100 ~]$ service network restart
                                                          

                                                          2,修改克隆机主机名

                                                          以下过程以hadoop102为例,三台虚拟机都需要做

                                                          [root@hadoop100 ~]$ vim /etc/hostname
                                                          hadoop102
                                                          

                                                          3,修改/etc/hosts文件

                                                          以下过程以hadoop102为例,三台虚拟机都需要做

                                                          [root@hadoop100 ~]$ vim /etc/hosts
                                                          

                                                          3.1 添加如下内容

                                                          依然是IP地址要修改成你自己的:

                                                          尤其是hadoop102~104,对应的IP地址为你要设置的IP

                                                          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
                                                          

                                                          4,重启虚拟机

                                                          以下过程以hadoop102为例,三台虚拟机都需要做

                                                          [root@hadoop100 ~]$ reboot
                                                          

                                                          4.1 重启之后,打开终端发现主机名已经修改成功

                                                          [root@hadoop102 ~]$
                                                          

                                                          5,修改 windows 的主机映射文件

                                                          5.1 如果操作系统是window7,可以直接修改

                                                          • 进入C:\Windows\System32\drivers\etc 路径
                                                          • 打开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
                                                            

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

                                                            • 进入C:\Windows\System32\drivers\etc 路径
                                                            • 拷贝hosts 文件到桌面
                                                            • 打开桌面 hosts 文件并添加同上内容
                                                            • 将桌面 hosts 文件覆盖 C:\Windows\System32\drivers\etc 路径 hosts 文件

                                                              修改完毕后,就可以在windows环境下使用xshell连接虚拟机了,操作会方便很多哦~

                                                              附:XShell免费版的安装配置教程以及使用教程(超级详细、保姆级)

                                                              6,在hadoop102上安装JDK

                                                              6.1 首先确保虚拟机自带JDK卸载干净

                                                              [root@hadoop102 ~]$ java -version
                                                              bash: java: 未找到命令...
                                                              

                                                              6.2 解压JDK到/opt/module

                                                              • 提示1:xshell中可以使用rz命令将本地文件上传至虚拟机,或者建立共享文件夹也有同样效果。
                                                              • 提示2:文章末尾提供JDK8等各组件的安装包,需要自取~
                                                              • 进入/opt/software文件夹,查看压缩包名称
                                                                [root@hadoop102 ~]$ cd /opt/software
                                                                [root@hadoop102 software]$ ls
                                                                

                                                                【教程】Hadoop完全分布式环境搭建全过程,在这里插入图片描述,第31张

                                                                • 解压JDK压缩包
                                                                  [root@hadoop102 software]$ su hadoop
                                                                  [hadoop@hadoop102 software]$ sudo tar -zxvf jdk-8u211-linux-x64.tar.gz -C /opt/module
                                                                  

                                                                  6.3 修改JDK安装包名称

                                                                  [hadoop@hadoop102 software]$ cd ../module
                                                                  [hadoop@hadoop102 module]$ ls
                                                                  jdk1.8.0_211
                                                                  [hadoop@hadoop102 module]$ mv jdk1.8.0_211 jdk
                                                                  [hadoop@hadoop102 module]$ ls
                                                                  jdk
                                                                  

                                                                  6.4 配置 JDK 环境变量

                                                                  [hadoop@hadoop102 module]$ sudo vim /etc/profile.d/my_env.sh
                                                                  
                                                                  • 添加以下内容:
                                                                    #JAVA_HOME
                                                                    export JAVA_HOME=/opt/module/jdk
                                                                    export PATH=$PATH:$JAVA_HOME/bin
                                                                    
                                                                    • 刷新shell环境,让环境变量生效
                                                                      [hadoop@hadoop102 module]$ source /etc/profile
                                                                      
                                                                      • 查看JDK版本信息
                                                                        [hadoop@hadoop102 module]$ java -version
                                                                        

                                                                        【教程】Hadoop完全分布式环境搭建全过程,在这里插入图片描述,第32张

                                                                        ☭问题4:执行 source /etc/profile命令时,报错:bash: #: 未找到命令

                                                                        首先再仔细检查一下 /etc/profile.d/my_env.sh 文件,尤其是注释前面的 # 有没有省略,以及HOME目录有没有配错。

                                                                        7,在hadoop102安装Hadoop

                                                                        7.1 进入/opt/software文件夹,解压Hadoop到/opt/module

                                                                        [hadoop@hadoop102 software]$ sudo tar -zxvf hadoop-2.6.0-cdh5.14.2.tar.gz -C /opt/module
                                                                        

                                                                        7.2 修改Hadoop安装包名称

                                                                        [hadoop@hadoop102 module]$ ls
                                                                        hadoop-2.6.0-cdh5.14.2 jdk
                                                                        [hadoop@hadoop102 module]$ mv hadoop-2.6.0-cdh5.14.2 hadoop
                                                                        [hadoop@hadoop102 module]$ ls
                                                                        hadoop jdk
                                                                        # 确保hadoop用户具有操作module目录下文件的权限
                                                                        [hadoop@hadoop102 module]$ cd ..
                                                                        [hadoop@hadoop102 opt]$ chown -R hadoop:hadoop module
                                                                        

                                                                        7.3 将 Hadoop 添加到环境变量

                                                                        [hadoop@hadoop102 module]$ sudo vim /etc/profile.d/my_env.sh
                                                                        
                                                                        • 添加以下内容:
                                                                          #HADOOP_HOME
                                                                          export HADOOP_HOME=/opt/module/hadoop
                                                                          export PATH=$PATH:$HADOOP_HOME/bin
                                                                          export PATH=$PATH:$HADOOP_HOME/sbin
                                                                          
                                                                          • 刷新shell环境,让环境变量生效
                                                                            [hadoop@hadoop102 module]$ source /etc/profile
                                                                            
                                                                            • 查看Hadoop版本信息
                                                                              [hadoop@hadoop102 module]$ hadoop version
                                                                              

                                                                              【教程】Hadoop完全分布式环境搭建全过程,在这里插入图片描述,第33张

                                                                              三、完全分布式环境部署

                                                                              1,本地测试

                                                                              里面有些步骤与后续内容相关,尽量不要跳过

                                                                              #创建hello.txt文件,用来测试hadoop自带的wordcount程序
                                                                              [hadoop@hadoop102 module]$ mkdir /hadoop/wcinput
                                                                              [hadoop@hadoop102 module]$ cd /hadoop/wcinput
                                                                              [hadoop@hadoop102 wcinput]$ vim hello.txt
                                                                              

                                                                              1.1 在hello.txt文件中填入任意内容即可,举例:

                                                                              hello world
                                                                              hello java
                                                                              I'm MOSS
                                                                              

                                                                              1.2 运行wordcount程序

                                                                              注:在$HADOOP_HOME/share/hadoop/mapreduce/目录下找对应jar包

                                                                              [hadoop@hadoop102 hadoop]$ pwd
                                                                              /opt/module/hadoop
                                                                              [hadoop@hadoop102 hadoop]$ hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.6.0-cdh5.14.2.jar wordcount wcinput wcoutput
                                                                              [hadoop@hadoop102 hadoop]$ cat wcoutput/part-r-00000
                                                                              

                                                                              2,编写集群分发脚本 xsync

                                                                              2.1 执行以下命令同步jdk和hadoop文件到hadoop103和hadoop104,顺便测试scp和rsync命令

                                                                              注意执行各命令的服务器

                                                                              [hadoop@hadoop102 hadoop]$ scp -r /opt/module/jdk hadoop@hadoop103:/opt/module
                                                                              [hadoop@hadoop103 hadoop]$ scp -r hadoop@hadoop102:/opt/module/hadoop /opt/module/
                                                                              [hadoop@hadoop103 hadoop]$ scp -r hadoop@hadoop102:/opt/module/* hadoop@hadoop104:/opt/module
                                                                              # 在hadoop103上删除wcinput目录,执行rsync同步命令后,hadoop103上wcinput目录恢复
                                                                              [hadoop@hadoop103 hadoop]$ rm -rf wcinput/
                                                                              [hadoop@hadoop102 opt]$ rsync -av hadoop/ hadoop@hadoop103:/opt/module/hadoop/
                                                                              

                                                                              2.2 编写xsync脚本

                                                                              • 期望脚本在任何路径都能使用(脚本放在声明了全局环境变量的路径):
                                                                                [hadoop@hadoop102 opt]$ echo $PATH
                                                                                [hadoop@hadoop102 opt]$ cd /home/hadoop
                                                                                [hadoop@hadoop102 ~]$ mkdir bin
                                                                                
                                                                                • 将/home/hadoop/bin目录添加到全局环境变量中
                                                                                  [hadoop@hadoop102 ~]$ sudo vim /etc/profile.d/my_env.sh
                                                                                  
                                                                                  • 添加以下内容:
                                                                                    #XSYNC_HOME
                                                                                    export XSYNC_HOME=/home/hadoop
                                                                                    export PATH=$PATH:$XSYNC_HOME/bin
                                                                                    
                                                                                    • 刷新shell环境,让环境变量生效
                                                                                      [hadoop@hadoop102 ~]$ source /etc/profile
                                                                                      # 查看发现全局环境变量中已有/home/hadoop/bin目录
                                                                                      [hadoop@hadoop102 ~]$ echo $PATH
                                                                                      
                                                                                      • 在/home/hadoop/bin目录下编写xsync脚本
                                                                                        [hadoop@hadoop102 ~]$ cd bin
                                                                                        [hadoop@hadoop102 bin]$ 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
                                                                                          

                                                                                          2.3 修改脚本 xsync 具有执行权限

                                                                                          [hadoop@hadoop102 bin]$ chmod +x xsync
                                                                                          

                                                                                          2.4 测试脚本

                                                                                          [hadoop@hadoop102 bin]$ xsync /home/hadoop/bin
                                                                                          

                                                                                          2.5 同步环境变量配置

                                                                                          注意:如果用了 sudo,那么 xsync 一定要给它的路径补全。

                                                                                          [hadoop@hadoop102 ~]$ sudo ./bin/xsync /etc/profile.d/my_env.sh
                                                                                          

                                                                                          2.6 让环境变量生效

                                                                                          [hadoop@hadoop103 bin]$ source /etc/profile
                                                                                          [hadoop@hadoop104 bin]$ source /etc/profile
                                                                                          

                                                                                          3,ssh免密登录

                                                                                          3.1 生成公钥和私钥

                                                                                          [hadoop@hadoop102 ~]$ cd /home/hadoop/.ssh
                                                                                          [hadoop@hadoop102 .ssh]$ ssh-keygen -t rsa
                                                                                          

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

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

                                                                                          注意:

                                                                                          • 还需要在 hadoop103 上采用 hadoop 账号配置一下无密登录到 hadoop102、hadoop103、 hadoop104 服务器上;
                                                                                          • 还需要在 hadoop104 上采用 hadoop 账号配置一下无密登录到 hadoop102、hadoop103、 hadoop104 服务器上;
                                                                                          • 还需要在 hadoop102 上采用 root 账号,配置一下无密登录到 hadoop102、hadoop103、hadoop104。

                                                                                            接下来就可以通过ssh 主机名命令免密登录到别的服务器了~

                                                                                            以下为测试:

                                                                                          [hadoop@hadoop102 .ssh]$ ssh hadoop103
                                                                                          Last login: Tue Feb 14 11:57:09 2023 from hadoop102
                                                                                          [hadoop@hadoop103 ~]$ pwd
                                                                                          /home/hadoop
                                                                                          [hadoop@hadoop103 ~]$ exit
                                                                                          登出
                                                                                          Connection to hadoop103 closed.
                                                                                          [hadoop@hadoop102 .ssh]$ 
                                                                                          

                                                                                          4,集群配置

                                                                                          4.1 集群部署规划

                                                                                          • 元数据节点、资源管理器和从元数据节点分别安装在三台服务器上
                                                                                          • 数据节点和节点管理器在三台服务器上均安装

                                                                                          【教程】Hadoop完全分布式环境搭建全过程,在这里插入图片描述,第34张

                                                                                          4.2 配置集群

                                                                                          • 核心配置文件配置 core-site.xml
                                                                                            [hadoop@hadoop102 .ssh]$ cd $HADOOP_HOME/etc/hadoop
                                                                                            [hadoop@hadoop102 hadoop]$ vim core-site.xml
                                                                                            
                                                                                            • core-site.xml修改内容如下:

                                                                                              注意这个hadoop数据存储目录哦,如果没有指定的话,hadoop会在HOME目录下生成一个tmp目录,现在我们指定了,就变成 /opt/module/hadoop/data目录。

                                                                                              所以如果在进行hadoop的格式化之前要删除的tmp目录和logs目录,就变成了data目录和logs目录了。

                                                                                              附:如何重新格式化Hadoop文件系统

                                                                                              
                                                                                                  
                                                                                                  
                                                                                                      fs.defaultFS
                                                                                                      hdfs://hadoop102:8020
                                                                                                  
                                                                                                  
                                                                                                  
                                                                                                      hadoop.tmp.dir
                                                                                                      /opt/module/hadoop/data
                                                                                                  
                                                                                                  
                                                                                                  
                                                                                                      hadoop.http.staticuser.user
                                                                                                      hadoop
                                                                                                  
                                                                                              
                                                                                              
                                                                                              • HDFS 配置文件-配置 hdfs-site.xml
                                                                                                [hadoop@hadoop102 hadoop]$ vim hdfs-site.xml
                                                                                                
                                                                                                • hdfs-site.xml修改内容如下:
                                                                                                  
                                                                                                      
                                                                                                      
                                                                                                          dfs.namenode.http-address
                                                                                                          hadoop102:9870
                                                                                                      
                                                                                                      
                                                                                                      
                                                                                                          dfs.namenode.secondary.http-address
                                                                                                          hadoop104:9868
                                                                                                      
                                                                                                  
                                                                                                  
                                                                                                  • YARN 配置文件-配置 yarn-site.xml
                                                                                                    [hadoop@hadoop102 hadoop]$ vim yarn-site.xml
                                                                                                    
                                                                                                    • yarn-site.xml修改内容如下:
                                                                                                      
                                                                                                          
                                                                                                          
                                                                                                              yarn.nodemanager.aux-services
                                                                                                              mapreduce_shuffle
                                                                                                          
                                                                                                          
                                                                                                          
                                                                                                              yarn.resourcemanager.hostname
                                                                                                              hadoop103
                                                                                                          
                                                                                                          
                                                                                                          
                                                                                                              yarn.nodemanager.env-whitelist
                                                                                                              JAVA_HOME,HADOOP_COMMON_HOME,HADOOP_HDFS_HOME,HADOOP_CO
                                                                                                                  NF_DIR,CLASSPATH_PREPEND_DISTCACHE,HADOOP_YARN_HOME,HADOOP_MAP
                                                                                                                  RED_HOME
                                                                                                          
                                                                                                      
                                                                                                      
                                                                                                      • MapReduce 配置文件-配置 mapred-site.xml
                                                                                                        [hadoop@hadoop102 hadoop]$ vim mapred-site.xml
                                                                                                        
                                                                                                        • mapred-site.xml内容如下:
                                                                                                          
                                                                                                          
                                                                                                          
                                                                                                              
                                                                                                              
                                                                                                                  mapreduce.framework.name
                                                                                                                  yarn
                                                                                                              
                                                                                                          
                                                                                                          

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

                                                                                                          [hadoop@hadoop102 hadoop]$ xsync /opt/module/hadoop/etc/hadoop/
                                                                                                          

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

                                                                                                          [hadoop@hadoop103 ~]$ cat /opt/module/hadoop/etc/hadoop/core-site.xml
                                                                                                          [hadoop@hadoop104 ~]$ cat /opt/module/hadoop/etc/hadoop/core-site.xml
                                                                                                          

                                                                                                          5,群起集群

                                                                                                          5.1 配置 slaves(hadoop3.0之后版本改为workers)

                                                                                                          [hadoop@hadoop102 hadoop]$ vim /opt/module/hadoop/etc/hadoop/slaves
                                                                                                          
                                                                                                          • 文件内容如下:(原本的内容要删除)
                                                                                                            hadoop102
                                                                                                            hadoop103
                                                                                                            hadoop104
                                                                                                            
                                                                                                            • 同步所有节点配置文件:
                                                                                                              [hadoop@hadoop102 hadoop]$ xsync /opt/module/hadoop/etc
                                                                                                              

                                                                                                              5.2 启动集群

                                                                                                              注意:如果集群是第一次启动,需要在 hadoop102 节点格式化 NameNode

                                                                                                              [hadoop@hadoop102 hadoop]$ hdfs namenode -format
                                                                                                              
                                                                                                              • 启动HDFS:
                                                                                                                [hadoop@hadoop102 hadoop]$ start-dfs.sh
                                                                                                                
                                                                                                                • 在配置了 ResourceManager 的节点(hadoop103)启动 YARN:
                                                                                                                  [hadoop@hadoop103 hadoop]$ start-yarn.sh
                                                                                                                  

                                                                                                                  6,配置历史服务器

                                                                                                                  • 目的: 为了查看程序的历史运行情况
                                                                                                                  • Hadoop自带了一个历史服务器,可以通过历史服务器在web端查看已经运行完的Mapreduce作业记录,比如用了多少个Map、用了多少个Reduce、作业提交时间、作业启动时间、作业完成时间等信息
                                                                                                                  • 所以修改mapreduce的配置文件以配置历史服务器

                                                                                                                  6.1 配置 mapred-site.xml

                                                                                                                  [hadoop@hadoop102 hadoop]$ vim mapred-site.xml 
                                                                                                                  
                                                                                                                  • 在该文件里面增加如下配置:
                                                                                                                        
                                                                                                                        
                                                                                                                            mapreduce.jobhistory.address
                                                                                                                            hadoop102:10020
                                                                                                                        
                                                                                                                        
                                                                                                                        
                                                                                                                            mapreduce.jobhistory.webapp.address
                                                                                                                            hadoop102:19888
                                                                                                                        
                                                                                                                    

                                                                                                                    6.2 分发配置

                                                                                                                    [hadoop@hadoop102 hadoop]$ xsync $HADOOP_HOME/etc/hadoop/mapred-site.xml
                                                                                                                    

                                                                                                                    6.3 在 hadoop102启动历史服务器

                                                                                                                    在hadoop2.0和hadoop3.0上,启动和终止历史服务器的命令有区别,以下为2.0版本

                                                                                                                    附:hadoop3.x集群:配置、启动历史服务(history server,端口19888)

                                                                                                                    [hadoop@hadoop102 hadoop]$ mr-jobhistory-daemon.sh start historyserver
                                                                                                                    

                                                                                                                    6.4 查看历史服务器是否启动

                                                                                                                    [hadoop@hadoop102 hadoop]$ jps 
                                                                                                                    

                                                                                                                    【教程】Hadoop完全分布式环境搭建全过程,在这里插入图片描述,第35张

                                                                                                                    7,配置日志的聚集

                                                                                                                    • 目的: 可以方便的查看到程序运行详情,方便开发调试(在102的HDFS上)

                                                                                                                    7.1 配置 yarn-site.xml

                                                                                                                    [hadoopu@hadoop102 hadoop]$ vim yarn-site.xml 
                                                                                                                    
                                                                                                                    • 在该文件里面增加如下配置
                                                                                                                          
                                                                                                                          
                                                                                                                              yarn.log-aggregation-enable
                                                                                                                              true
                                                                                                                          
                                                                                                                          
                                                                                                                          
                                                                                                                              yarn.log.server.url
                                                                                                                              http://hadoop102:19888/jobhistory/logs
                                                                                                                          
                                                                                                                          
                                                                                                                          
                                                                                                                              yarn.log-aggregation.retain-seconds
                                                                                                                              604800
                                                                                                                          
                                                                                                                      

                                                                                                                      7.2 分发配置

                                                                                                                      [hadoop@hadoop102 hadoop]$ xsync $HADOOP_HOME/etc/hadoop/yarn-site.xml
                                                                                                                      

                                                                                                                      7.3 关闭 NodeManager 、ResourceManager和 HistoryServer

                                                                                                                      [hadoop@hadoop103 hadoop]$ stop-yarn.sh
                                                                                                                      [hadoop@hadoop102 hadoop]$ mr-jobhistory-daemon.sh stop historyserver  
                                                                                                                      

                                                                                                                      7.4 启动 NodeManager 、ResourceManage 和 HistoryServer

                                                                                                                      [hadoop@hadoop103 hadoop]$ start-yarn.sh
                                                                                                                      [hadoop@hadoop102 hadoop]$ mr-jobhistory-daemon.sh start historyserver
                                                                                                                      

                                                                                                                      7.5 测试

                                                                                                                      • 上传hello.txt文件
                                                                                                                        [hadoop@hadoop102 hadoop]$ pwd
                                                                                                                        /opt/module/hadoop
                                                                                                                        [hadoop@hadoop102 hadoop]$ hadoop fs -mkdir /input
                                                                                                                        [hadoop@hadoop102 hadoop]$ hadoop fs -put wcinput/hello.txt /input
                                                                                                                        
                                                                                                                        • 执行 WordCount 程序
                                                                                                                          [hadoop@hadoop102 hadoop]$ hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.6.0-cdh5.14.2.jar wordcount /input /output
                                                                                                                          # 查看运行结果
                                                                                                                          [hadoop@hadoop102 hadoop]$ hadoop fs -text /out*/p*
                                                                                                                          

                                                                                                                          【教程】Hadoop完全分布式环境搭建全过程,在这里插入图片描述,第36张

                                                                                                                          7.6 查看日志

                                                                                                                          • 历史服务器地址:地址
                                                                                                                          • 历史任务列表

                                                                                                                            【教程】Hadoop完全分布式环境搭建全过程,在这里插入图片描述,第37张

                                                                                                                          • 查看任务运行日志

                                                                                                                            【教程】Hadoop完全分布式环境搭建全过程,在这里插入图片描述,第38张

                                                                                                                          • 运行日志详情

                                                                                                                            【教程】Hadoop完全分布式环境搭建全过程,在这里插入图片描述,第39张

                                                                                                                            8,编写 Hadoop 集群常用脚本

                                                                                                                            8.1 Hadoop 集群启停脚本(包含 HDFS,Yarn,Historyserver)

                                                                                                                            [hadoop@hadoop102 ~]$ cd /home/hadoop/bin
                                                                                                                            [hadoop@hadoop102 bin]$ vim myhadoop.sh
                                                                                                                            
                                                                                                                            • 编写myhadoop.sh脚本内容
                                                                                                                              #!/bin/bash
                                                                                                                              if [ $# -lt 1 ]
                                                                                                                              then
                                                                                                                               echo "No Args Input..."
                                                                                                                               exit ;
                                                                                                                              fi
                                                                                                                              case  in
                                                                                                                              "start")
                                                                                                                               echo " =================== 启动 hadoop 集群 ==================="
                                                                                                                               echo " --------------- 启动 hdfs ---------------"
                                                                                                                               ssh hadoop102 "/opt/module/hadoop/sbin/start-dfs.sh"
                                                                                                                               echo " --------------- 启动 yarn ---------------"
                                                                                                                                ssh hadoop103 "/opt/module/hadoop/sbin/start-yarn.sh"
                                                                                                                               echo " --------------- 启动 historyserver ---------------"
                                                                                                                               ssh hadoop102 "/opt/module/hadoop/sbin/mr-jobhistory-daemon.sh start historyserver"
                                                                                                                              ;;
                                                                                                                              "stop")
                                                                                                                               echo " =================== 关闭 hadoop 集群 ==================="
                                                                                                                               echo " --------------- 关闭 historyserver ---------------"
                                                                                                                               ssh hadoop102 "/opt/module/hadoop/sbin/mr-jobhistory-daemon.sh stop historyserver"
                                                                                                                               echo " --------------- 关闭 yarn ---------------"
                                                                                                                               ssh hadoop103 "/opt/module/hadoop/sbin/stop-yarn.sh"
                                                                                                                               echo " --------------- 关闭 hdfs ---------------"
                                                                                                                               ssh hadoop102 "/opt/module/hadoop/sbin/stop-dfs.sh"
                                                                                                                              ;;
                                                                                                                              *)
                                                                                                                               echo "Input Args Error..."
                                                                                                                              ;;
                                                                                                                              esac
                                                                                                                              
                                                                                                                              • 保存后退出,然后赋予脚本执行权限
                                                                                                                                [hadoop@hadoop102 bin]$ chmod +x myhadoop.sh
                                                                                                                                

                                                                                                                                8.2 查看三台服务器 Java 进程脚本

                                                                                                                                [hadoop@hadoop102 ~]$ cd /home/hadoop/bin
                                                                                                                                [hadoop@hadoop102 bin]$ vim jpsall
                                                                                                                                
                                                                                                                                • 输入如下内容
                                                                                                                                  #!/bin/bash
                                                                                                                                  for host in hadoop102 hadoop103 hadoop104
                                                                                                                                  do
                                                                                                                                   echo =============== $host ===============
                                                                                                                                   ssh $host jps
                                                                                                                                  done
                                                                                                                                  
                                                                                                                                  • 保存后退出,然后赋予脚本执行权限:
                                                                                                                                    [hadoop@hadoop102 bin]$ chmod +x jpsall 
                                                                                                                                    

                                                                                                                                    8.3 分发/home/hadoop/bin 目录,保证自定义脚本在三台机器上都可以使用:

                                                                                                                                    # 先确保一下文件所属
                                                                                                                                    [hadoop@hadoop102 ~]$ chown -R hadoop:hadoop bin
                                                                                                                                    # 分发bin目录
                                                                                                                                    [hadoop@hadoop102 ~]$ xsync /home/hadoop/bin/
                                                                                                                                    

                                                                                                                                    8.4 测试

                                                                                                                                    [hadoop@hadoop102 ~]$ myhadoop.sh stop
                                                                                                                                    [hadoop@hadoop102 ~]$ jpsall
                                                                                                                                    

                                                                                                                                    9,时间同步

                                                                                                                                    ​如果服务器在公网环境(能连接外网),可以不采用集群时间同步,因为服务器会定期和公网时间进行校准;

                                                                                                                                    ​如果服务器在内网环境,必须要配置集群时间同步,否则时间久了,会产生时间偏差, 导致集群执行任务时间不同步。

                                                                                                                                    因为我没有配置,所以需要配置时间同步的童靴请自行搜索 Hadoop集群时间同步配置。

                                                                                                                                    四、安装ZooKeeper、HBase、MAVEN和IDEA

                                                                                                                                    ZooKeeper完全分布式部署

                                                                                                                                    1,解压安装

                                                                                                                                    1.1 解压 Zookeeper 安装包到/opt/module/目录下

                                                                                                                                    [hadoop@hadoop102 software]$ tar -zxvf zookeeper-3.4.10.tar.gz -C /opt/module/
                                                                                                                                    # 在/opt/module目录下修改ZK文件包名称
                                                                                                                                    [hadoop@hadoop102 software]$ cd /opt/module
                                                                                                                                    [hadoop@hadoop102 module]$ mv zookeeper-3.4.10 zookeeper
                                                                                                                                    [hadoop@hadoop102 module]$ ls
                                                                                                                                    hadoop jdk zookeeper
                                                                                                                                    # 修改其所属为hadoop用户
                                                                                                                                    [hadoop@hadoop102 module]$ sudo chown -R hadoop:hadoop zookeeper
                                                                                                                                    

                                                                                                                                    1.2 同步/opt/module/zookeeper 目录内容到 hadoop103、hadoop104

                                                                                                                                    [hadoop@hadoop102 module]$ xsync zookeeper/
                                                                                                                                    
                                                                                                                                    2,配置服务器编号

                                                                                                                                    2.1 在/opt/module/zookeeper/这个目录下创建 zkData

                                                                                                                                    [hadoop@hadoop102 zookeeper]$ mkdir zkData
                                                                                                                                    

                                                                                                                                    2.2 在/opt/module/zookeeper/zkData 目录下创建一个 myid 的文件

                                                                                                                                    [hadoop@hadoop102 zkData]$ touch myid
                                                                                                                                    

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

                                                                                                                                    2.3 编辑 myid 文件

                                                                                                                                    [hadoop@hadoop102 zkData]$ vim myid
                                                                                                                                    
                                                                                                                                    • 在文件中添加与 server 对应的编号:
                                                                                                                                      2
                                                                                                                                      

                                                                                                                                      2.4 拷贝配置好的 zookeeper 到其他机器上

                                                                                                                                      [hadoop@hadoop102 zkData]$ xsync myid
                                                                                                                                      
                                                                                                                                      • 并分别在 hadoop103、hadoop104 上修改 myid 文件中内容为 3、4
                                                                                                                                      • 注意:使用xsync分发文件会使目标服务器上的文件与本服务器文件完全一致。进行Hadoop完全分布式环境搭建的时候,如果分发的目录或文件中包含myid文件,一定记得修改目标服务器上的myid文件,否则可能导致zookeeper无法启动等问题。
                                                                                                                                        3,配置 zoo.cfg 文件

                                                                                                                                        3.1 重命名/opt/module/zookeeper/conf 这个目录下的 zoo_sample.cfg 为 zoo.cfg

                                                                                                                                        [hadoop@hadoop102 conf]$ mv zoo_sample.cfg zoo.cfg
                                                                                                                                        

                                                                                                                                        3.2 修改 zoo.cfg 文件

                                                                                                                                        [hadoop@hadoop102 conf]$ vim zoo.cfg
                                                                                                                                        
                                                                                                                                        • 修改数据存储路径配置:
                                                                                                                                          dataDir=/opt/module/zookeeper/zkData
                                                                                                                                          
                                                                                                                                          • 增加如下配置:
                                                                                                                                            #######################cluster##########################
                                                                                                                                            server.2=hadoop102:2888:3888
                                                                                                                                            server.3=hadoop103:2888:3888
                                                                                                                                            server.4=hadoop104:2888:3888
                                                                                                                                            
                                                                                                                                            • 配置参数解读
                                                                                                                                              server.A=B:C:D
                                                                                                                                              
                                                                                                                                              • A 是一个数字,表示这个是第几号服务器; 集群模式下配置一个文件 myid,这个文件在 dataDir 目录下,这个文件里面有一个数据就是A 的值,Zookeeper 启动时读取此文件,拿到里面的数据与 zoo.cfg 里面的配置信息 较从而判断到底是哪个 server;
                                                                                                                                              • B 是这个服务器的地址;
                                                                                                                                              • C 是这个服务器 Follower 与集群中的 Leader 服务器交换信息的端口;
                                                                                                                                              • D 是万一集群中的 Leader服务器挂了,需要一个端口来重新进行选举,选出一个新的 Leader,而这个端口就是用来执行选举时服务器相互通信的端口。

                                                                                                                                              3.3 同步 zoo.cfg 配置文件

                                                                                                                                              [hadoop@hadoop102 conf]$ xsync zoo.cfg
                                                                                                                                              

                                                                                                                                              3.4 删除hadoop103和hadoop104上的多余文件

                                                                                                                                              # hadoop103
                                                                                                                                              [hadoop@hadoop103 conf]$ pwd
                                                                                                                                              /opt/module/zookeeper/conf
                                                                                                                                              [hadoop@hadoop103 conf]$ rm -rf zoo_sample.cfg
                                                                                                                                              # hadoop104
                                                                                                                                              [hadoop@hadoop104 conf]$ rm -rf zoo_sample.cfg
                                                                                                                                              
                                                                                                                                              ☭问题5:启动ZooKeeper报错 mkdir: 无法创建目录".": 权限不够 ?

                                                                                                                                              注意:ZK有启动成功,只是在启动时返回这样一条报错信息,那么只需要把集群中的zoo_sample.cfg文件删除即可。

                                                                                                                                              ☭问题6:Zookeeper启动显示成功,zkServer.sh status报错?
                                                                                                                                              • 附:Zookeeper启动显示成功,zkServer.sh status报错
                                                                                                                                              • 补充一条:重新查看集群中各服务器的myid文件中的编号,是否与在zoo.cfg文件配置的服务器编号一致。
                                                                                                                                              4,集群操作

                                                                                                                                              4.1 将ZooKeeper目录所在路径添加到环境变量,方便全局调用命令

                                                                                                                                              [hadoop@hadoop102 conf]$ sudo vim /etc/profile.d/my_env.sh
                                                                                                                                              [hadoop@hadoop102 conf]$ source /etc/profile
                                                                                                                                              
                                                                                                                                              • 添加以下内容:
                                                                                                                                                #ZOOKEEPER_HOME
                                                                                                                                                export ZOOKEEPER_HOME=/opt/module/zookeeper
                                                                                                                                                export PATH=$PATH:$ZOOKEEPER_HOME/bin
                                                                                                                                                export PATH=$PATH:$ZOOKEEPER_HOME/sbin
                                                                                                                                                

                                                                                                                                                4.2 编写ZooKeeper启动脚本

                                                                                                                                                注意:集群中全部服务器上的Zookeeper均启动成功,才能正常运行

                                                                                                                                                [hadoop@hadoop102 conf]$ cd /home/hadoop/bin
                                                                                                                                                [hadoop@hadoop102 bin]$ vim myzk.sh
                                                                                                                                                
                                                                                                                                                • 编写myzk.sh脚本内容
                                                                                                                                                  #!/bin/bash
                                                                                                                                                  if [ $# -lt 1 ]
                                                                                                                                                  then
                                                                                                                                                   echo "No Args Input..."
                                                                                                                                                   exit ;
                                                                                                                                                  fi
                                                                                                                                                  case  in
                                                                                                                                                  "start")
                                                                                                                                                   echo " =================== 启动 zookeeper ==================="
                                                                                                                                                   echo " --------------- hadoop102 ---------------"
                                                                                                                                                   ssh hadoop102 "/opt/module/zookeeper/bin/zkServer.sh start"
                                                                                                                                                   echo " --------------- hadoop103 ---------------"
                                                                                                                                                   ssh hadoop103 "/opt/module/zookeeper/bin/zkServer.sh start"
                                                                                                                                                   echo " --------------- hadoop104 ---------------"
                                                                                                                                                   ssh hadoop104 "/opt/module/zookeeper/bin/zkServer.sh start"
                                                                                                                                                  ;;
                                                                                                                                                  "stop")
                                                                                                                                                   echo " =================== 关闭 zookeeper ==================="
                                                                                                                                                   echo " --------------- hadoop104 ---------------"
                                                                                                                                                   ssh hadoop104 "/opt/module/zookeeper/bin/zkServer.sh stop"
                                                                                                                                                   echo " --------------- hadoop103 ---------------"
                                                                                                                                                   ssh hadoop103 "/opt/module/zookeeper/bin/zkServer.sh stop"
                                                                                                                                                   echo " --------------- hadoop102 ---------------"
                                                                                                                                                   ssh hadoop102 "/opt/module/zookeeper/bin/zkServer.sh stop"
                                                                                                                                                  ;;
                                                                                                                                                  *)
                                                                                                                                                   echo "Input Args Error..."
                                                                                                                                                  ;;
                                                                                                                                                  esac
                                                                                                                                                  
                                                                                                                                                  • 保存后退出,然后赋予脚本执行权限
                                                                                                                                                    [hadoop@hadoop102 bin]$ chmod +x myzk.sh
                                                                                                                                                    

                                                                                                                                                    4.3 分发/home/hadoop/bin 目录,保证自定义脚本在三台机器上都可以使用

                                                                                                                                                    # 进入bin的上级目录/home/hadoop
                                                                                                                                                    [hadoop@hadoop102 bin]$ cd ..
                                                                                                                                                    # 先确保一下文件所属
                                                                                                                                                    [hadoop@hadoop102 ~]$ chown -R hadoop:hadoop bin
                                                                                                                                                    # 分发bin目录
                                                                                                                                                    [hadoop@hadoop102 ~]$ xsync bin/
                                                                                                                                                    

                                                                                                                                                    4.4 运行ZooKeeper

                                                                                                                                                    [hadoop@hadoop102 ~]$ myzk.sh start
                                                                                                                                                    

                                                                                                                                                    4.5 查看状态

                                                                                                                                                    [hadoop@hadoop102 zookeeper]$ zkServer.sh status
                                                                                                                                                    [hadoop@hadoop103 zookeeper]$ zkServer.sh status
                                                                                                                                                    [hadoop@hadoop104 zookeeper]$ zkServer.sh status
                                                                                                                                                    

                                                                                                                                                    HBase安装

                                                                                                                                                    1,Zookeeper 正常部署

                                                                                                                                                    首先保证 Zookeeper 集群的正常部署,并启动之

                                                                                                                                                    # 启动过就不要再启动了
                                                                                                                                                    [hadoop@hadoop102 zookeeper]$ myzk.sh start
                                                                                                                                                    
                                                                                                                                                    2,Hadoop 正常部署

                                                                                                                                                    Hadoop 集群的正常部署并启动

                                                                                                                                                    [hadoop@hadoop102 hadoop]$ myhadoop.sh start
                                                                                                                                                    
                                                                                                                                                    3,HBase 的解压

                                                                                                                                                    3.1 解压 HBase 到指定目录

                                                                                                                                                    [hadoop@hadoop102 software]$ tar -zxvf hbase-1.2.0-cdh5.14.0.tar.gz -C /opt/module
                                                                                                                                                    

                                                                                                                                                    3.2 修改文件包名称和所属

                                                                                                                                                    [hadoop@hadoop102 module]$ mv hbase* hbase
                                                                                                                                                    [hadoop@hadoop102 module]$ sudo chown -R hadoop:hadoop hbase
                                                                                                                                                    # 进入conf目录,之后需修改配置文件
                                                                                                                                                    [hadoop@hadoop102 module]$ cd hbase/conf
                                                                                                                                                    [hadoop@hadoop102 conf]$ 
                                                                                                                                                    
                                                                                                                                                    4,HBase 的配置文件

                                                                                                                                                    4.1 修改 hbase-env.sh

                                                                                                                                                    • 修改内容如下:分别在27和128行左右
                                                                                                                                                      export JAVA_HOME=/opt/module/jdk
                                                                                                                                                      export HBASE_MANAGES_ZK=false
                                                                                                                                                      
                                                                                                                                                      ☭问题7:HBase启动警告:Java HotSpot™ 64-Bit Server VM warning

                                                                                                                                                      警告内容:

                                                                                                                                                      Java HotSpot™ 64-Bit Server VM warning: ignoring option PermSize=128m; support was removed in 8.0

                                                                                                                                                      Java HotSpot™ 64-Bit Server VM warning: ignoring option MaxPermSize=128m; support was removed in 8.0

                                                                                                                                                      解决方案:

                                                                                                                                                      hbase-env.sh文件中45行左右有注释说明下面两个export在JDK8+版本可以被安全地移除,注释掉即可

                                                                                                                                                      【教程】Hadoop完全分布式环境搭建全过程,在这里插入图片描述,第40张

                                                                                                                                                      4.2 hbase-site.xml 修改内容

                                                                                                                                                      
                                                                                                                                                           
                                                                                                                                                              hbase.rootdir 
                                                                                                                                                              hdfs://hadoop102:8020/hbase 
                                                                                                                                                          
                                                                                                                                                           
                                                                                                                                                              hbase.cluster.distributed
                                                                                                                                                              true
                                                                                                                                                          
                                                                                                                                                          
                                                                                                                                                          
                                                                                                                                                              hbase.master.port
                                                                                                                                                              16000
                                                                                                                                                          
                                                                                                                                                          
                                                                                                                                                              hbase.zookeeper.quorum
                                                                                                                                                              hadoop102:2181,hadoop103:2181,hadoop104:2181
                                                                                                                                                          
                                                                                                                                                           
                                                                                                                                                              hbase.zookeeper.property.dataDir
                                                                                                                                                              /opt/module/zookeeper/zkData
                                                                                                                                                          
                                                                                                                                                      
                                                                                                                                                      

                                                                                                                                                      4.3 regionservers文件内容如下:原内容删去

                                                                                                                                                      regionservers文件列出了所有运行HRegionServer进程服务器,对该文件的配置与Hadoop中对slaves或者workers文件的配置相似,需要在文件的每一行指定一台服务器,当HBASE启动时会读取该文件,将文件指定的所有服务器启动HRegionServer进程,当HBASE停止的时候,也会同时停止他们。

                                                                                                                                                      因此,在启动hbase后,主服务器hadoop102将启动两个节点HMaster和HRegionServer,其余各服务器启动一个节点HRegionServer。

                                                                                                                                                      hadoop102
                                                                                                                                                      hadoop103
                                                                                                                                                      hadoop104
                                                                                                                                                      

                                                                                                                                                      4.4 软连接 hadoop 配置文件到 hbase:

                                                                                                                                                      [hadoop@hadoop102 module]$ ln -s /opt/module/hadoop/etc/hadoop/core-site.xml /opt/module/hbase/conf/core-site.xml
                                                                                                                                                      [hadoop@hadoop102 module]$ ln -s /opt/module/hadoop/etc/hadoop/hdfs-site.xml /opt/module/hbase/conf/hdfs-site.xml
                                                                                                                                                      
                                                                                                                                                      5,HBase 远程发送到其他集群
                                                                                                                                                      [hadoop@hadoop102 module]$ xsync hbase/
                                                                                                                                                      
                                                                                                                                                      6,HBase 服务的启动

                                                                                                                                                      6.1 添加环境变量

                                                                                                                                                      [hadoop@hadoop102 module]$ sudo vim /etc/profile.d/my_env.sh
                                                                                                                                                      [hadoop@hadoop102 module]$ source /etc/profile
                                                                                                                                                      
                                                                                                                                                      • 添加内容如下
                                                                                                                                                        #HBASE_HOME
                                                                                                                                                        export HBASE_HOME=/opt/module/hbase
                                                                                                                                                        export PATH=$PATH:$HBASE_HOME/bin
                                                                                                                                                        

                                                                                                                                                        6.2 分发环境变量文件

                                                                                                                                                        [hadoop@hadoop102 module]$ sudo /home/hadoop/bin/xsync /etc/profile.d/my_env.sh
                                                                                                                                                        # 使文件在各服务器上生效
                                                                                                                                                        [hadoop@hadoop103 module]$ source /etc/profile
                                                                                                                                                        [hadoop@hadoop104 module]$ source /etc/profile
                                                                                                                                                        

                                                                                                                                                        6.3 测试

                                                                                                                                                        [hadoop@hadoop102 module]$ start-hbase.sh
                                                                                                                                                        [hadoop@hadoop102 module]$ jpsall
                                                                                                                                                        [hadoop@hadoop102 module]$ hbase shell
                                                                                                                                                        

                                                                                                                                                        【教程】Hadoop完全分布式环境搭建全过程,在这里插入图片描述,第41张

                                                                                                                                                        ☭问题8:HBase启动报错 错误:找不到或无法加载主类 org.jruby.Main

                                                                                                                                                        这里提供一个特别zz的解决方案:

                                                                                                                                                        我在后续把IDEA的目录添加到环境变量中时,因为错把$IDEA_HOME写成$HBASE_HOME(复制粘贴的锅),导致环境变量中$HBASE_HOME被IDEA的目录所覆盖,因此出现如上报错。

                                                                                                                                                        所以可以先仔细检查环境变量文件,我当时就是没有全部看一遍,导致困扰许久。

                                                                                                                                                        6.4 关闭集群顺序

                                                                                                                                                        [hadoop@hadoop102 module]$ stop-hbase.sh
                                                                                                                                                        [hadoop@hadoop102 module]$ myhadoop.sh stop
                                                                                                                                                        [hadoop@hadoop102 module]$ myzk.sh stop
                                                                                                                                                        # 查看各服务器上的进程,正常关闭后,各服务器上均只剩下一个进程jps
                                                                                                                                                        [hadoop@hadoop102 module]$ jpsall
                                                                                                                                                        

                                                                                                                                                        安装MAVEN & IDEA

                                                                                                                                                        1,解压安装
                                                                                                                                                        # 解压安装
                                                                                                                                                        ## MAVEN
                                                                                                                                                        [hadoop@hadoop102 software]$ tar -zxvf apache-maven-3.6.3-bin.tar.gz -C /opt/module
                                                                                                                                                        ## IDEA
                                                                                                                                                        [hadoop@hadoop102 software]$ tar -zxvf ideaIU-2017.2.7.tar.gz -C /opt/module
                                                                                                                                                        # 修改目录名和所属
                                                                                                                                                        [hadoop@hadoop102 module]$ mv apache* maven
                                                                                                                                                        [hadoop@hadoop102 module]$ mv idea* idea
                                                                                                                                                        [hadoop@hadoop102 module]$ sudo chown -R hadoop:hadoop maven idea
                                                                                                                                                        [hadoop@hadoop102 module]$ ll
                                                                                                                                                        
                                                                                                                                                        2,设置环境变量
                                                                                                                                                        [hadoop@hadoop102 module]$ sudo vim /etc/profile.d/my_env.sh
                                                                                                                                                        [hadoop@hadoop102 module]$ source /etc/profile
                                                                                                                                                        
                                                                                                                                                        • 添加下列内容
                                                                                                                                                          #MAVEN_HOME
                                                                                                                                                          export MAVEN_HOME=/opt/module/maven
                                                                                                                                                          export PATH=$PATH:$MAVEN_HOME/bin
                                                                                                                                                          #IDEA_HOME
                                                                                                                                                          export IDEA_HOME=/opt/module/idea
                                                                                                                                                          export PATH=$PATH:$IDEA_HOME/bin
                                                                                                                                                          
                                                                                                                                                          3,测试 MAVEN
                                                                                                                                                          # 输入名令 mvn -v 可以查看版本号
                                                                                                                                                          [hadoop@hadoop102 module]$ mvn -v
                                                                                                                                                          
                                                                                                                                                          4,修改MAVEN配置文件,使用阿里的镜像地址
                                                                                                                                                          [hadoop@hadoop102 conf]$ pwd
                                                                                                                                                          /opt/module/maven/conf
                                                                                                                                                          [hadoop@hadoop102 conf]$ vim settings.xml
                                                                                                                                                          
                                                                                                                                                          • 找到mirrors标签,插入
                                                                                                                                                            id=alimaven
                                                                                                                                                            name=aliyun maven
                                                                                                                                                            url=http://maven.aliyun.com/nexus/content/groups/public/
                                                                                                                                                            mirrorOf=central
                                                                                                                                                            
                                                                                                                                                            • 修改前:

                                                                                                                                                              【教程】Hadoop完全分布式环境搭建全过程,在这里插入图片描述,第42张

                                                                                                                                                            • 修改后:

                                                                                                                                                              【教程】Hadoop完全分布式环境搭建全过程,在这里插入图片描述,第43张

                                                                                                                                                              5,运行IDEA
                                                                                                                                                              [hadoop@hadoop102 conf]$ idea.sh
                                                                                                                                                              

                                                                                                                                                              参考资料

                                                                                                                                                              教程相关

                                                                                                                                                              【1】尚硅谷大数据技术之 Hadoop(入门)

                                                                                                                                                              【2】hadoop3.x集群:配置、启动历史服务(history server,端口19888)

                                                                                                                                                              【3】【尚硅谷】大数据全套教程下载

                                                                                                                                                              【4】centos7安装IDEA配置Maven

                                                                                                                                                              【5】如何重新格式化Hadoop文件系统

                                                                                                                                                              【6】同一个局域网内如何共享文件夹(含共享打印机操作方法)

                                                                                                                                                              【7】在本地用idea连接虚拟机上的hbase集群

                                                                                                                                                              报错相关

                                                                                                                                                              【1】Hbase启动警告

                                                                                                                                                              【2】linux 终端启动图形化程序界面时报错:No protocol specified

                                                                                                                                                              【3】stop-hbase.sh一直处于等待状态

                                                                                                                                                              知识相关

                                                                                                                                                              【1】【hadoop 的坑】hadoop的配置文件slaves/workers

                                                                                                                                                              【2】Hadoop配置文件详解

                                                                                                                                                              【3】Zookeeper学习笔记

                                                                                                                                                              【4】Hbase的集群模式安装配置(笔记)

                                                                                                                                                              【5】maven-porm.xml详解

                                                                                                                                                              【6】hadoop3.x——历史服务器

                                                                                                                                                              【7】UUID详细介绍

                                                                                                                                                              实战项目

                                                                                                                                                              【1】HBase快速入门系列 (九)| HBase 的实战案例(微博)

                                                                                                                                                              资源分享

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

                                                                                                                                                              提取码:MNZX


                                                                                                                                                              以上过程希望对你有所帮助!
                                                                                                                                                              欢迎评论区交流指教!

网友评论

搜索
最新文章
热门文章
热门标签