centos9 stream配置hadoop集群

1 虚拟机安装centos9 stream(略)

2 虚拟机配置静态ip(略)

​ 参考:https://blog.csdn.net/m0_62943934/article/details/144168667

https://blog.csdn.net/weixin_45784337/article/details/130871716

3 前置软件包安装

  1. epel-next-release安装

     `vim /etc/yum.repos.d/epel.repo`
    
    在文件中粘贴内容如下:
    
    `[epel]`
    `name=Extra Packages for Enterprise Linux $releasever - $basearch`
    `baseurl=https://mirrors.aliyun.com/epel/$releasever/Everything/$basearch`
    `enabled=1`
    `gpgcheck=1`
    `gpgkey=https://mirrors.aliyun.com/epel/RPM-GPG-KEY-EPEL-9`
    
    接着执行以下命令
    
    `dnf clean all`
    
    `dnf makecache`
    
    ` dnf install epel-release epel-next-release`
    
  2. 安装其它基础软件包

    `dnf install openssl-devel lrzsz chrony rsync  net-tools psmisc nc  libzstd`
    
    启动chronyd
    
    `systemctl start chronyd`
    
    `systemctl enable chronyd`
    
    查看状态
    
    `chronyc sources -v`
    
  3. 修改主机名,添加主机映射

    [root@CentOS9-01 ~]# hostnamectl --static set-hostname hadoop2429
    [root@CentOS9-01 ~]# vim /etc/hosts
    
    添加内容,根据自己配置的虚拟机ip来,windows宿主机系统的hosts文件一样添加以下内容
    192.168.242.9 hadoop2429
    192.168.242.8 hadoop2428
    
    192.168.242.7 hadoop2427
    
    
  4. 创建普通用户

    useradd your_user_name(如我的juno)
    passwd your_user_name设置密码
    reboot重启虚拟机
    visudo
    

    在root的一行下,添加你创建的用户具有root权限
    在这里插入图片描述

  5. 在/opt目录下创建用于存放安装包和安装软件的文件夹

    mkdir /opt/module
    mkdir /opt/software
    修改文件夹的所有者
    chown juno:juno /opt/module /opt/software
    

    修改后ll查看两个文件夹的拥有者和所属组为juno

    在这里插入图片描述

  6. 关闭防火墙

    [root@CentOS9-01 ~]# systemctl stop firewalld
    [root@CentOS9-01 ~]# systemctl disable firewalld
    
  7. 关闭虚拟机

  8. 给当前虚拟机拍摄快照

    VM中右键虚拟机名称–>快照–>拍摄快照

    然后快照–>快照管理,查看选中快照

    在这里插入图片描述

  9. 克隆虚拟机

    在这里插入图片描述

    在这里插入图片描述

  10. 修改克隆虚拟机主机名和ip

    在这里插入图片描述

    在这里插入图片描述

    开启克隆的虚拟机,我的叫hadoop2428, 2427
    hostnamectl --static set-hostname your_hostname#根据自己之前的host来
    cd /etc/NetworkManager/system-connections
    ls查看自己的网络连接名称,如:我的Profile 1.nmconnection
    vim Profile 1.nmconnection打开该文件,修改其中的ip地址和网关,根据自己host文件中自己设置的来,我的需要将address1的192.168.242.9/24分别改成192.168.242.8/24和192.168.242.7/24
    修改完使生效:保存退出链接文件后执行nmcli con up 你的连接名称,如我的Profile 1
    ping www.baidu.com,如果能ping通则配置成功
    

