Hadoop集群搭建

Hadoop集群搭建

Hadoop集群简介

Hadoop集群包括两个集群:HDFS集群、YARN集群

  • 两个集群逻辑上分离、通常物理上在一起
  • 两个集群都是标准的主从架构集群

HDFS集群海量数据数据的存储,集群中的角色主要有:

NameNode、DataNode、SecondaryNameNode

YARN集群负责海量数据运算时的资源调度,集群中的角色主要有:

ResourceManager、NodeManager

image-20240314211135142

Mapreduce是一个分布式运算编程框架,是应用程序开发包,由用户按照编程规范进行程序开发,后打包运行在HDFS集群上,并且受到YARN集群的资源调度管理

  • MapReduce 是计算框架、代码层面的组件,没有集群的说法

Hadoop部署模式

Hadoop部署方式分为三种,Standalone mode(独立模式)、Pseudo-Distributed mode(伪分布式模式)、Cluster mode(群集模式),其中前两种都是在单机部署。

image-20240314212236879

独立模式又称为单机模式,仅1个机器运行1个java进程,主要用于调试。

伪分布模式也是在1个机器上运行HDFS的NameNode和DataNode、YARN的 ResourceManger和NodeManager,但分别启动单独的java进程,主要用于调试。

集群模式主要用于生产环境部署。会使用N台主机组成一个Hadoop集群。这种部署模式下,主节点和从节点会分开部署在不同的机器上。

Hadoop集群搭建

Step1:集群角色规划

  • 角色规划的准则

    • 根据软件工作特性和服务器硬件资源情况合理分配
    • 比如依赖内存工作的NameNode是不是部署在大内存机器上?
  • l角色规划注意事项

    • 资源上有抢夺冲突的,尽量不要部署在一起
    • 工作上需要互相配合的。尽量部署在一起

本机角色规划:

服务器 运行角色
node1.itcast.cn namenode datanode resourcemanager nodemanager
node2.itcast.cn secondarynamenode datanode nodemanager
node3.itcast.cn datanode nodemanager

Step2:服务器基础环境准备

具体查看:《大数据集群服务器环境配置与搭建》

  1. 主机名 (3台机器)

    vim /etc/hostname

  2. Hosts映射(3台机器)

    vim /etc/hosts

  3. 防火墙关闭(3台机器)

    systemctl stop firewalld.service #关闭防火墙

    systemctl disable firewalld.service #禁止防火墙开启自启

  4. ssh免密登录(node1执行->node1|node2|node3)

    ssh-keygen #4个回车 生成公钥、私钥

    ssh-copy-id node1、ssh-copy-id node2、ssh-copy-id node3 #

  5. 集群时间同步(3台机器)

    yum -y install ntpdate

    ntpdate ntp4.aliyun.com

  6. JDK 1.8安装(3台机器)

Step3:上传安装包、解压安装包

  • 创建统一工作目录(3台机器)

    mkdir -p /export/server/ #软件安装路径

    mkdir -p /export/data/ #数据存储路径

    mkdir -p /export/software/ #安装包存放路径

    image-20240315221151433

  • 上传、解压安装包(node1)

#上传安装包到/export/server 解压
cd /export/server
tar zxvf hadoop-3.3.0-Centos7-64-with-snappy.tar.gz
  • 所有机器都需要配置好路径,等配置文件之后,在scp到各个机器上

Step4:Hadoop安装包目录

ll /export/server/hadoop-3.3.0
目录 说明
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包所在的目录,官方自带示例

配置文件概述

  • 官网文档:https://hadoop.apache.org/docs/r3.3.0/

  • 第一类1个:hadoop-env.sh

  • 第二类4个:xxxx-site.xml ,site表示的是用户定义的配置,会覆盖default中的默认配置。

    • core-site.xml 核心模块配置
    • hdfs-site.xml hdfs文件系统模块配置
    • mapred-site.xml MapReduce模块配置
    • yarn-site.xml yarn模块配置
  • 第三类1个:workers

  • 所有的配置文件目录:/export/server/hadoop-3.3.0/etc/hadoop

Step:编辑Hadoop配置文件

  • hadoop-env.sh
export JAVA_HOME=/export/server/jdk1.8.0_241

#文件最后添加
export HDFS_NAMENODE_USER=root
export HDFS_DATANODE_USER=root
export HDFS_SECONDARYNAMENODE_USER=root
export YARN_RESOURCEMANAGER_USER=root
export YARN_NODEMANAGER_USER=root 
  • core-site.xml
<!-- 设置默认使用的文件系统 Hadoop支持file、HDFS、GFS、ali|Amazon云等文件系统 -->
<property>
	<name>fs.defaultFS</name>
    <value>hdfs://node1:8020</value>
</property>

<!-- 设置Hadoop本地保存数据路径 -->
<property>    
	<name>hadoop.tmp.dir</name>
    <value>/export/data/hadoop-3.3.0</value>
</property>

<!-- 设置HDFS web UI用户身份 -->
<property>
	<name>hadoop.http.staticuser.user</name>
    <value>root</value>
</property>

<!-- 整合hive 用户代理设置 -->
<property>
	<name>hadoop.proxyuser.root.hosts</name>
    <value>*</value>
</property>

<property>
	<name>hadoop.proxyuser.root.groups</name>
    <value>*</value>
