前提准备

VMware Workstation Pro

Xshell8

本文中使用的是Oracle提供的java的jdk-8u401-linux-x64.tar.gz安装包

基础环境

搭建集群服务器

安装VMware Workstation Pro

新建虚拟机

选择映像文件

创建名字密码

命名hadoop01

创建完成后 右击列表的虚拟机->管理->克隆

分别创建hadoop02和hadoop03

通过SSH远程终端工具(XSHELL)连接虚拟机

进入虚拟机,打开虚拟机终端

ifconfig

将ip和MAC 地址记录下来,例如

192.168.182.130 hadoop01 00:0c:29:3a:5a:1b

192.168.182.131 hadoop02 00:0c:29:f9:8d:f5

192.168.182.132 hadoop03 00:0c:29:05:c0:21

打开Xshell 8

上面是连接命名下面是主机ip

用户名用root登录

密码是对应虚拟机密码

连接成功

现在可以用Xshell控制虚拟机

配置静态 IP

#vi /etc/sysconfig/network-scripts/ifcfg-ens33  # 根据实际设备名修改,一般不用修改

修改配置

# 需要设置的几个配置

TYPE=Ethernet

BOOTPROTO="static"  # 改为静态IP,原先为:"dhcp"

NAME=ens33

DEVICE=ens33

ONBOOT=yes  # 开机自动启用网卡

下方添加配置,

注意ip对应,网关

# 添加以下配置

WADDR=00:0c:29:05:c0:21

IPADDR=192.168.182.132   # 静态IP地址

GATEWAY=192.168.182.2   # 网关(与宿主机一致)

NETMASK=255.255.255.0  # 子网掩码

DNS1=8.8.8.8  # DNS服务器

重启网络服务

#systemctl restart network

验证 IP 配置

#ip addr  # 确认IP已变更(看不懂也无所谓,能ping通外网即可)

#ping www.baidu.com  # 测试外网连通性

修改主机名

通过hostname命令查看主机名称

    #hostname

修改主机名称为hadoop01

    #hostnamectl set-hostname hadoop01

断开连接再重连查看配置是否生效

    #hostname

     hadoop01

同理配置其它两台机器,分别设置主机名为hadoop02,hadoop03

5.4 添加域名映射

修改hosts文件,添加所有主机IP地址和主机名对应关系。

    #vi /etc/hosts

#格式为:主机IP  制表符  主机名
   192.168.182.130  hadoop01
   192.168.182.131  hadoop02
   192.168.182.132  hadoop03

修改完成后,用cat命令 查看hosts文件内容

    #cat /etc/hosts

同理,把修改的内容复制到hadoop02、hadoop03的hosts文件

配置SSH免密登陆

使用命令生成服务器密钥(按四次回车,三台机器均需要操作)

    #ssh-keygen

    输完命令按四次回车

进入.ssh/目录,查看生成的密钥

    #cd /root/.ssh/

    #ll

安装openssh-clients客户端组件,这样才有ssh-copy-id命令(三台机器均需要操作)

#yum install openssh-clients*

LinuxMirrors: GNU/Linux 一键更换系统软件源脚本 (gitee.com)

命令:

#bash <(curl -sSL https://gitee.com/SuperManito/LinuxMirrors/raw/main/ChangeMirrors.sh)

hadoop01操作(操作时有提示,输入yes)

    #ssh-copy-id hadoop01

    #ssh-copy-id hadoop02

    #ssh-copy-id hadoop03

Hadoop02操作(操作时有提示,输入yes)

    #ssh-copy-id hadoop02

    #ssh-copy-id hadoop01

    #ssh-copy-id hadoop03

Hadoop03操作同理

使用ssh登录目标主机(发现三台结点间可以任意互通,不再需要输入密码,登录后,输入exit可退回自己的主机)

示例:进入slave1

    #ssh slave1

退出slave1结点,回到master1结点

    #exit

Hadoop部署

简单演示文件安装包的上传

通过yum安装插件(三台节点均操作)

    #yum install lrzsz

创建文件夹software,用于存放相关下载包

    #mkdir /usr/local/software

进入software文件

    #cd /usr/local/software/

Jdk下载

到目录

#cd /usr/local/software/

上传

#rz

下载hadoop

#wget https://mirrors.aliyun.com/apache/hadoop/common/hadoop-3.3.5/hadoop-3.3.5.tar.gz

查看上传的文件

#ls -lrt

#ls -l /usr/local/software/

