虚拟机搭建Hadoop集群环境-CentOS篇

本文详细介绍了如何在Linux环境下搭建虚拟机集群,包括克隆虚拟机、修改IP和主机名、创建用户、配置SSH无密钥登录等步骤。接着,文章讲解了JDK和Hadoop的安装过程,以及关闭防火墙、配置Hadoop环境变量等操作,确保集群间能够正常通信。最后,通过编写脚本实现了文件在集群中的分发,并进行了时间同步设置。
摘要由CSDN通过智能技术生成

Linux环境安装

具体步骤参考博客

虚拟机环境准备

虚拟机克隆

在前一步骤中准备好安装了CentOS 7 的虚拟机,克隆一个虚拟机出来,过程如下图:

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

修改虚拟机IP

  • 克隆完成后,启动bigdata-101虚拟机,使用root用户登录,修改虚拟机的IP地址

    在这里插入图片描述

    • 编辑/etc/sysconfig/network-scripts/ifcfg-ens33文件,修改成如下内容:

      vim /etc/sysconfig/network-scripts/ifcfg-ens33
      # 修改内容如下
      TYPE=Ethernet
      BOOTPROTO=static # 设置静态IP
      NAME=ens33
      DEVICE=ens33
      ONBOOT=yes
      IPADDR=192.168.1.101 # 自定义IP地址
      PREFIX=24
      GATEWAY=192.168.1.2
      DNS1=192.168.1.2
      

在这里插入图片描述
在这里插入图片描述

  • 设置虚拟机虚拟网络编辑器,编辑->虚拟网络编辑器->VMnet8->更改配置:

在这里插入图片描述
在这里插入图片描述

将子网IP按下图调整,最后点击 NAT 设置:



