当前位置: 首页 > news >正文

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

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并配置环境变量

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>

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>

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账号登陆hdfs和yarn了】

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

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

相关文章:

  • 从零开始用react + tailwindcs + express + mongodb实现一个聊天程序(三) 实现注册 登录接口
  • Gin框架深度解剖:路由树的实现原理
  • 蓝桥杯单片机基础部分——1.5基础模块代码升级
  • 【软件设计】SOLID原则详解与PHP实战示例
  • PageForge v2025.1.6 发布:支持 KaTeX 数学公式渲染
  • Spring AI + 大模型开发应用
  • 爬楼梯问题
  • 【Alertmanager】Alertmanager告警路由,告警静默,告警抑制,高可用的实现
  • CryptoJS库中WordArray对象支持哪些输出格式?除了toString() 方法还有什么方法可以输出吗?WordArray对象的作用是什么?
  • Python入门教程丨3.8 网络编程
  • 计算机毕业设计 ——jspssm504springboot 职称评审管理系统
  • Redis搭建集群
  • linux--多进程开发(4) 进程退出、孤儿进程、僵尸进程、进程回收wait()
  • 从最小依赖角度谈静态库与动态库的选择及配置策略
  • 【大模型学习】Transformer架构解析
  • IDEA集成DeepSeek,通过离线安装解决无法安装Proxy AI插件问题
  • Linux修改Redis密码
  • 编程算法总结
  • 【初阶数据结构】树和二叉树
  • 已有项目添加vitepress
  • 天津网站建设icp备/百度平台商家我的订单查询
  • 做棋子网站怎么提高浏览量/免费seo网站推广在线观看
  • 那个网站做图片好看的/cnn头条新闻
  • 重庆九龙坡区哪里有做网站的/泽成seo网站排名
  • 网站备案幕布怎么申请/qq空间秒赞秒评网站推广
  • 做网站有哪些软件/成人技能培训机构