首页 > 其他分享 >02-Hadoop集群搭建

02-Hadoop集群搭建

时间:2023-06-19 23:57:31浏览次数:42  
标签:02 xml Hadoop yarn hadoop start 集群 3.1 hadoop102

1. 集群配置

1.1 集群部署规划

  • 资源上有抢夺冲突的,尽量不要部署在一起;
  • 工作上需要互相配合的,尽量部署在一起。
\ Hadoop102 Hadoop103 Hadoop104
HDFS NameNode & DataNode DataNode 2rdNameNode & DataNode
YARN NodeManager ResourceManager & NodeManager NodeManager
  • NameNode 和 SecondaryNameNode 不要安装在同一台服务器;
  • ResourceManager 也很消耗内存,不要和 NameNode、SecondaryNameNode 配置在同一台机器上。

1.2 安装包目录结构

目录 说明
bin Hadoop 最基本的管理脚本和使用脚本的目录,这些脚本是 sbin 目录下管理脚本的基础实现,用户可以直接使用这些脚本管理和使用 Hadoop。
etc Hadoop 配置文件所在的目录
include 对外提供的编程库头文件(具体动态库和静态库在lib目录中),这些头文件均是用 C++ 定义的,通常用于 C++ 程序访问 HDFS 或编写 MapReduce 程序。
lib 该目录包含了 Hadoop 对外提供的编程动态库和静态库,与 include 目录中的头文件结合使用。
libexec 各个服务对用的 shell 配置文件所在的目录,可用于配置日志输出、启动参数(比如 JVM 参数)等基本信息。
sbin Hadoop 管理脚本所在的目录,主要包含 HDFS 和 YARN 中各类服务的启动/关闭脚本。
share Hadoop 各个模块编译后的 jar 包所在的目录,官方自带示例。

1.3 修改配置文件

Hadoop 配置文件分两类:默认配置文件和自定义配置文件。

(1)默认配置文件

文件名 存放位置
core-default.xml hadoop-common-3.1.3.jar/core-default.xml
hdfs-default.xml hadoop-hdfs-3.1.3.jar/hdfs-default.xml
yarn-default.xml hadoop-yarn-common-3.1.3.jar/yarn-default.xml
mapred-default.xml hadoop-mapreduce-client-core-3.1.3.jar/mapred-default.xml

(2)自定义配置文件

core-site.xml、hdfs-site.xml、yarn-site.xml、mapred-site.xml 四个配置文件存放在 $HADOOP_HOME/etc/hadoop 这个路径上,用户可以根据项目需求重新进行修改配置。

a. 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://hadoop102:8020</value>
    </property>

    <!-- 指定hadoop数据的存储目录 -->
    <property>
        <name>hadoop.tmp.dir</name>
        <value>/opt/module/hadoop-3.1.3/data</value>
    </property>

    <!-- 配置HDFS网页登录使用的静态用户为tree6x7 -->
    <property>
        <name>hadoop.http.staticuser.user</name>
        <value>tree6x7</value>
    </property>
</configuration>

b. 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>hadoop102:9870</value>
    </property>
    <!-- 2nn web端访问地址 -->
    <property>
        <name>dfs.namenode.secondary.http-address</name>
        <value>hadoop104:9868</value>
    </property>
</configuration>

c. 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>hadoop103</value>
    </property>

    <!-- 环境变量的继承 -->
    <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>
  
    <!-- 解决 Yarn 在执行程序遇到超出虚拟内存限制 Container 被 kill -->
    <property>
        <name>yarn.nodemanager.pmem-check-enabled</name>
        <value>false</value>
    </property>
    <property>
        <name>yarn.nodemanager.vmem-check-enabled</name>
        <value>false</value>
    </property>
</configuration>

d. 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>

修改后的文件分发到 hadoop103 和 hadoop104 上。

2. 启动集群

2.1 配置 workers

vim $HADOOP_HOME/etc/hadoop/workers

注意该文件中添加的内容结尾不允许有空格,文件中不允许有空行。

hadoop102
hadoop103
hadoop104

将 workers 同步到其他节点上。

2.2 启动集群

(1)如果集群是第一次启动,需要在 hadoop102 节点格式化 NameNode。

[liujiaqi@hadoop102 hadoop-3.1.3]$ hdfs namenode -format

(2)启动 HDFS

[liujiaqi@hadoop102 hadoop-3.1.3]$ sbin/start-dfs.sh 

(3)在配置了 ResourceManager 的节点(hadoop103)上启动 YARN

[liujiaqi@hadoop103 hadoop-3.1.3]$ sbin/start-yarn.sh

(4)通过 jps 查看启动情况

(5)Web 端查看 HDFS 的 NameNode

(6)Web 端查看 YARN 的 ResourceManager

3. 配置历史服务器

为了查看程序的历史运行情况,需要配置一下历史服务器。具体配置步骤如下:

(1)在 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>

(2)在 hadoop102 启动历史服务器

mapred --daemon start historyserver

