• 一、Hadoop3.1.3集群搭建


    一、集群规划
    hadoop01(209.2)hadoop02(209.3)hadoop03(209.4)
    HDFSNameNode DataNodeDataNodeSecondaryNameNode DataNode
    YARNNodeManagerResourceManager NodeManagerNodeManager

    NameNode和SecondaryNameNode不要放在同一台服务器

    二、创建用户
    useradd atguigu
    passwd ***
    
    • 1
    • 2

    配置atguigu用户权限

    vim /etc/sudoers
    
    • 1
    ## Allow root to run any commands anywhere
    root ALL=(ALL) ALL
    ## Allows people in group wheel to run all commands
    %wheel ALL=(ALL) ALL
    atguigu ALL=(ALL) NOPASSWD:ALL
    
    • 1
    • 2
    • 3
    • 4
    • 5
    三、/opt下创建module、software
    mkdir /opt/module
    mkdir /opt/software
    chown atguigu:atguigu /opt/module
    chown atguigu:atguigu /opt/software
    
    • 1
    • 2
    • 3
    • 4
    四、重新安装JDK
    1、卸载原有的JDK
    2、将jdk包上传到module下并解压
    3、配置JDK环境变量

    新建/etc/profile.d/my_env.sh 文件

    vim /etc/profile.d/my_env.sh
    
    • 1
    #JAVA_HOME
    export JAVA_HOME=/opt/module/jdk1.8.0_212
    export PATH=$PATH:$JAVA_HOME/bin
    
    • 1
    • 2
    • 3
    source /etc/profile
    java -version
    
    • 1
    • 2
    五、hadoop01安装hadoop

    https://archive.apache.org/dist/hadoop/common/hadoop-3.1.3/

    1、解压到/opt/module下面
    2、环境变量设置
    vim /etc/profile.d/my_env.sh
    
    • 1
    #HADOOP_HOME
    export HADOOP_HOME=/opt/module/hadoop-3.1.3
    export PATH=$PATH:$HADOOP_HOME/bin
    export PATH=$PATH:$HADOOP_HOME/sbin
    
    • 1
    • 2
    • 3
    • 4
    source /etc/profile
    
    • 1
    3、SSH免密登录
    进入 /home/atguigu/.ssh
    ssh-keygen -t rsa
    然后敲(三个回车),就会生成两个文件 id_rsa(私钥)、id_rsa.pub(公钥)
    将公钥拷贝到要免密登录的目标机器上
    ssh-copy-id hadoop01
    ssh-copy-id hadoop02
    ssh-copy-id hadoop03
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    注意:每台服务器都需要使用atguigu账号配置无密登录

    六、集群配置

    自定义配置文件存放在$HADOOP_HOME/etc/hadoop下

    1、核心文件配置

    配置core.site.xml

    <?xml version="1.0" encoding="UTF-8"?>
    <?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
    <configuration>
     <!-- 指定 NameNode 的地址 -->
     <property>
     <name>fs.defaultFS</name>
     <value>hdfs://hadoop01:8020</value>
     </property>
     <!-- 指定 hadoop 数据的存储目录 -->
     <property>
     <name>hadoop.tmp.dir</name>
     <value>/opt/module/hadoop-3.1.3/data</value>
     </property>
     <!-- 配置 HDFS 网页登录使用的静态用户为 atguigu -->
     <property>
     <name>hadoop.http.staticuser.user</name>
     <value>atguigu</value>
     </property>
    </configuration>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19

    配置hdfs.site.xml

    <?xml version="1.0" encoding="UTF-8"?>
    <?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
    <configuration>
    <!-- nn web 端访问地址-->
    <property>
     <name>dfs.namenode.http-address</name>
     <value>hadoop01:9870</value>
     </property>
    <!-- 2nn web 端访问地址-->
     <property>
     <name>dfs.namenode.secondary.http-address</name>
     <value>hadoop03:9868</value>
     </property>
    </configuration>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14

    配置yarn.site.xml

    <?xml version="1.0" encoding="UTF-8"?>
    <?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
    <configuration>
     <!-- 指定 MR 走 shuffle -->
     <property>
     <name>yarn.nodemanager.aux-services</name>
     <value>mapreduce_shuffle</value>
     </property>
     <!-- 指定 ResourceManager 的地址-->
     <property>
     <name>yarn.resourcemanager.hostname</name>
     <value>hadoop02</value>
     </property>
     <!-- 环境变量的继承 -->
     <property>
     <name>yarn.nodemanager.env-whitelist</name>
    
    <value>JAVA_HOME,HADOOP_COMMON_HOME,HADOOP_HDFS_HOME,HADOOP_CO
    NF_DIR,CLASSPATH_PREPEND_DISTCACHE,HADOOP_YARN_HOME,HADOOP_MAP
    RED_HOME</value>
     </property>
    </configuration>
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23

    配置mapred-site.xml

    <?xml version="1.0" encoding="UTF-8"?>
    <?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
    <configuration>
    <!-- 指定 MapReduce 程序运行在 Yarn 上 -->
     <property>
     <name>mapreduce.framework.name</name>
     <value>yarn</value>
     </property>
    </configuration>
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    2、配置历史服务器

    mapred-site.xml

    <!-- 历史服务器端地址 -->
    <property>
     <name>mapreduce.jobhistory.address</name>
     <value>hadoop01:10020</value>
    </property>
    <!-- 历史服务器 web 端地址 -->
    <property>
     <name>mapreduce.jobhistory.webapp.address</name>
     <value>hadoop01:19888</value>
    </property>
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    3、群起集群配置
    vim /opt/module/hadoop3.1.3/etc/hadoop/workers 并添加
    hadoop01
    hadoop02
    hadoop03
    
    • 1
    • 2
    • 3
    • 4
    4、配置日志聚集

    日志聚集概念:应用运行完成以后,将程序运行日志信息上传到 HDFS 系统上。

    注意:开启日志聚集功能,需要重新启动 NodeManager 、ResourceManager 和 HistoryServer。

    配置 yarn-site.xml

    
    
     yarn.log-aggregation-enable
     true
    
    
    
     yarn.log.server.url
     http://hadoop02:19888/jobhistory/logs
    
    
    
     yarn.log-aggregation.retain-seconds
     604800
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15

    向其他节点分发所有修改过的配置,如:

    rsync yarn-site.xml atguigu@hadoop02:/$HADOOP_HOME/etc/hadoop/yarnsite.xml
    
    • 1
    七、启动集群

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

    hdfs namenode -format
    
    • 1

    启动HDFS

    sbin/start-dfs.sh
    
    • 1

    在配置了ResourceManager的节点hadoop02上启动yarn

    sbin/start-yarn.sh
    
    • 1

    查看 HDFS 的 NameNode:http://hadoop102:9870

    查看 YARN 的 ResourceManager:http://hadoop103:8088

    启动历史服务器

    mapred --daemon start historyserver
    
    • 1

    查看 JobHistory: http://hadoop102:19888/jobhistory

    可使用jps查看启动的服务是否和一开始规划的一致

    八、集群启动/停止方式总结

    注意各节点之间的端口互通或者彻底关闭防火墙

    1、各个模块分开启动/停止(配置 ssh 是前提)常用

    (1)整体启动/停止 HDFS

    start-dfs.sh/stop-dfs.sh 
    
    • 1

    (2)整体启动/停止 YARN

    start-yarn.sh/stop-yarn.sh
    
    • 1
    2、各个服务组件逐一启动/停止

    (1)分别启动/停止 HDFS 组件

    hdfs --daemon start/stop namenode/datanode/secondarynamenode
    
    • 1

    (2)启动/停止 YARN

    yarn --daemon start/stop resourcemanager/nodemanager
    
    • 1
    3、Hadoop 集群启停脚本(包含 HDFS,Yarn,Historyserver):myhadoop.sh
    cd /opt/module/hadoop-3.1.3/sbin
    vim myhadoop.sh
    
    • 1
    • 2
    #!/bin/bash
    if [ $# -lt 1 ]
    then
     echo "No Args Input..."
     exit ;
    fi
    case $1 in
    "start")
     echo " =================== 启动 hadoop 集群 ==================="
     echo " --------------- 启动 hdfs ---------------"
     ssh hadoop01 "/opt/module/hadoop-3.1.3/sbin/start-dfs.sh"
     echo " --------------- 启动 yarn ---------------"
    ssh hadoop02 "/opt/module/hadoop-3.1.3/sbin/start-yarn.sh"
     echo " --------------- 启动 historyserver ---------------"
     ssh hadoop01 "/opt/module/hadoop-3.1.3/bin/mapred --daemon start historyserver"
    ;;
    "stop")
     echo " =================== 关闭 hadoop 集群 ==================="
     echo " --------------- 关闭 historyserver ---------------"
     ssh hadoop01 "/opt/module/hadoop-3.1.3/bin/mapred --daemon stop historyserver"
     echo " --------------- 关闭 yarn ---------------"
     ssh hadoop02 "/opt/module/hadoop-3.1.3/sbin/stop-yarn.sh"
     echo " --------------- 关闭 hdfs ---------------"
     ssh hadoop01 "/opt/module/hadoop-3.1.3/sbin/stop-dfs.sh"
    ;;
    *)
     echo "Input Args Error..."
    ;;
    esac
    
    • 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
     chmod +x myhadoop.sh
    
    • 1

    查看三台服务器 Java 进程脚本:jpsall

    cd /opt/module/hadoop-3.1.3/sbin
    vim jpsall
    
    • 1
    • 2
    #!/bin/bash
    for host in hadoop01 hadoop02 hadoop03
    do
     echo =============== $host ===============
     ssh $host jps
    done
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    chmod +x jpsall
    
    • 1
  • 相关阅读:
    【计算机导论调研报告】AI技术的发展
    【FreeRTOS】两个Delay函数
    Gin简单明了的教程---下
    【ThreadLocal】Threadlocal的详细解释
    【PHP代码审计】——开启你的代码审计生涯
    每日一道面试题:Java中序列化与反序列化
    iOS查看汇编代码
    Persistent data structure 不可变数据结构
    升级MacOS(Mojave)后使用git问题
    kafka-consumer-groups 命令行工具使用手册
  • 原文地址:https://blog.csdn.net/Answer0902/article/details/134388517