• 云计算-Hadoop-2.7.7 最小化集群的搭建(3台)


    云计算-Hadoop-2.7.7 最小化集群的搭建(3台)


    一、环境依赖下载

    VMware16.2.4 https://www.vmware.com/products/workstation-pro/workstation-pro-evaluation.html

    Centos7.9 https://mirror.tuna.tsinghua.edu.cn/centos/7.9.2009/isos/x86_64/

    Xshell7&Xftp7 https://www.xshell.com/zh/free-for-home-school/

    hadoop-2.7.7 https://archive.apache.org/dist/hadoop/common/hadoop-2.7.7/hadoop-2.7.7.tar.gz

    hadoop 其它版本 https://archive.apache.org/dist/hadoop/common/

    JDK 1.8 https://www.java.com/zh-CN/download/manual.jsp

    FinalShell http://www.hostbuf.com/t/988.html (可选远程终端,对多端服务器同时发送命令)

    二、部署概要

    使用3台虚拟机进行集群的搭建,分别命名为hadoop101,hadoop102,hadoop103

    节点HDFS主节点HDFS从节点HDFS辅助节点YARN主节点YARN从节点
    hadoop101NameNodeDataNodeResourceManagerNodeManager
    hadoop102DataNodeSecondaryNameNodeNodeManager
    hadoop103DataNodeNodeManager

    从表格中可以知道,我们以hadoop101为主节点,在其上部署NameNode和ResourceManager,在hadoop102上部署SecondaryNameNode作为HDFS辅助节点。

    为了方便,3台虚拟机的hadoop均在 /root路径下进行操作,即默认为 root用户登录的目录
    为了方便,3台虚拟机的hadoop均在 /root路径下进行操作,即默认为 root用户登录的目录
    为了方便,3台虚拟机的hadoop均在 /root路径下进行操作,即默认为 root用户登录的目录

    ⭐远程连接推荐使用 FinalShell,一个终端搞定文件传输和命令操作 点我下载windows版本

    我的3台虚拟机IP统一如下:

    名称IPv4地址
    hadoop103192.168.242.201
    hadoop102192.168.242.202
    hadoop103192.168.242.203

    三、hadoop101模板机配置

    这里我们将hadoop101作为模板机,hadoop102和hadoop103均从其进行克隆比较方便,当然你也可以三台分别进行配置。(下面进行的所有操作均可以在每台虚拟机独立执行,模板机仅为了方便后续配置。)

    1. 更新 & 升级

    可能会比较慢,可以先配置阿里云的镜像源, 配置方法见 👉 CentOS7设置阿里源

    chmod 777 ./* # 提升用户目录权限
    yum update -y && yum upgrade -y
    
    • 1
    • 2

    如需删除多余内核(默认可跳过该步骤,不影响后续执行)

    reboot # 重启
    yum remove $(rpm -qa | grep kernel | grep -v $(uname -r)) -y # 删除多余的内核
    
    • 1
    • 2
    2. 安装好用的vim VimForCpp
    cd #然后回车
    curl -sLf https://gitee.com/HGtz2222/VimForCpp/raw/master/install.sh -o ./install.sh && bash ./install.sh
    	
    #安装完成后如不可使用执行下面命令或者重启终端
    source ~/.bashrc
    	
    #如需卸载
    bash ~/.VimForCpp/uninstall.sh
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    3. 安装必要依赖
    yum install openssh-server -y  		# ssh服务
    yum install net-tools.x86_64 -y 	# ifconfig服务
    yum install java-1.8.0-openjdk-devel.x86_64 -y # jps服务
    yum install xorg-x11-xauth -y 	# 解决xshell连接警告
    
    • 1
    • 2
    • 3
    • 4
    4. 关闭防火墙
    systemctl stop firewalld 	# 关闭防火墙
    systemctl disable firewalld # 禁止防火墙开机启动
    firewall-cmd --state 		# 查看防火墙状态
    
    • 1
    • 2
    • 3
    5. SSH 配置

    小提示:下面开始会进行一些文件操作,如果安装了图形化界面的版本,可以使用gedit文件编辑工具替换vim编辑器,即下面使用vim打开的地方都可以用gedit替换vim.当然,命令行操作才是Linux的灵魂所在

    如果你的xshell等软件能连接上虚拟机,那么说明你的ssh是正常的,不需要进行额外的配置了,也就是说可以忽略这一步,否则可以参考如下进行简单配置:

    # 1.查看是否安装ssh
    yum list installed | grep openssh-server
    # 或者
    rpm -qa | grep ssh
    
    # 2.安装ssh(未安装情况)
    yum install openssh-server
    
    # 3.编辑ssh配置文件,你的文件名有可能是ssh_config
    vim /etc/ssh/sshd_config
    # 一般来说只要关闭了防火墙不用配置这步,否则如下设置
    Port 22 # 打开22监听端口
    ListenAddress 0.0.0.0 # 开发监听所有地址
    ListenAddress ::
    PermitEmptyPasswords no #开启root用户登录
    PasswordAuthentication yes #开启密码登录
    # wq 保存退出
    
    # 4.启动ssh服务及查看(查看方式等价)
    service sshd start # 启动ssh服务
    ps -e | grep sshd  # 查看ssh是否开启
    netstat -an | grep 22 # 查看端口状态 
    systemctl status sshd.service # 查看服务运行状态
    
    # 5.设置开机自启动
    systemctl enable sshd.service
    systemctl list-unit-files | grep sshd # 查看开机自启列表是否加入成功
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    6. 设置ntp时间同步服务
    yum install ntp ntpdate -y
    ntpdate -u 210.72.145.44 # -u参数可以越过防火墙与主机同步 中国国家授时中心
    date # 查看当前时间,不对的话稍后reboot重启虚拟机就行了
    
    • 1
    • 2
    • 3
    7. 安装JDK和Hadoop

    先把jdk和hadoop的源码压缩包下载到本地在传到虚拟机

    # 从命令行下载hadoop-2.7.7可使用以下命令
    # wget https://archive.apache.org/dist/hadoop/common/hadoop-2.7.7/hadoop-2.7.7.tar.gz
    # scp上传可以参考以下命令
    scp "./hadoop-2.7.7.tar.gz" "./jre-8u341-linux-x64.tar.gz" root@192.168.242.132:/root/
    
    • 1
    • 2
    • 3
    • 4

    当你的两个文件都已经存在虚拟机中再执行下面的操作

    # 1.===解压到当前文件夹 /root下面===
    tar -zxvf hadoop-2.7.7.tar.gz
    tar -zxvf jre-8u341-linux-x64.tar.gz
    
    mv jre1.8.0_341 jdk1.8 # 重命名为jdk1.8方便下面配置
    rm hadoop-2.7.7.tar.gz jre-8u341-linux-x64.tar.gz # 删除多余的文件,按两次y
    
    # 2.===配置环境变量===
    vim /etc/profile #用vim编辑器打开配置文件
    # 3.在末尾添加以下内容
    #HADOOP
    export HADOOP_HOME=/root/hadoop-2.7.7
    export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
    
    # java
    export JAVA_HOME=/root/jdk1.8
    export PATH=$PATH:$JAVA_HOME/bin
    export CLASS_PATH=.:$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jar
    export JRE_HOME=$JAVA_HOME/jre 
    
    # :wq 保存退出
    
    # 4.===刷新环境变量=== 
    source /etc/profile
    
    # 5.查看java是否安装成功
    java -version 
    # 6.查看hadoop是否安装成功
    hadoop version
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29

    配置成功如下图所示:
    在这里插入图片描述

    8. 模板网络配置

    1.查看VMware网络配置

    在这里插入图片描述

    2.打开网卡配置文件

    vim /etc/sysconfig/network-scripts/ifcfg-ens33
    
    • 1

    如果这里打开是空白的,那么可能你的网卡配置文件名称和我的不一样,可以先使用以下命令进行查看,一般来说第一个就是你的网卡名称:

    cd /etc/sysconfig/network-scripts
    ls
    
    • 1
    • 2

    3.添加或修改以下内容

    # 修改
    BOOTPROTO="static"	     #设为静态IP
    ONBOOT="yes"			 #设置开机自启动
    
    # 添加
    IPADDR="192.168.242.201" #子网IP,注意你的和我的不相同,后面3位自定义
    GATEWAY="192.168.242.2"  #默认网关,一定和vmware的网关ip一样
    NETMASK="255.255.255.0"  #子网掩码,看第一步
    DNS1="114.114.114.114"   #腾讯114
    DNS2="1.2.4.8"           #中国互联网络中心
    DNS3="8.8.8.8"		     #Google
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    示例如下:
    在这里插入图片描述

    4.重启刷新

    service network restart 	 #重启网卡
    systemctl restart network    # 重启网络服务
    
    • 1
    • 2

    注意:重启网卡后ip地址是你新设置的ip地址,远程终端需要重新进行连接.

    9. 配置映射关系
    vim /etc/hosts #打开配置文件
    
    • 1

    删除原有内容后添加以下内容

    192.168.242.201 hadoop101
    192.168.242.202 hadoop102
    192.168.242.203 hadoop103
    # wq保存退出
    
    • 1
    • 2
    • 3
    • 4
    /etc/init.d/network restart # 刷新使其生效
    
    • 1
    10. 配置集群核心文件

    以下我们采取最简化配置,关于详细配置说明,欢迎查看官方文档 : https://hadoop.apache.org/docs/r2.7.7/

    先切换到配置文件目录:

    mkdir -p ~/hadoop-2.7.7/tmp # 创建hadoop临时目录
    cd ~/hadoop-2.7.7/etc/hadoop
    ls
    
    • 1
    • 2
    • 3

    在这里插入图片描述

    hadoop-env.sh (Hadoop环境配置)
    vim hadoop-env.sh
    # 在第25行更改为以下内容
    export JAVA_HOME=/root/jdk1.8
    # :wq保存退出
    
    • 1
    • 2
    • 3
    • 4

    在这里插入图片描述

    core-site.xml (Hadoop核心全局配置文件)
    vim core-site.xml # 打开文件后在插入以下内容
    
    • 1
    <configuration>
        
        <property>
        	<name>fs.defaultFSname>
        	<value>hdfs://hadoop101:9000value>
        property>
        
        <property>
    	    <name>hadoop.tmp.dirname>
    		<value>/root/hadoop-2.7.7/tmpvalue>
        property>
    configuration>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    hdfs-site.xml (hdfs配置文件)
    vim hdfs-site.xml # 打开文件后在插入以下内容
    
    • 1
    <configuration>
        
        <property>
        	<name>dfs.http.addressname>
    		<value>hadoop101:50070value>
        property>
        
    	<property>
        	<name>dfs.namenode.secondary.http-addressname>
        	<value>hadoop102:50090value>
    	property>
    configuration>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    yarn-env.sh (YARN环境配置)
    vim yarn-env.sh
    # 在第23行去掉注释并更改为以下内容
    export JAVA_HOME=/root/jdk1.8
    # :wq保存退出
    
    • 1
    • 2
    • 3
    • 4

    在这里插入图片描述

    yarn-site.xml (YARN 框架配置文件)
    vim yarn-site.xml # 打开文件后在插入以下内容
    
    • 1
    <configuration>
        
    	<property>
            <name>yarn.resourcemanager.hostnamename>
            <value>hadoop101value>
    	property>
        
    	<property>
    		<name>yarn.nodemanager.aux-servicesname>
    		<value>mapreduce_shufflevalue>
    	property>
    configuration>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    mapred-site.xml(MapReduce配置文件)
    cp mapred-site.xml.template map-site.xml # 先copy模板生成文件
    vim map-site.xml # 打开文件后在插入以下内容
    
    • 1
    • 2
    <configuration>
        
    	<property>
    		<name>mapreduce.framework.namename>
    		<value>yarnvalue>
    	property>
    configuration>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    slaves (DateNode进程节点)
    vim slaves # 打开文件后在slaves中添加DateNode节点
    
    • 1
    hadoop101
    hadoop102
    hadoop103
    
    • 1
    • 2
    • 3

    至此我们的模板机已经配置好了,下面

    -克隆模板机得到节点hadoop101和hadoop102

    安装如下步骤操作:

    在这里插入图片描述

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

    选择你的储存位置,等克隆好之后开机就行了…

    在这里插入图片描述


    下面进行各台虚拟机的ip地址和名称配置,这里先别着急用远程工具,现在虚拟机里面之间操作

    四、hadoop101私有配置

    1. 主机名设置
    hostnamectl set-hostname hadoop101 # 修改主机名	
    exec bash # 使其生效
    
    • 1
    • 2
    2. IP设置

    这里和模板机配置一样,无需进行更改

    五、hadoop102配置

    1. 主机名设置
    hostnamectl set-hostname hadoop102 # 修改主机名	
    exec bash # 使其生效
    
    • 1
    • 2
    2. IP设置

    打开配置文件

    vim /etc/sysconfig/network-scripts/ifcfg-ens33
    
    • 1

    更改以下内容(ip自己设置)

    IPADDR="192.168.242.202" #子网IP
    
    • 1

    重启刷新

    service network restart 	 # 重启网卡
    systemctl restart network    # 重启网络服务
    
    • 1
    • 2

    六、hadoop103配置

    1. 主机名设置
    hostnamectl set-hostname hadoop103 # 修改主机名	
    exec bash # 使其生效
    
    • 1
    • 2
    2. IP设置

    打开配置文件

    vim /etc/sysconfig/network-scripts/ifcfg-ens33
    
    • 1

    更改以下内容(ip自己设置)

    IPADDR="192.168.242.203" # 子网IP
    
    • 1

    重启刷新

    service network restart 	 #重启网卡
    systemctl restart network    # 重启网络服务
    
    • 1
    • 2

    -配置ssh免密登录

    上述配置完成之后开启3台虚拟机,并在每台虚拟机上都执行以下操作

    # 产生公钥和私钥:
    ssh-keygen -t rsa # (回车四次)
    # 分发公钥
    ssh-copy-id hadoop101
    ssh-copy-id hadoop102
    ssh-copy-id hadoop103
    # 按照提示输入yes和密码
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    # 赋予文件权限 (不然可能无法使用免密登录)
    chmod 700 ~ 
    chmod 700 ~/.ssh/
    chmod 600 ~/.ssh/authorized_keys
    
    • 1
    • 2
    • 3
    • 4

    完成上述配置就实现了3台虚拟机之间的ssh网络互联

    ssh-keygen -t rsa 生成密钥时大概内容如下图所示: id_rsa(私钥)、id_rsa.pub(公钥)

    在这里插入图片描述

    此处详细内容可参考 SSH设置无密码连接
    配置好之后可以使用 ssh hadoop101进行测试,如果不需要输入密码则说明免密登录配置成功,否则参考 解决Linux root用户设置ssh免密登陆后仍然需要输入密码的问题

    七、启动集群

    集群初始化

    在hadoop101执行,仅开始运行一次,后面无须在执行(不要总格式化)

    hdfs namenode -format 
    
    • 1
    方式一: 主节点一键启动集群 (推荐)
    start-all.sh # 目前经测试推荐使用该方法,根据提示输入yes或密码
    
    • 1

    启动成功如下:
    在这里插入图片描述
    到此集群搭建完成!!!

    一键关闭

    start-stop.sh
    
    • 1

    方式二: 单节点启动/关闭

    每个节点执行

    # 启动
    start-dfs.sh
    start-yarn.sh
    # 关闭
    stop-dfs.sh
    stop-yarn.sh
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    如某个模块未启动成功可采用下面的方法单独启动

    # ~/hadoop-2.7.7 hadoop根目录
    #1.在主节点上执行指令启动/关闭HDFS NameNode进程;
    hadoop-daemon.sh start namenode # 启动
    hadoop-daemon.sh stop namenode  # 关闭
    #2.在每个从节点上执行指令启动/关闭HDFS DataNode进程;
    hadoop-daemon.sh start datanode # 启动
    hadoop-daemon.sh stop datanode  # 关闭
    #3.在主节点上执行指令启动/关闭YARN ResourceManager进程;
    hadoop-daemon.sh start resourcemanager # 启动
    hadoop-daemon.sh stop resourcemanager  # 关闭
    #4.在每个从节点上执行指令启动/关闭YARN nodemanager进程;
    hadoop-daemon.sh start nodemanager # 启动
    hadoop-daemon.sh stop nodemanager  # 关闭
    #5.在节点hadoop102执行指令启动/关闭SecondaryNameNode进程
    hadoop-daemon.sh start secondarynamenode # 启动
    hadoop-daemon.sh stop secondarynamenode  # 关闭
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16

    hadoop集群逐节点 一键启动/关闭脚本 (在主节点运行即可)

    #!/bin/bash
     
    if [ $# -lt 1 ]
    then
        echo ">>>>>>无额外参数输入<<<<<<"
        echo "USE eg: 'sh myhadoop.sh satrt/stop' "
        exit ;
    fi
     
    case $1 in
    "start")
            echo " =================== 启动 hadoop集群 ==================="
     
            echo " --------------- 启动 hdfs ---------------"
            ssh hadoop101 "/root/hadoop-2.7.7/sbin/start-dfs.sh"
            ssh hadoop102 "/root/hadoop-2.7.7/sbin/start-dfs.sh"
            ssh hadoop103 "/root/hadoop-2.7.7/sbin/start-dfs.sh"
            echo " --------------- 启动 yarn ---------------"
            ssh hadoop101 "/root/hadoop-2.7.7/sbin/start-yarn.sh"
            ssh hadoop102 "/root/hadoop-2.7.7/sbin/start-yarn.sh"
            ssh hadoop103 "/root/hadoop-2.7.7/sbin/start-yarn.sh"
    ;;
    "stop")
            echo " =================== 关闭 hadoop集群 ==================="
     
            echo " --------------- 关闭 yarn ---------------"
            ssh hadoop101 "/root/hadoop-2.7.7/sbin/stop-yarn.sh"
            ssh hadoop102 "/root/hadoop-2.7.7/sbin/stop-yarn.sh"
            ssh hadoop103 "/root/hadoop-2.7.7/sbin/stop-yarn.sh"
            echo " --------------- 关闭 hdfs ---------------"
            ssh hadoop101 "/root/hadoop-2.7.7/sbin/stop-dfs.sh"
            ssh hadoop102 "/root/hadoop-2.7.7/sbin/stop-dfs.sh"
            ssh hadoop103 "/root/hadoop-2.7.7/sbin/stop-dfs.sh"
    ;;
    *)
        echo "!!!输入的参数有误!!!"
    ;;
    esac
    echo "执行指令 jps "
    jps
    exit
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    通过自带的列子检测是否启动成功
    ~/hadoop-2.7.7/bin/hadoop jar ~/hadoop-2.7.7/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.7.jar pi 1 2
    
    • 1

    在这里插入图片描述

    浏览器打开相关网页如下:

    http://192.168.242.201:50070/
    在这里插入图片描述

    http://192.168.242.201:8088/
    在这里插入图片描述

    集群搭建到这里就成功了…


    八、补充:使用Shell脚本进行快速配置

    上面我们虽然使用克隆的方式简化了对虚拟机的操作,但是,每个虚拟机都配置相同的的hadoop文件是不是过于麻烦了呢,答案是有的,所以我们这里采用shell,脚本的方式可以实现仅配置一台虚拟的的情况下对其它的2台虚拟机也同时进行配置。

    前提:3台虚拟机已经配置了网络互访,即ssh免密连接。

    下面是参考的shell脚本:

    有空更新....
    
    • 1

    九、java连接集群进行操作

    见后续blog文章...
    
    • 1
  • 相关阅读:
    数据结构— — 二叉树的遍历
    Android 11 系统开发增加低电量弹窗提示 手机 平板 车载 TV 投影 通用
    带你十天轻松搞定 Go 微服务之大结局(分布式事务)
    CalBioreagents 绵羊抗α-2-HS糖蛋白 亲和纯化说明
    Verilog基础语法——parameter、localparam与`define
    gRPC(Java) keepAlive机制研究
    2年开发经验去面试,吊打面试官,即将面试的程序员这些笔记建议复习
    数据结构和算法复习:第一弹
    集合 set
    ubuntu20.04的 ROS安装与入门介绍
  • 原文地址:https://blog.csdn.net/yxn4065/article/details/127986714