(3)查看 JobHistory http://hadoop102:19888/jobhistory

4. 配置日志聚集

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

日志聚集功能可以方便的查看到程序运行详情,方便开发调试。

开启日志聚集功能具体步骤如下:

(1)配置 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>

(2)关闭 NodeManager 、ResourceManager 和 HistoryServer

[liujiaqi@hadoop102 hadoop-3.1.3]$ mapred --daemon stop historyserver
[liujiaqi@hadoop103 hadoop-3.1.3]$ ./sbin/stop-yarn.sh

(3)启动 NodeManager 、ResourceManage 和 HistoryServer

[liujiaqi@hadoop102 hadoop-3.1.3]$ mapred --daemon start historyserver
[liujiaqi@hadoop103 hadoop-3.1.3]$ ./sbin/start-yarn.sh

5. 集群启停方式

5.1 原生方式

各个模块分开启动/停止(配置 ssh 是前提):

  1. 整体启动/停止 HDFS:start-dfs.sh/stop-dfs.sh
  2. 整体启动/停止 YARN:start-yarn.sh/stop-yarn.sh

各个服务组件逐一启动/停止:

  1. 分别启动/停止 HDFS:hdfs --daemon start/stop namenode/datanode/secondarynamenode
  2. 分别启动/停止 YARN:yarn --daemon start/stop resourcemanager/nodemanager

5.2 自定义脚本

Hadoop 集群启停脚本(包含 HDFS、Yarn、Historyserver):myhadoop.sh

#!/bin/bash

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

case $1 in
"start")
        echo "======= Start Hadoop Cluster ======="
        echo "=> Start HDFS ..."
        ssh hadoop102 "/opt/module/hadoop-3.1.3/sbin/start-dfs.sh"
        echo "=> Start Yarn ..."
        ssh hadoop103 "/opt/module/hadoop-3.1.3/sbin/start-yarn.sh"
        echo "=> Start Historyserver ..."
        ssh hadoop102 "/opt/module/hadoop-3.1.3/bin/mapred --daemon start historyserver"
;;
"stop")
        echo "======= Close Hadoop Cluster ======="
        echo "=> Close Historyserver ..."
        ssh hadoop102 "/opt/module/hadoop-3.1.3/bin/mapred --daemon stop historyserver"
        echo "=> Close Yarn ..."
        ssh hadoop103 "/opt/module/hadoop-3.1.3/sbin/stop-yarn.sh"
        echo "=> Close HDFS ... "
        ssh hadoop102 "/opt/module/hadoop-3.1.3/sbin/stop-dfs.sh"
;;
*)
        echo "Input Args Error!"
;;
esac

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

#!/bin/bash
for host in hadoop102 hadoop103 hadoop104
do
    echo ">>>>>>>>>> $host <<<<<<<<<<"
    ssh $host jps
done

6. 集群时间同步

  • 如果服务器在公网环境(能连接外网),可以不采用集群时间同步,因为服务器会定期和公网时间进行校准;
  • 如果服务器在内网环境,必须要配置集群时间同步,否则时间久了,会产生时间偏差,导致集群执行任务时间不同步。

【需求】找一个机器作为时间服务器,所有的机器与这台集群时间进行定时的同步,生产环境根据任务对时间的准确程度要求周期同步。测试环境为了尽快看到效果,采用 1 分钟同步一次。

6.1 时间服务器配置

必须 root 用户

(1)查看 hadoop102 的 ntpd 服务状态和开机自启动状态

[root@hadoop102 bin]# su
[root@hadoop102 bin]# yum -y install ntp
[root@hadoop102 bin]# systemctl status ntpd
[root@hadoop102 bin]# systemctl start ntpd
[root@hadoop102 bin]# systemctl is-enabled ntpd

(2)修改 hadoop102 的 /etc/ntp.conf

# 1. 打开这行,授权 192.168.6.0-192.168.6.255 网段上的所有机器可以从这台机器上查询和同步时间;
# Hosts on local network are less restricted.
restrict 192.168.6.0 mask 255.255.255.0 nomodify notrap

# 2. 注掉下面这几行,集群在局域网中,不使用其他互联网上的时间;
# Use public servers from the pool.ntp.org project.
# Please consider joining the pool (http://www.pool.ntp.org/join.html).
# 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

# 3. 追加如下内容
server 127.127.1.0
fudge 127.127.1.0 stratum 10

(3)修改 hadoop102 的 /etc/sysconfig/ntpd 文件

# 让硬件时间与系统时间一起同步
SYNC_HWCLOCK=yes

(4)重新启动 ntpd 服务 sudo systemctl enable ntpd

(5)设置 ntpd 服务开机启动 systemctl enable ntpd

6.2 其他服务器配置

(1)关闭所有节点上 ntp 服务和自启动;

(2)在其他机器配置 1 分钟与时间服务器同步一次;

[liujiaqi@hadoop103 ~]$sudo crontab -e

*/1 * * * * /usr/sbin/ntpdate hadoop102