解压jdk,JDK安装配置

查看所有jdk

#rpm -qa | grep jdk

删除所有jdk

#yum remove -y java-1.8.0-openjdk-headless-1.8.0.262.b10-1.el7.x86_64 java-1.8.0-openjdk-1.8.0.262.b10-1.el7.x86_64 java-1.7.0-openjdk-headless-1.7.0.261-2.6.22.2.el7_8.x86_64 java-1.7.0-openjdk-1.7.0.261-2.6.22.2.el7_8.x86_64

删除依赖包 copy-jdk-configs

#yum remove -y copy-jdk-configs-3.3-10.el7_5.noarch

检查是否成功

#rpm -qa | grep jdk  # 检查 JDK 包是否残留

#rpm -qa | grep java  # 额外检查 Java 相关包(可选)

#java -version  # 验证 Java 命令是否失效(正常提示“command not found”)

进入安装包目录

#cd /usr/local/software/


解压JDK安装包

#tar -zxvf jdk-8u461-linux-x64.tar.gz

添加系统环境变量(在profile文件末尾添加)

#vi /etc/profile

export JAVA_HOME=/usr/local/software/jdk1.8.0_461                             
export PATH=$PATH:$JAVA_HOME/bin

查看环境变量内容

#cat /etc/profile

操作以下命令让环境变量立即生效

#source /etc/profile

检验是否成功

#java -version

同理(在slave1与slave2上执行同行的操作安装JDK)

解压hadoop,HDFS安装配置

解压Hadoop安装包

#tar -zxvf hadoop-3.3.5.tar.gz

修改HDFS配置文件

(1)设置JDK安装目录

编辑文件“/usr/local/software/hadoop-3.3.5/etc/hadoop/hadoop-env.sh”,在文件末尾加上jdk的安装路径,注意jdk的安装路径可根据实际情况更改。

    #vi /usr/local/software/hadoop-3.3.5/etc/hadoop/hadoop-env.sh

    export JAVA_HOME=/usr/local/software/jdk1.8.0_461

(2)指定HDFS主节点

编辑文件“/usr/local/software/hadoop-3.3.5/etc/hadoop/core-site.xml”,将如下内容嵌入此文件里最后两行的configuration标签之间(注意修改master1名称为自己的名称)

#vi /usr/local/software/hadoop-3.3.5/etc/hadoop/core-site.xml

<property>

       <name>hadoop.tmp.dir</name>

       <value>/usr/local/software/hadoop-3.3.5/cloud</value>

</property>

<property>

       <name>fs.defaultFS</name>

       <value>hdfs://hadoop01:8020</value>

</property>

(3) 指定HDFS从节点

编辑文件“/usr/local/software/hadoop-3.3.5/etc/hadoop/workers”,将slave1与slave1的hostname主机名称添加到文件中

   

    #vi /usr/local/software/hadoop-3.3.5/etc/hadoop/workers

   

    Hadoop02

    Hadoop03

(4) 配置yarn-site.xml,添加在configuration标签之间

#vi /usr/local/software/hadoop-3.3.5/etc/hadoop/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>hadoop01</value>
    </property>

(5)配置 mapred-site.xml,添加在configuration标签之间

   

    #vi /usr/local/software/hadoop-3.3.5/etc/hadoop/mapred-site.xml

   

    <!-- 指定MR运行在Yarn上 -->

    <property>

           <name>mapreduce.framework.name</name>

           <value>yarn</value>

    </property>

    <property>

         <name>yarn.app.mapreduce.am.env</name>

         <value>HADOOP_MAPRED_HOME=${HADOOP_HOME}</value>

    </property>

    <property>

         <name>mapreduce.map.env</name>

         <value>HADOOP_MAPRED_HOME=${HADOOP_HOME}</value>

    </property>

    <property>

         <name>mapreduce.reduce.env</name>

         <value>HADOOP_MAPRED_HOME=${HADOOP_HOME}</value>

    </property>

(6)配置hdfs-site.xml,添加在configuration标签之间
   

 #vi /usr/local/software/hadoop-3.3.5/etc/hadoop/hdfs-site.xml

 <!-- 指定Hadoop辅助名称节点主机配置 -->

<!-- 新增:NameNode元数据存储目录(教程遗漏,必须加) -->

<property>

    <name>dfs.namenode.name.dir</name>

    <value>/usr/local/software/hadoop-3.3.5/cloud/dfs/name</value>