4 hadoop安装配置

  1. 安装hadoop和jdk

    将hadoop和jdk的压缩包上传到之前创建的/opt/software文件夹(我用的xftp)

    在这里插入图片描述

    然后解压到/opt/module下

    tar -zxvf jdk-8u202-linux-x64.tar.gz -C /opt/module/
    tar -zxvf hadoop-3.4.2.tar.gz -C /opt/module/
    

    在这里插入图片描述

    配置环境变量

    /etc/profile.d/my_env.sh
    添加如下内容(自己的hadoop和jdk实际安装路径)
    

    在这里插入图片描述

    :wq保存退出

    java -version检查jdk是否安装成功

    hadoop version

    hadoop checknative

    在这里插入图片描述

    显示openssl组件false,但此时hadoop核心功能已安装,可使用,下面两个模块更加不紧要,如果涉及数据透明加密需要openssl,所以这里解决一下

  2. 降低openssl版本

    上图EVP_CIPHER_CTX block_size说明版本不兼容,查阅资料显示hadoop3一般用openssl1.1.1以上就行,由于centos9系统默认为openssl3,所以从github下载编译源码安装

    wget https://github.com/openssl/openssl/releases/download/OpenSSL_1_1_1w/openssl-1.1.1w.tar.gz#下载
    tar -zxvf openssl-1.1.1w.tar.gz#解压
    cd openssl-1.1.1w进入解压文件夹
    ./config --prefix=/usr/local/openssl-1.1.1w --openssldir=/usr/local/openssl-1.1.1w#配置
    

    在这里插入图片描述

    显示缺乏FindBin,解决:

    sudo yum/dnf install perl perl-FindBin
    perl -e 'use FindBin; print "FindBin module is available\n"'
    ./config --prefix=/usr/local/openssl-1.1.1w --openssldir=/usr/local/openssl-1.1.1w#再次配置
    make#编译
    sudo make install#安装
    echo 'export PATH=/usr/local/openssl-1.1.1w/bin:$PATH' >> ~/.bashrc
    echo 'export LD_LIBRARY_PATH=/usr/local/openssl-1.1.1w/lib:$LD_LIBRARY_PATH' >> ~/.bashrc#配置环境变量
    source ~/.bashrc#使生效
    /usr/local/openssl-1.1.1w/bin/openssl version#验证是否安成功
    

    再次执行hadoop checknative报错:无法加载libcrypto.so动态链接库

    在这里插入图片描述

    ls -l /usr/local/openssl-1.1.1w/lib/#查看实际安装路径,发现有libcrypto.so动态链接库
    

    在这里插入图片描述

    配置动态链接库路径

    cd /etc/ld.so.conf.d#进入/etc/ld.so.conf.d文件夹
    echo "/usr/local/openssl-1.1.1w/lib" | sudo tee /etc/ld.so.conf.d/openssl-1.1.1w.conf#写入配置文件
    sudo ldconfig#更新动态链接库
    

    在这里插入图片描述

  3. 配置免密登陆(用于集群间免密共享文件)

    home目录下执行

    ssh-keygen -t rsa#生成秘钥对
    

    3次直接回车,不要密码

    cd .ssh
    ll#查看密钥对
    

    在这里插入图片描述

    公钥发给需共享文件的计算机

    ssh-copy-id hadoop2429
    ssh-copy-id hadoop2428
    ssh-copy-id hadoop2427
    

    创建xsync脚本文件(基于前置安装的rsync,用于在多台服务器间同步文件或目录的便捷脚本)

    sudo vim /usr/local/bin/xsync
    在文件中输入如下内容:
    #!/bin/bash
    
    # 检查参数个数
    if [ $# -lt 1 ]
    then
        echo "没有输入参数!"
        exit
    fi
    
    # 获取文件名称
    fname=$(basename $1)
    echo "文件名:$fname"
    
    # 获取上级目录的绝对路径
    pdir=$(cd -P $(dirname $1); pwd)
    echo "文件路径:$pdir"
    
    # 获取当前用户
    user=$(whoami)
    
    # 循环同步到各主机(根据你的实际主机名修改)
    for host in hadoop2429 hadoop2428 hadoop2427
    do
        echo "===================== $host ====================="
        rsync -rvl $pdir/$fname $user@$host:$pdir
    done
    
    

    :wq保存退出。

    设置执行权限

    sudo chmod +x /usr/local/bin/xsync
    

    使用xsync命令同步.ssh文件夹

    xsync .ssh
    

    在这里插入图片描述

    至此,普通用户就可以免密共享文件到其它节点了

  4. 配置集群并快速分发到所有节点

    通常,正常的集群需要6台机器,NN(Name Node)一台,2NN(secondary namenode)一台,RM(resource manager)一台,3台DN+NM(每台作为Data Node机器上必须有一个Node Manager),当前用于学习的环境由于资源有限,只有三台虚拟机,于是NN, 2NN, RM分别与一个DN+NM装在一台虚拟机上。

    1. 将hadoop和jdk以及环境变量配置文件共享到所有虚拟机上:

      cd /opt/module#进入hadoop和jdk安装路径
      xsync jdk1.8.0_202/
      xsync hadoop-3.4.2
      sudo xsync /etc/profile.d/my_env.sh 
      
    2. 验证

      在这里插入图片描述

      在这里插入图片描述

      在这里插入图片描述

      回车,会发现另外两台虚拟机也执行了一样的命令,然后在同样的位置执行hadoop version.都执行无误说明所有节点已安装好hadoop必要环境。

    3. 进入hadoop文件夹修改相关配置文件

      在这里插入图片描述

      在这里插入图片描述

      core-site.xml

      <configuration>
              <property>
                      <name>fs.defaultFS</name>
                      <value>hdfs://hadoop2429:8020</value>
              </property>#namenode的默认地址
              <property>
                      <name>hadoop.data.dir</name>
                      <value>/opt/module/hadoop-3.4.2/data</value>
              </property>#数据存放路径
              <property>
                      <name>hadoop.proxyuser.juno.hosts</name>
                      <value>*</value>
              </property>
              <property>
                      <name>hadoop.proxyuser.juno.hosts</name>
                      <value>*</value>
              </property>#后俩都是为了兼容hive的配置
      
      </configuration>
      

      hdfs-site.xml

      <configuration>
      	<property>
                      <name>dfs.namenode.name.dir</name>
      		<value>file://${hadoop.data.dir}/name</value>
      	</property>
      	<!--namenode在本地文件系统上永久存储命名空间和事务日志的路径-->
      	<property>
                      <name>dfs.datanode.data.dir</name>
                      <value>file://${hadoop.data.dir}/data</value>
      	</property>
      	<!--datanode在本地文件系统的数据块存储路径,逗号分隔-->
      	<property>
                      <name>dfs.namenode.checkpoint.dir</name>
                      <value>file://${hadoop.data.dir}/namesecondary</value>
      	</property>
      	<!--secondary namenode的数据存储路径-->
      	<property>
                      <name>dfs.client.datanode-restart.timeout</name>
                      <value>30</value>
      	</property>
      	<!--hive兼容配置-->
      	<property>
                      <name>dfs.namenode.secondary.http-address</name>
                      <value>hadoop2427:9368</value>
      	</property>
      	<!--2NN的地址-->
      
      </configuration>
      

      yarn-site.xml

      <configuration>
              <property>
                      <name>yarn.nodemanager.aux-services</name>
                      <value>mapreduce_shuffle</value>
              </property>
              <property>
                      <name>yarn.resourcemanager.hostname</name>
                      <value>hadoop2428</value>
              </property>
              <property>
                      <name>yarn.nodemanager.env-whitelist</name>
                      <value>JAVA_HOME,HADOOP_COMMON_HOME,HADOOP_HDFS_HOME,HADOOP_CONF_DIR,CLASSPATH_PREPEND_DISTCACHE,HADOOP_YARN_HOME,HADOOP_HOME,PATH,LANG,TZ,HADOOP_MAPRED_HOME</value>
              </property>
      </configuration>
      

      mapred-site.xml

      <configuration>
      	<property>
                      <name>mapreduce.framework.name</name>
      		<value>yarn</value>
      	</property>
      </configuration>
      

      workers

      hadoop2429
      hadoop2428
      hadoop2427
      
    4. 在集群上分发配置好的hadoop配置文件

      xsync /opt/module/hadoop-3.4.2/etc/hadoop
      
    5. 集群启动

      hdfs namenode -format#格式化hdfs,第一次启动前必须
      start-dfs.sh#启动集群,NN,2NN,DN启动
      

      在这里插入图片描述

      在Resource Manager所在机器(hadoop2428)上执行

      start-yarn.sh#RM,NN启动
      

      在这里插入图片描述

      回到主节点(hadoop2429)群发命令:jps

      在这里插入图片描述

      在这里插入图片描述

      在这里插入图片描述

      发现如预期hadoop2429上有NN,DN,NM;hadoop2428上RM,DN,NM;hadoop2427上2NN,DN,NM

    6. 配置历史服务器(MapReduce的已完成作业历史信息)

      更改配置文件前关闭集群
      stop-dfs.sh(hadoop2429)
      stop-yarn.sh(hadoop2428)
      打开配置文件
      sudo vim mapred-site.xml
      添加内容
      <property>
                      <name>mapreduce.jobhistory.address</name>
                      <value>hadoop2429:10020</value>
              </property>
              <property>
                      <name>mapreduce.jobhistory.webapp.address</name>
                      <value>hadoop2429:19888</value>
              </property>
      

      xsync mapred-site.xml

    7. 配置日志聚集

      sudo vim yarn-site.xml
      添加内容
      <property>
                      <name>yarn.log-aggregation-enable</name>
                      <value>true</value>
              </property>
              <property>
                      <name>yarn.log-aggregation.retain-seconds</name>
                      <value>604800</value>
              </property>
              <property>
                      <name>yarn.log.server.url</name>
                      <value>http://hadoop2429:19888/jobhistory/logs</value>
              </property>
      

      xsync yarn-site.xml

    8. 测试

      再次启动集群

      start-dfs.sh
      

      启动历史服务器

      mapred --daemon start historyserver
      

      查看Java进程

      jps
      

      在这里插入图片描述

      浏览器中输入http://192.168.242.9:9870/ (NN)的ip:端口可以打开hdfs页

      在这里插入图片描述

      http://192.168.242.8:8088/ (RM)的ip:端口打开yarn页面,需要先启动yarn才能连上

      在这里插入图片描述

    9. 配置时间同步服务

      群发命令启用并关闭服务

      sudo systemctl enable chronyd
      sudo systemctl stop chronyd
      systemctl status chronyd//查看
      

      在这里插入图片描述

      master节点(NN)

      sudo vim /etc/chrony.conf
      

      在这里插入图片描述

      重启时间同步服务

      sudo systemctl restart chronyd
      

      slave节点(hadoop2428 hadoop2427)

      在这里插入图片描述
      重启时间同步服务

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值