02、Hadoop3.x从入门到放弃,第二章:集群环境搭建

news/2025/2/26 5:49:03

Hadoop3x_0">Hadoop3.x从入门到放弃,第二章:集群环境搭建

一、安装JDK并配置环境变量

/etc/profile中部分代码如下:

在这里插入图片描述

for循环profile.d中的sh文件并使之生效,所以我们只需要在profile.d文件夹下配置我们的my_env.sh文件就好了

vim /etc/profile.d/my_env.sh  

##java conf
export JAVA_HOME=/opt/module/jdk1.8.0_271
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export PATH=$PATH:$JAVA_HOME/bin


source /etc/profile   使配置文件生效

Hadoop_23">二、安装Hadoop并配置环境变量

vim /etc/profile.d/my_env.sh  

##hadoop conf
export HADOOP_HOME=/opt/module/hadoop-3.1.3
export PATH=$PATH:$HADOOP_HOME/bin
export PATH=$PATH:$HADOOP_HOME/sbin


source /etc/profile   使配置文件生效


##hadoop目录功能
bin : 里面有hadoop的各种命令工具,如:hdfs存储 mapred计算 yarn调度
etc : 里面有大量的配置信息,如hdfs-site.xml   mapred-site.xml   yarn-site.xml  core-site.xml  works
sbin: 里面也有Hadoop的各种命令工具,如:start-dfs.sh  start-yarn.sh   hadoop-daemon.sh  mr-jobhistory-daemon.sh

三、集群配置

在这里插入图片描述

【注意:】
NameNode \ 2NN \ ResourceManager 都比较耗内存,不能安装在同一台机器上。

##配置文件分两种:
1、默认配置文件:
    存放在各自jar包中
    hadoop-common-3.1.3.jar/core-default.xml
    hadoop-hdfs-3.1.3.jar/hdfs-default.xml
    hadoop-yarn-common-3.1.3.jar/yarn-default.xml
    hadoop-mapreduce-client-core-3.1.3.jar/mapred-default.xml

2、自定义配置文件
    %HADOOP_HOME%/etc/hadoop/下
    core-default.xml
    hdfs-default.xml
    yarn-default.xml
    mapred-default.xml

1、核心配置文件core-site.xml

    <!-- 指定NameNode的地址 -->
    <property>
        <name>fs.defaultFS</name>
        <value>hdfs://hadoop102: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>root</value>
    </property>

hdfssitexml_91">2、HDFS配置hdfs-site.xml

    <!-- nn web端访问地址-->
    <property>
        <name>dfs.namenode.http-address</name>
        <value>hadoop102:9870</value>
    </property>
    <!-- 2nn web端访问地址-->
    <property>
        <name>dfs.namenode.secondary.http-address</name>
        <value>hadoop104:9868</value>
    </property>

yarnsitexml_106">3、YARN配置yarn-site.xml

	<!-- 指定MR走shuffle -->
    <property>
        <name>yarn.nodemanager.aux-services</name>
        <value>mapreduce_shuffle</value>
    </property>

    <!-- 指定ResourceManager的地址-->
    <property>
        <name>yarn.resourcemanager.hostname</name>
        <value>hadoop103</value>
    </property>

    <!-- 环境变量的继承 HADOOP_MAPRED_HOME 是 3.1.3的一个小BUG 后续版本不需要配置-->
    <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_MAPRED_HOME</value>
    </property>

4、MapReduce配置mapred-site.xml

 	<!-- 指定MapReduce程序运行在Yarn上 -->
    <property>
        <name>mapreduce.framework.name</name>
        <value>yarn</value>
    </property>

四、群起集群

1、配置workers

位置:%HADOOP_HOME%/etc/hadoop/workers

新增三台服务器的主机名称:
hadoop102
hadoop103
hadoop104
不允许有任何空格

2、启动集群

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

  hdfs namenode -format


在这里插入图片描述

>启动HDFS  (在一台上启动即可)
  sbin/start-dfs.sh

启动后  jps 

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

>在配置了ResourceManeger的节点启动yarn
  sbin/start-dfs.sh

启动后 jps

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

>web端查看HDFS的NameNode
  http://hadoop102:9870
  可以查看hdfs上存储的数据信息


在这里插入图片描述

>web端查看yarn的resourceManeger
  http://hadoop103:8088
  可以查看yarn上运行的job信息

在这里插入图片描述

3、常见报错

hdfs启动报错

在这里插入图片描述

将start-dfs.sh,stop-dfs.sh(在hadoop安装目录的sbin里)两个文件顶部添加以下参数

#!/usr/bin/env bash
HDFS_DATANODE_USER=root
HADOOP_SECURE_DN_USER=hdfs
HDFS_NAMENODE_USER=root
HDFS_SECONDARYNAMENODE_USER=root


将start-yarn.sh,stop-yarn.sh(在hadoop安装目录的sbin里)两个文件顶部添加以下参数