</property>
<!-- 垃圾桶文件保存时间 -->
<property>
	<name>fs.trash.interval</name>
    <value>1440</value>
</property>

  • hdfs-site.xml
<!-- 设置SNN进程运行机器位置信息 -->
<property>
    <name>dfs.namenode.secondary.http-address</name>
    <value>node2:9868</value>
</property>
  • mapred-site.xml
<!-- 设置MR程序默认运行模式: yarn集群模式 local本地模式 -->
<property>
    <name>mapreduce.framework.name</name>
    <value>yarn</value>
</property>

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

<property>
    <name>yarn.app.mapreduce.am.env</name>
    <value>HADOOP_MAPRED_HOME=${HADOOP_HOME}</value>
</property>

<property>
    <name>mapreduce.map.env</name>
    <value>HADOOP_MAPRED_HOME=${HADOOP_HOME}</value>
</property>

<property>
    <name>mapreduce.reduce.env</name>
    <value>HADOOP_MAPRED_HOME=${HADOOP_HOME}</value>
</property>
  • yarn-site.xml
<!-- 设置YARN集群主角色运行机器位置 -->
<property>
    <name>yarn.resourcemanager.hostname</name>
    <value>node1</value>
</property>

<property>
    <name>yarn.nodemanager.aux-services</name>
    <value>mapreduce_shuffle</value>
</property>

<!-- 是否将对容器实施物理内存限制 -->
<property>
    <name>yarn.nodemanager.pmem-check-enabled</name>
    <value>false</value>
</property>

<!-- 是否将对容器实施虚拟内存限制。 -->
<property>
    <name>yarn.nodemanager.vmem-check-enabled</name>
    <value>false</value>
</property>

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

<!-- 设置yarn历史服务器地址 -->
<property>
    <name>yarn.log.server.url</name>
    <value>http://node1:19888/jobhistory/logs</value>
</property>

<!-- 保存的时间7天 -->
<property>
    <name>yarn.log-aggregation.retain-seconds</name>
    <value>604800</value>
</property>
  • workers
node1.itcast.cn
node2.itcast.cn
node3.itcast.cn

step6:分发同步安装包

  • 在node1机器上将Hadoop安装包scp同步到其他机器
cd /export/server

scp -r hadoop-3.3.0 root@node2:$PWD
scp -r hadoop-3.3.0 root@node3:$PWD

Step7:配置Hadoop环境变量

  • 在node1上配置Hadoop环境变量

    vim /etc/profile

    export HADOOP_HOME=/export/server/hadoop-3.3.0

    export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin

  • 将修改后的环境变量同步其他机器上

​ scp /etc/profile root@node2:/etc/

scp /etc/profile root@node3:/etc/
  • 重新加载环境变量 验证是否生效(3台机器)

​ source /etc/profile

hadoop     #验证环境变量是否生效

Step8:NameNode format (格式化操作)

  • 首次启动HDFS时,必须对其进行格式化操作
  • format本质上是初始化工作,进行HDFS清理和准备工作
  • 命令:hdfs namenode -format
  • 注意:若是在启动HDFS以后还需要格式化namenode,格式化NameNode前,先关闭掉NameNode节点和DataNode节点,然后一定要删除hadoop目录下的data文件夹和log日志文件夹。最后再进行格式化。

Hadoop集群启动关闭

手动逐个进程启停

  • 每台机器上每次手动启动关闭一个角色进程,可以精准控制每个进程启停,避免群起群停
  • HDFS集群
#hadoop2.x版本命令
hadoop-daemon.sh start|stop  namenode|datanode|secondarynamenode
#hadoop3.x版本命令
hdfs --daemon start|stop namenode|datanode|secondarynamenode
  • YARN集群
#hadoop2.x版本命令
yarn-daemon.sh start|stop resourcemanager|nodemanager
#hadoop3.x版本命令
yarn --daemon start|stop resourcemanager|nodemanager

案例:(在这次案例中)

在主节点(node1)上使用以下命令启动HDFS NameNode:
$HADOOP_HOME/bin/hdfs --daemon start namenode
在每个从节点上使用以下命令启动HDFS DataNode:
$HADOOP_HOME/bin/hdfs --daemon start datanode
在node2上使用以下命令启动HDFS SecondaryNameNode:
$HADOOP_HOME/bin/hdfs --daemon start secondarynamenode

在主节点上(node1)使用以下命令启动YARN ResourceManager:
$HADOOP_HOME/bin/yarn --daemon start resourcemanager
在每个从节点上使用以下命令启动YARN nodemanager:
$HADOOP_HOME/bin/yarn --daemon start nodemanager

shell脚本一键启停

  • 在node1上,使用软件自带的shell脚本一键启动。前提:配置好机器之间的SSH免密登录和workers文件

  • HDFS集群

    start-dfs.sh

    stop-dfs.sh

  • YARN集群

    start-yarn.sh

    stop-yarn.sh

  • Hadoop集群

    start-all.sh

    stop-all.sh

进程状态、日志查看

  • 启动完毕之后可以使用jps命令查看进程是否启动成功

image-20240315225648755

  • Hadoop启动日志路径:/export/server/hadoop-3.3.0/logs/

image-20240315225716690

posted @   七落安歌  阅读(537)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
点击右上角即可分享
微信分享提示