• 两台实体机器4个虚拟机节点的Hadoop集群搭建(Ubuntu版)


    安装Ubuntu

    Linux元信息

    1. 两台机器,每台机器两台Ubuntu
    2. Ubuntu版本:ubuntu-22.04.3-desktop-amd64.iso
    3. 处理器数量2,每个处理器的核心数量2,总处理器核心数量4
    4. 单个虚拟机内存8192MB(8G),最大磁盘大小30G

    参考链接

    1. 清华大学开源软件镜像站

      https://mirrors.tuna.tsinghua.edu.cn/ubuntu-releases/22.04/

    2. 虚拟机(VMware)安装Linux(Ubuntu)安装教程

      https://blog.csdn.net/qq_39657434/article/details/112252844

    具体步骤

    1. 把下载好的iso文件保存到一个位置

    2. 开始在VMware安装Ubuntu

    3. 选择网络类型(图片错了,应该是“桥接网络”,详见“配置虚拟机网络”)

    4. 指定磁盘容量

    5. 设置镜像文件

    6. 开始安装Ubuntu

    配置虚拟机网络

    配置桥接模式

    1. 查看宿主机WLAN硬件配置信息

    2. 打开VMware中的虚拟网络编辑器,根据宿主机WLAN硬件配置如下信息

    设置虚拟机静态IP

    ​ 防止每次开机随机IP,导致无法连接到其他虚拟机

    1. 切换root用户(第一次切换root用户需要配置root密码)

      sudo passwd
      
    2. 打开01-network-manager-all.yaml文件(网卡配置文件)

      vim /etc/netplan/01-network-manager-all.yaml
      
    3. 删除原内容,复制粘贴如下信息(根据实际情况更改)

      # Let NetworkManager manage all devices on this system
      network:
        ethernets:
          ens33:
            dhcp4: false
            addresses: [192.168.139.101/24]
            routes:
              - to: default
                via: 192.168.139.92
            nameservers:
              addresses: [8.8.8.8]
        version: 2
      
    4. 在宿主机的cmd中运行ipconfig命令查看网络信息,如下图所示:

    5. 根据第四步更改第三步的部分信息

      • via:宿主机的默认网关
      • addresses:前三位和宿主机默认网关保持一致,后一位自己随便设置(但要避免和已有ip重复)

    安装Hadoop

    Hadoop元信息

    1. 统一用户名:hjm,密码:000000

    2. 四台虚拟机分别为gyt1,gyt2,hjm1,hjm2

    3. 四台虚拟机用桥接模式,连接一台手机的热点,虚拟机ip如下:

      hjm1:192.168.139.101

      hjm2:192.168.139.102

      gyt1:192.168.139.103

      gyt2:192.168.139.104

    4. 集群部署规划

      hjm1 hjm2 gyt1 gyt2
      HDFS NameNode、DataNode DataNode SecondaryNameNode、DataNode DataNode
      YARN NodeManager NodeManager NodeManager ResourceManager、NodeManager

    配置用户sudo权限

    ​ 配置以后,每次使用sudo,无需输入密码

    1. 用sudo权限打开sudoers文件

      sudo vim /etc/sudoers
      
    2. 增加修改sudoers文件,在%sudo下面新加一行(这里以hjm用户为例)

      # Allow members of group sudo to execute any command
      %sudo   ALL=(ALL:ALL) ALL
      
      hjm ALL=(ALL) NOPASSWD: ALL
      

    创建目录并更改权限

    1. 创建module和software文件夹

      sudo mkdir /opt/module
      sudo mkdir /opt/software
      
    2. 修改 module、software 文件夹的所有者和所属组均为hjm用户

      sudo chown hjm:hjm /opt/module
      sudo chown hjm:hjm /opt/software
      

    Ubuntu查看、安装和开启ssh服务

    1. 查看ssh服务的开启状态,如果开启,则可以跳过这一部分

      ps -e|grep ssh
      
    2. 安装ssh服务

      sudo apt-get install openssh-server
      
    3. 启动ssh服务

      sudo /etc/init.d/ssh start
      

    ​ 注意:

    ​ 当你用ssh软件(这里默认是Xhell 7)连接时,不要用root用户连,ssh默认 不能用root直接连,除非修改配置文件

    安装JDK

    1. 用xftp工具将jdk导入到opt目录下面的software文件夹下面

    2. 解压jdk到opt/module目录下

      tar -zxvf jdk-8u212-linux-x64.tar.gz -C /opt/module/
      
    3. 配置jdk环境变量

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

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

      (2)添加以下内容

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

      (3)保存后退出,source 一下/etc/profile 文件,让新的环境变量 PATH 生效

      source /etc/profile
      

      (4)测试jdk是否安装成功

      java -version
      

    安装Hadoop

    1. 用xftp工具将hadoop导入到opt目录下面的software文件夹下面

    2. 解压hadoop到opt/module目录下

      tar -zxvf hadoop-3.1.3.tar.gz -C /opt/module/
      
    3. 配置hadoop环境变量

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

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

      (2)在 my_env.sh 文件末尾添加如下内容

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

      (3)保存后退出,source 一下/etc/profile 文件,让新的环境变量 PATH 生效

      source /etc/profile
      

      (4)测试hadoop是否安装成功

      hadoop version
      

    修改配置文件

    ​ cd到$HADOOP_HOME/etc/hadoop目录

    core-site.xml

    
     
     
     fs.defaultFS
     hdfs://hjm1:8020
     
     
     
     hadoop.tmp.dir
     /opt/module/hadoop-3.1.3/data
     
     
     
     hadoop.http.staticuser.user
     hjm
     
    
    

    hdfs-site.xml

    
    
    
     dfs.namenode.http-address
     hjm1:9870
     
    
     
     dfs.namenode.secondary.http-address
     gyt1:9868
     
    
    

    yarn-site.xml

    
     
     
     yarn.nodemanager.aux-services
     mapreduce_shuffle
     
     
     
     yarn.resourcemanager.hostname
     gyt2
     
     
     
     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
     
    
    

    mapred-site.xml

    
    
     
     mapreduce.framework.name
     yarn
     
    
    

    workers

    hjm1
    hjm2
    gyt1
    gyt2
    

    克隆虚拟机

    1. 在hjm1和gyt1的两台宿主机上分别克隆出hjm2和gyt2

    2. 按照“配置虚拟机网络-设置虚拟机静态IP”的方式,配置hjm2的ip为192.168.139.102,gyt2的ip为192.168.139.104

    3. 改每台虚拟机的ubuntu映射文件,这里以gyt2为例

      127.0.0.1       localhost
      # 127.0.1.1       gyt2 记得删除这一行
      192.168.139.101 hjm1
      192.168.139.102 hjm2
      192.168.139.103 gyt1
      192.168.139.104 gyt2
      
    4. 修改四台虚拟机的主机名分别为hjm1,hjm2,gyty1,gyt2

      sudo vim /etc/hostname
      
    5. 重启虚拟机

    ssh免密登录

    1. 分别要配置16种免密登录,如下图所示

    1. 切换hjm用户,cd到~/.ssh,生成公钥和私钥

      ssh-keygen -t rsa
      
    2. 将公钥复制到目的机上,这里以hjm1举例

      ssh-copy-id hjm1
      

    xsync集群分发脚本

    1. 在/home/hjm/bin目录下创建xsync文件

    2. 在该文件中编写如下代码

      #!/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
      
    3. 修改脚本xsync具有执行权限

      chmod +x xsync
      
    4. 测试脚本

      xsync /home/atguigu/bin
      
    5. 将脚本复制到/bin中,以便全局调用

      sudo cp xsync /bin/
      
    6. 在客户端电脑(默认windows)配置映射

      (1)windows + R

      (2)输入drivers,回车

      (3)进入etc文件夹

      (4)编辑hosts文件

      192.168.139.101 hjm1
      192.168.139.102 hjm2
      192.168.139.103 gyt1
      192.168.139.104 gyt2
      

    测试hadoop

    1. 格式化NameNode

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

      hdfs namenode -format
      
    2. 在hjm1上启动hdfs

      sbin/start-dfs.sh
      
    3. 在gyt2上启动yarn

      sbin/start-yarn.sh
      
    4. Web 端查看 HDFS 的 NameNode

      http://hjm1:9870

    5. Web 端查看 YARN 的 ResourceManager

      http://gyt2:8088

    6. 测试结果

      (1)datanode

      (2)Yarn

      (3)WordCount

    报错及解决

    1. https://blog.csdn.net/sinat_23225111/article/details/127497281
  • 相关阅读:
    【Mysql】 InnoDB引擎深入- 内存结构之Buffer Pool缓冲池
    python3.9 处理excel来实现类似excel中的vlookup功能
    装了我这 10 个 IDEA 神级插件后,同事也开始情不自禁的嘚瑟了
    使用socket对http站点的访问
    格密码学: LWE\SIS for PKE\SIG\FHE
    VALID/READY 握手机制
    谷歌独立站推广:提升网站知名度的利器,掌控自身命运的绝佳选择
    sqlcoder实践
    Java_接口
    高压MOS管1000V/2A 可代替IXFP4N100 数据表(PDF)
  • 原文地址:https://www.cnblogs.com/ggyt/p/17781118.html