#!/usr/bin/env bash
YARN_RESOURCEMANAGER_USER=root
HADOOP_SECURE_DN_USER=yarn
YARN_NODEMANAGER_USER=root

【注意:添加后,使用xsync 分发到每台机器上】
【之后就可以使用root账号登陆hdfsyarn了】

如果服务崩溃了起不起来了怎么处理

1、先停掉所有服务
./stop-yarn.sh  ./stop-dfs.sh  (实在不行就kill)

2、删掉 data 和 logs
rm -rf ./data ./logs

3、格式化 namenode
hdfs namenode -format

4、启动集群
sbin/start-dfs.sh    对应的服务器启动 sbin/start-yarn.sh

4、测试HDFS和YARN

##创建目录

hadoop fs -mkdir /wcinput

##上传文件

hadoop fs -put ./myfile/words.txt /wcinput

##测试yarn
hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-3.1.3.jar wordcount /wcinput /wcoutput

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

5、配置历史服务器

为了查看程序的历史运行情况,需要配置下历史服务器。
(如查看http://hadoop103:8088  页面上对应任务的 history)

配置mapred-site.xml

    <!--配置历史服务器端地址-->
    <property>
        <name>mapreduce.jobhistory.address</name>
        <value>hadoop102:10020</value>
    </property>

    <!--历史服务器web端地址-->
    <property>
        <name>mapreduce.jobhistory.webapp.address</name>
        <value>hadoop102:19888</value>
    </property>

【然后sync 同步至所有服务器】
【重新启动服务】
sbin/start-dfs.sh      对应服务器上 启动 sbin/start-yarn.sh

【启动历史服务器】
mapred --daemon start historyserver
(mapred这个命令 在%HADOOP_HOME%/bin目录下)

【查看进程】
jps

在这里插入图片描述

【查看历史服务】
http://hadoop102:19888

可 执行测试 任务
hadoop jar ../share/hadoop/mapreduce/hadoop-mapreduce-examples-3.1.3.jar wordcount /wcinput /wcoutput2

在这里插入图片描述

6、配置日志聚集功能

在这里插入图片描述

什么叫日志聚集:
   应用运行完成以后,将程序运行日志信息上传到hdfs系统上

日志聚集好处:
   方便查看程序运行详情,方便开发调试

注意:
   开启日志聚集功能,需要重启NodeManager\ResourceManeger\HistoryServer

配置yarn-site.xml

<!--开启日志聚集功能-->
<property>
   <name>yarn.log-aggregation-enable</name>
    <value>true</value>
</property>

<!--开启日志聚集服务器地址-->
<property>
   <name>yarn.log.server.url</name>
    <value>http://hadoop102:19888/jobhistory/logs</value>
</property>

<!--设置日志保留时间为7天-->
<property>
   <name>yarn.log-aggregation.retain-seconds</name>
    <value>604800</value>
</property>
【分发配置】 把这个配置 分发到所有服务器上
【重启服务】
sbin/stop-yarn.sh    
mapred --daemon top historyserver
sbin/stop-dfs.sh   

7、集群常用脚本

#########1、各模块分开启动停止:
>整体启动/停止HDFS
start-dfs.sh  /  stop-dfs.sh 

>整体启动/停止YARN
start-yarn.sh  /  stop-yarn.sh

>启动历史服务器
mapred --daemon start historyserver

##########2、各服务组件的逐一启动停止:
>分别启动/停止HDFS组件
hdfs -daemon start/stop 【namenode /  datanode  / secondarynamenode】

>启动/停止YARN
yarn -daemon start/stop  【resourcemanager / nodemanager】

【脚本如下】:
#!/bin/bash

if [ $# -lt 1 ]
then
  echo "No Args Input..."
  exit ; 
fi

case $1 in
"start")
     echo "========================启动Hadoop集群========================"
    
     echo "========================启动HDFS=============================="
     ssh hadoop102 "/opt/module/hadoop-3.1.3/sbin/start-dfs.sh"
     echo "========================启动YARN=============================="
     ssh hadoop103 "/opt/module/hadoop-3.1.3/sbin/start-yarn.sh"
     echo "=======================启动 historyserver====================="
     ssh hadoop102 "/opt/module/hadoop-3.1.3/bin/mapred --daemon start historyserver"
;;

"stop")
     echo "======================关闭 HADOOP 集群========================"
    
     echo "======================关闭HDFS==============================="
     ssh hadoop102 "/opt/module/hadoop-3.1.3/bin/mapred --daemon stop historyserver"
     echo "=====================关闭YARN================================"
     ssh hadoop103 "/opt/module/hadoop-3.1.3/sbin/stop-yarn.sh"
     echo "=====================关闭HDFS================================"
     ssh hadoop102 "/opt/module/hadoop-3.1.3/sbin/stop-dfs.sh"
;;
*)
     echo "Input Args Error..."

;;
esac
#########3、查看所有服务器 进程脚本

#!/bin/bash