(3)修改任意机器时间 date -s "2021-9-11 11:11:11"

(4)1 分钟后查看机器是否与时间服务器同步 date

7. 补充

7.1 常用端口号说明

端口说明 Hadoop2.x hadoop3.x
NameNode 内部通信端口 8020 / 9000 8020 / 9000 / 9820
NameNode HTTP UI 50070 9870
MapReduce 查看执行任务端口 8088 8088
历史服务器通信端口 19888 19888

7.2 常见错误及解决方案

DataNode 和 NameNode 进程同时只能有一个工作问题分析

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

INFO client.RMProxy: Connecting to ResourceManager at hadoop10x/x.x.x.x:8032

防火墙没关或者没有启动 YARN。

标签:02,xml,Hadoop,yarn,hadoop,start,集群,3.1,hadoop102
From: https://www.cnblogs.com/liujiaqi1101/p/17492521.html

相关文章

  • 01-Hadoop概述
    1.大数据1.1概述指无法在一定时间范围内用常规软件工具进行捕捉、管理和处理的数据集合,是需要新处理模式才能具有更强的决策力、洞察发现力和流程优化能力的海量、高增长率和多样化的信息资产。大数据主要解决,海量数据的采集、存储和分析计算问题。按顺序给出数据存储单位......
  • CMU15445 (Fall 2020) 数据库系统 Project#4 - Concurrency Control 详解
    前言一个合格的事务处理系统,应该具备四个性质:原子性(atomicity)、一致性(consistency)、隔离性(isolation)和持久性(durability)。隔离性保证了一个活跃的事务(还没提交或者回滚)对数据库所做的系统对于其他的活跃事务是不可见的,看起来就像某一时刻就只有一个事务在操作数据库。然而完美的......
  • 用 ChatGPT 解答 2023年四川高考语文作文题 - 时间掌控的边界:自由与仆役的交织
    光阴似箭,距离我当年参加高考,已经23年过去了。虽然我接触ChatGPT还不到半年,但它已经深刻改变了我的工作和思考方式。我不知道ChatGPT的出现,是不是让我变得越来越懒,越来越离不开它了。今天看到群里讨论起今年四川高考语文作文题,忍不住让ChatGPT来完成了这篇作文。作文题......
  • 「JOISC 2023 Day4」 Security Guard
    subtask1因为\(1\les_i\le2\),所以每艘船上都至少有一个保安。令\(cnt_i\)表示第\(i\)艘船上的保安数,可以先将所有\(cnt_i+=1\),所有\(s_i-=1\)。经过这一次操作后,如果两艘船之间的小岛的\(s_i\)全为\(0\),表示这两艘船可以相互到达,即可将这两艘船合并成一艘,然后再做一......
  • 博客项目02
    项目名称:云博客屋项目简介:云博客屋软件就是记录日常生活点滴。一款跨平台的简单的快速的个人记事备忘工具,并且能够实现PC、移动设备和云端之间的信息同步,简介高效。将会议记录、日程安排、生活备忘、快乐趣事以及任何心情及突发灵感都可以记录到系统中。本项目包含用户模块、类......
  • lettuce+redisTemplate实现redis单击和集群的整合
    lettuce+redisTemplate实现redis单击和集群的整合Springboot整合redis是非常方便的,大致包含如下四部分pomstart相关jar的引入properties/yaml基础配置信息configbean的initbean的注入及使用如果遇到网上的自动装配的实例直接跳过吧,哪怕再小的公司,密码也会加密处理......
  • 2023.6.19 鲜花
    记得还在zsjz的时候hak说过,我和她还有两次机会见面,一次是APIO,一次是NOI。结果想不到吧两次我都没机会去现场。记得去年这个时候整个世界对我来说都是崭新的。一年过去了,我现在还能回忆起当时一些具体的事情,但是,又能怎样呢。感觉去年的我实在太不珍惜了,现在我恨不得回到那时......
  • 2023-6-19 #60 心跳沉沉试图召唤着哀伤
    ——泛音堂《破晓将至》每次看到时之歌Project都会觉得惋惜。这场CF是没有tester吗......
  • 2021数字中国创新大赛虎符网络安全赛-Writeup
    文章目录Web签到“慢慢做”管理系统Misc你会日志分析吗Web签到http://cn-sec.com/archives/313267.htmlUser-Agentt:zerodiumsystem("cat/flag");“慢慢做”管理系统根据题目提示,这里第一步登录应该利用一些字符串被md5($string,true)之后会形成如下,从而造成注入PSC:\Users\A......
  • 2021-DASCTF-三月赛-Writeup
    文章目录WEBBestDBez_serializebaby_flaskez_loginMISC签到简单的png隐写雾都孤儿小田的秘密Ascii_art问卷调查和团队的师傅们组队拿了个第十,师傅们带飞,我就是团队的MVP(MostVegetablePeople)WEBBestDB简单的SQL注入/?query=mochu"or/**/1=1%23/?query=mochu"order/**/by/**/......