</property>
    <property>
      <name>dfs.namenode.secondary.http-address</name>
      <value>hadoop02:50090</value>
    </property>
    <property>
        <name>dfs.replication</name>
        <value>2</value>
        <description>设置副本数</description>
    </property>
    <!--配置namenode的web界面-->
    <property>
        <name>dfs.namenode.http-address</name>
        <value>hadoop01:50070</value>
    </property>

    <!-- 新增:DataNode 数据存储目录(关键!) -->

    <property>

        <name>dfs.datanode.data.dir</name>

        <value>/usr/local/software/hadoop-3.3.5/cloud/dfs/data</value>

    </property>

(7)配置yarn-env.sh,在末尾添加

 #vi /usr/local/software/hadoop-3.3.5/etc/hadoop/yarn-env.sh

export JAVA_HOME=/usr/local/software/jdk1.8.0_461

(8)配置mapred-env.sh,在末尾添加

#vi /usr/local/software/hadoop-3.3.5/etc/hadoop/mapred-env.sh

 export JAVA_HOME=/usr/local/software/jdk1.8.0_461

(9) 拷贝整个hadoop解压包至其它服务器,slave1,slave2

在master1节点进入安装包目录拷到slave1


    #cd /usr/local/software/
    #scp -r hadoop-3.3.5 root@hadoop02:/usr/local/software/


在slave1节点进入安装包目录


    #cd /usr/local/software/


在slave1节点查看文件


    #ls -lrt
    drwxr-xr-x. 9 root root 149 Dec 26 01:37 hadoop-3.35


在master1节点进入安装包目录拷到slave2


    #cd /usr/local/software/
    #scp -r hadoop-3.3.5 root@hadoop03:/usr/local/software/


在slave2节点进入安装包目录


    #cd /usr/local/software/


在slave2节点查看文件


    #ls -lrt
    drwxr-xr-x. 9 root root 149 Dec 26 01:46 hadoop-3.3.5

集群环境格式化及启动

(1) 格式化主节点

在master1服务器上,进入到hadoop安装包的bin目录下

    #cd /usr/local/software/hadoop-3.3.5/bin

进行格式化

    #./hdfs namenode -format

注意看格式化日志,看到以下日志,证明格式化成功

    Storage directory /usr/local/software/hadoop-3.3.5/cloud/dfs/name has been successfully formatted.

(2)用master1结点启动Hadoop

在master1结点中进入hadoop安装包的sbin目录下

    #cd /usr/local/software/hadoop-3.3.5/sbin/

启动Hadoop


    #./start-all.sh

发现报错,出现如下日志


    Starting namenodes on [hadoop01]
    ERROR: Attempting to operate on hdfs namenode as root
    ERROR: but there is no HDFS_NAMENODE_USER defined. Aborting 这个

#vi /usr/local/software/hadoop-3.3.5/etc/hadoop/hadoop-env.sh

# Hadoop 全局服务用户配置(所有脚本共用,root 仅测试环境)

export HDFS_NAMENODE_USER="root"

export HDFS_DATANODE_USER="root"

export HDFS_SECONDARYNAMENODE_USER="root"

export YARN_RESOURCEMANAGER_USER="root"

export YARN_NODEMANAGER_USER="root"

修改后进入Hadoop安装的sbin目录重启Hadoop,成功

#cd /usr/local/software/hadoop-3.3.5/sbin/

#./start-all.sh

查看进程并验证HDFS环境

分别在master1、slave1、slave2三台机器上执行jps命令,查看HDFS服务是否已经启动

master1节点上有NameNode进程

       #jps

    5779 Jps

    5353 SecondaryNameNode

    5087 NameNode

进入Hadoop安装目录的bin文件下

       #cd /usr/local/software/hadoop-3.3.5/bin

在HDFS文件系统上创建data文件夹

       #./hadoop fs -mkdir /data

查看创建的文件夹

       #./hadoop fs -ls /

为了方便后续操作,我们可以把hadoop也添加到系统环境变量

(profile文件末尾添加),注意(HADOOP_HOME=此处为hadoop的安装目录)(三台节点上都要添加)

       #vi /etc/profile

export HADOOP_HOME=/usr/local/software/hadoop-3.3.5
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin

环境变量生效

       #source /etc/profile

验证环境变量是否成功?(进入任意目录,查寻HDFS上文件是否存在,若存在,即成功)

      

       #cd /root

       #hadoop fs -ls /

更多推荐