![在这里插入图片描述](https://img-blog.csdnimg.cn/20210222181122128.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3UwMTIwNzUzODM=,size_16,color_FFFFFF,t_70)

在这里插入图片描述

  • 设置VMnet8 属性,保证默认网关、首先DNS服务器和Linux环境配置一致

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

修改主机名

  • 查看当前主机名

    hostname
    

在这里插入图片描述

  • 执行vim /etc/sysconfig/network,输入以下内容:

    HOSTNAME=bigdata101
    

在这里插入图片描述

  • 执行 vim /etc/hosts,加入以下内容:

    192.168.1.101 bigdata101
    192.168.1.102 bigdata102
    192.168.1.103 bigdata103
    

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

创建普通用户

  • 创建一个普通用户用于日常操作,用户名为bigdata,为方便学习记忆,密码也可设置为bigdata

    # 添加用户
    useradd bigdata
    # 设置密码
    passwd bigdata
    

在这里插入图片描述

  • 给新添加的 hadoop用户配置 root 权限:

    # 添加写入模式
    chmod u+w /etc/sudoers
    # 在 root ALL=(ALL)	ALL 下添加一行内容
    bigdata ALL=(ALL)        NOPASSWD: ALL
    # 重新将文件设置为只读
    chmod u-w /etc/sudoers
    

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

重启虚拟机

  • 为使配置生效,重启虚拟机:

    reboot
    
  • 使用bigdata用户登录:

    在这里插入图片描述

  • 验证虚拟机IP及主机名:

    # 查看当前主机IP
    ifconfig
    # 查看主机名
    hostname
    

在这里插入图片描述

使用Xshell远程访问

在 VMware 上直接操作 Linux 用户体验不友好,故使用 Xshell来远程访问虚拟机。

  • 修改Windows 主机映射文件(Win10 系统文件路径:C:\Windows\System32\drivers\etc)hosts,添加如下内容:
192.168.1.101 bigdata101
192.168.1.102 bigdata102
192.168.1.103 bigdata103

在这里插入图片描述
在这里插入图片描述

  • 使用Xshell新建会话,输入相关内容:

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

集群搭建

安装 JDK

  • bigdata101虚拟机上创建目录,并调整目录所属用户及组

    sudo mkdir /opt/module /opt/software 
    

    在这里插入图片描述
    在这里插入图片描述

  • 使用Xftp上传JDK安装包并解压

    在这里插入图片描述
    在这里插入图片描述

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

在这里插入图片描述
在这里插入图片描述

  • 配置环境变量,验证是否安装成功

    sudo touch /etc/profile.d/my_env.sh
    sudo vi /etc/profile.d/my_env.sh
    # 在my_env.sh输入以下内容后,保存退出
    export JAVA_HOME=/opt/module/jdk1.8.0_212
    export PATH=$PATH:$JAVA_HOME/bin
    

    在这里插入图片描述

    如图所示,打印出Java版本信息后即表明安装成功。

安装 Hadoop

  • hadoop安装包上传至 /opt/software目录 ;

  • 解压安装

    cd /opt/software
    tar -zxvf hadoop-2.7.2.tar.gz -C /opt/module/
    

    在这里插入图片描述

  • 配置环境变量

    sudo vim /etc/profile.d/my_env.sh
    # 输入以下内容并保存退出
    #HADOOP_HOME
    export HADOOP_HOME=/opt/module/hadoop-2.7.2
    export PATH=$PATH:$HADOOP_HOME/bin
    export PATH=$PATH:$HADOOP_HOME/sbin
    
  • 刷新环境变量,验证是否安装成功

    source /etc/profile.d/my_env.sh
    hadoop version
    

在这里插入图片描述

关闭防火墙

  • 查看防火墙状态

    systemctl status firewalld.service
    

    在这里插入图片描述

  • 关闭防火墙

    sudo systemctl stop firewalld.service
    

    在这里插入图片描述

  • 永久关闭防火墙

    sudo systemctl disable firewalld.service
    

在这里插入图片描述

其它节点虚拟机克隆

  • bigdata-101为模板,克隆两个虚拟机,命名为bigdata-102,bigdata-103(克隆前需要将bigdata-101进行关机操作)

  • 修改对应节点虚拟机IP及主机名

    bigdata-102 IP 修改为:192.168.1.102,主机名修改为:bigdata102

    bigdata-103 IP 修改为:192.168.1.103,主机名修改为:bigdata103

  • 启动三台虚拟机

配置 SSH 无密钥登录

  • 生成公钥和私钥

    # 执行后连敲三下空格
    ssh-keygen -t rsa
    

在这里插入图片描述

  • 分发公钥

    ssh-copy-id bigdata101
    ssh-copy-id bigdata102
    ssh-copy-id bigdata103
    

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

  • 切换到其它虚拟机分别执行生成公钥和私钥、分发公钥操作

  • 切换root用户,对三台虚拟机分别执行生成公钥和私钥、分发公钥操作

  • 验证 SSH 无密钥登录

    ssh bigdata101
    ssh bigdata102
    ssh bigdata103
    

    在这里插入图片描述

编写文件集群分发脚本

  • 在三台虚拟机上分别安装 rsync 服务

    sudo yum install -y rsync
    

在这里插入图片描述

  • 创建/home/bigdata/bin目录

    cd
    mkdir bin
    

    在这里插入图片描述

  • 创建集群分发脚本

    cd /home/bigdata/bin
    touch xsync
    vi xsync
    

在这里插入图片描述

  • 输入脚本内容

    #!/bin/bash
    #1 获取输入参数个数,如果没有参数,直接退出
    pcount=$#
    if ((pcount==0)); then
    echo no args;
    exit;
    fi
    
    #2 获取文件名称
    p1=$1
    fname=`basename $p1`
    echo fname=$fname
    
    #3 获取上级目录到绝对路径
    pdir=`cd -P $(dirname $p1); pwd`
    echo pdir=$pdir
    
    #4 获取当前用户名称
    user=`whoami`
    
    #5 循环
    for host in bigdata101 bigdata102 bigdata103
    do
        echo ------------------- $host --------------
        rsync -av $pdir/$fname $user@$host:$pdir
    done
    
  • 给脚本添加执行权限

    chmod u+x xsync
    

    在这里插入图片描述

修改Hadoop配置为集群配置

  • HDFS 相关文件配置

    • 配置 core-site.xml

      <!-- 指定HDFS中NameNode的地址 -->
      <property>
      		<name>fs.defaultFS</name>
            <value>hdfs://bigdata101:9000</value>
      </property>
      
      <!-- 指定Hadoop运行时产生文件的存储目录 -->
      <property>
      		<name>hadoop.tmp.dir</name>
      		<value>/opt/module/hadoop-2.7.2/data/tmp</value>
      </property>
      

      注意:/opt/module/hadoop-2.7.2/data/tmp 需提前创建。

    • 配置 hadoop-env.sh

      export JAVA_HOME=/opt/module/jdk1.8.0_212
      
    • 配置 hdfs-site.xml

      <!-- 配置文件副本数 -->
      <property>
      	<name>dfs.replication</name>
      	<value>3</value>
      </property>
      <property>
          <name>dfs.http.address</name>
          <value>bigdata101:50070</value>
      </property>
      <!-- 指定Hadoop辅助名称节点主机配置 -->
      <property>
      	<name>dfs.namenode.secondary.http-address</name>
      	<value>bigdata103:50090</value>
      </property>
      
  • YARN 文件配置

    • 配置yarn-site.xml

      <!-- Reducer获取数据的方式 -->
      <property>
      	<name>yarn.nodemanager.aux-services</name>
      	<value>mapreduce_shuffle</value>
      </property>
      
      <!-- 指定YARN的ResourceManager的地址 -->
      <property>
      	<name>yarn.resourcemanager.hostname</name>
      	<value>bigdata102</value>
      </property>
      
      <!-- 日志聚集功能使能 -->
      <property>
          <name>yarn.log-aggregation-enable</name>
          <value>true</value>
      </property>
      
      <!-- 日志保留时间设置7天 -->
      <property>
          <name>yarn.log-aggregation.retain-seconds</name>
          <value>604800</value>
      </property>
      
    • 配置 yarn-env.sh

      export JAVA_HOME=/opt/module/jdk1.8.0_212
      
  • MapReduce 文件配置

    • 配置mapred-site.xml

      <!-- 指定MR运行在Yarn上 -->
      <property>
      	<name>mapreduce.framework.name</name>
      	<value>yarn</value>
      </property>
      
      <!-- 历史服务器端地址 -->
      <property>
          <name>mapreduce.jobhistory.address</name>
          <value>bigdata101:10020</value>
      </property>
      
      <!-- 历史服务器web端地址 -->
      <property>
          <name>mapreduce.jobhistory.webapp.address</name>
          <value>bigdata101:19888</value>
      </property>
      
    • 配置mapred-env.sh

      export JAVA_HOME=/opt/module/jdk1.8.0_212
      
  • slaves 文件配置

    vi slaves
    # 添加以下内容
    bigdata101
    bigdata102
    bigdata103
    
  • 将文件分发到其它节点

    xsync /opt/module/hadoop-2.7.2/
    

    在这里插入图片描述

集群时间同步

  • 使用bigdata101为时间服务,其它虚拟机时间跟它保持同步,切换root用户,在三台虚拟机上安装 ntp 服务

    su
    yum install -y ntp
    rpm -qa | grep ntp
    

    在这里插入图片描述

  • 修改 ntp 配置文件

    vi /etc/ntp.conf
    # 添加内容:授权192.168.1.0-192.168.1.255网段上的所有机器可以从这台机器上查询和同步时间
    restrict 192.168.1.0 mask 255.255.255.0 nomodify notrap
    # 修改内容:集群在局域网中,不使用其他互联网上的时间
    #server 0.centos.pool.ntp.org iburst
    #server 1.centos.pool.ntp.org iburst
    #server 2.centos.pool.ntp.org iburst
    #server 3.centos.pool.ntp.org iburst
    # 添加内容:当该节点丢失网络连接,依然可以采用本地时间作为时间服务器为集群中的其他节点提供时间同步
    server 127.127.1.0
    fudge 127.127.1.0 stratum 10
    

    在这里插入图片描述

  • 修改/etc/sysconfig/ntpd 文件

    vim /etc/sysconfig/ntpd
    # 添加以下内容:让硬件时间与系统时间一起同步
    SYNC_HWCLOCK=yes
    
  • 重新启动ntpd服务并设置开机启动

    # 启动服务
    service ntpd start
    # 查看服务状态
    service ntpd status
    # 设置开机启动
    chkconfig ntpd on
    

    在这里插入图片描述

  • 其它机器配置(必须使用root用户)

    • 在其他机器配置10分钟与时间服务器同步一次

      crontab -e
      # 编写定时任务如下
      */10 * * * * /usr/sbin/ntpdate bigdata101
      
  • 1
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值