for host in hadoop102 hadoop103  hadoop104
do
    echo "====================$host====================="
    ssh $host jps
done

8、常用的端口号

端口名称Hadoop2.xHadoop3.x
NameNode内部通信端口8020/90008020/9000/9820
NameNode HTTP UI500709870
YARN查看执行任务端口80888088
历史服务器通信端口1988819888

9、集群时间同步

#########查看所有节点ntpd服务转改和开机自启动状态############
systemctl status ntpd

systemctl start ntpd

systemctl is-enabled ntpd

########修改hadoop102的ntp.conf配置文件
vim /etc/ntp.conf

内容如下:
  > 授权192.168.73.0~192.168.73.255网段上的所有机器可以从这台机器上查询和同步时间【注释 放开】
    restrict 192.168.73.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

  > 修改hadoop102的/etc/sysconfig/ntpd文件
    vim /etc/sysconfig/ntpd
    增加如下内容(让硬件时间与系统时间一起同步)
    SYNC_HWCLOCK=yes
  
  >重启ntpd服务
    systemctl start ntpd
  
  > 设置ntpd服务开机启动
    systemctl enable ntpd
########其他机器操作#######
>关闭所有节点的ntp服务和自启动
  systemctl stop ntpd
  systemctl disable ntpd

> 其他机器配置1分钟与时间服务器同步一次
  sudo crontab -e
   */1 * * * * /usr/sbin/ntpdate hadoop102

> 修改任意机器时间
  sudo date -s "2024-04-07 11:11:11"


> 1分钟后查看机器是否与时间服务器同步
  sudo date

http://www.niftyadmin.cn/n/5868097.html

相关文章

7.grafana的内存和CPU同时在一个表中的调整

如图所示&#xff0c;当CPU和内存同在一个表的时候&#xff0c;左y轴只显示内存单位&#xff0c;那么我们就需要让右y轴显示CPU单位百分之 1. 在axes 中显示左y轴和右y轴 2. 在左y轴单位选择bytes&#xff0c;右y轴单选选择百分比 3. 选择Series overrides&#xff0c;开始填…

手写系列——MoE网络

参考&#xff1a; MOE原理解释及从零实现一个MOE&#xff08;专家混合模型&#xff09;_moe代码-CSDN博客 MoE环游记&#xff1a;1、从几何意义出发 - 科学空间|Scientific Spaces 深度学习之图像分类&#xff08;二十八&#xff09;-- Sparse-MLP(MoE)网络详解_sparse moe…

qtcreator上使用opencv报错

发现是我选择opencv的版本有问题 右键桌面的qtcreator图标&#xff0c;进入Tools目录&#xff0c;可以看到mingw的版本是mingw730_64,因此编译opencv时也要用这个版本 下面是我网上随便找的别人编译好的&#xff0c;发现不行&#xff0c;这个所用的mingw版本也没提&#xff0c…

6. grafana的graph简介

1. Settings功能 2. Visualization功能 &#xff08;可视化的方式&#xff0c;后续会写一些&#xff09; 3. Display 功能&#xff08;显示方面的设置&#xff09; bars 柱状图方式显示 lines&#xff08;不选不会出功能&#xff09; line width 线条的粗细 staircase 会让折…

【IntelliJ IDEA】关于设置固定的文件格式(包括注释、版权信息等)的方法

在IntelliJ IDEA&#xff08;简称IDEA&#xff09;中&#xff0c;要设置固定的文件格式&#xff08;包括注释、版权信息等&#xff09;&#xff0c;使得每次创建新文件时都能自动显示这些内容&#xff0c;可以通过以下步骤实现&#xff1a; 一、设置文件模板 打开IDEA并进入项…

c语言学习,归并排序

C语言&#xff0c;归并排序是经典的分治算法&#xff0c;基本思想是将&#xff0c;待排序的数组分成两个子数组&#xff0c;分别对这两个子数组进行排序&#xff0c;然后将排序好的子数组合并成一个有序的数组。归并排序的时间复杂度为O(n log n)&#xff0c;且具有稳定性。 示…

MFC案例:利用双缓冲技术绘制顶点可移动三角形

案例目标&#xff1a;在屏幕上出现一个三角形&#xff0c;同时显示各顶点坐标&#xff0c;当用鼠标选择某顶点并拖动时&#xff0c;三角形随鼠标移动而变形。具体步骤为&#xff1a; 一、在VS2022上建立一个基于对话框的MFC应用&#xff0c;项目名称&#xff1a;DrawMovableTr…

IDEA-插件开发踩坑记录-第五坑-没有飞机场导致无法访问GITHUB导致的讨厌问题

背景 在JetBrains-intellij-idea 插件开发时&#xff0c;出现一个不影响运行&#xff0c;但影响心情的错误提示&#xff1a; Cannot resolve the latest Gradle IntelliJ Plugin version org.gradle.api.GradleException: Cannot resolve the latest Gradle IntelliJ Plugin v…