Hadoop集群搭建

部署运行你感兴趣的模型镜像

Hadoop运行环境搭建

学习Hadoop的第一步一定是环境搭建,但是安装不是目的,通过安装认识Hadoop才是目的。

(一)部署模式

  1. 单机 (Standalone):默认情况下,Hadoop被配置成以非分布式模式运行的一个独立Java进程。这对调试非常有帮助。单机情况下,文件存储在Linux中!
  2. 伪分布式(Pesudo Distributed):Hadoop可以在单节点上以所谓的伪分布式模式运行,此时每一个Hadoop守护进程都作为一个独立的Java进程运行。文件存储在HDFS中
  3. 集群 (Cluster):会将N个节点组成Hadoop集群,主节点和从节点分开部署在不同的机器上
  4. HA高可用 (High Available):主要用于生产环境部署,即高可用(7*24小时不中断服务)。解决hadoop的单点故障

这里我们搭建的是完整的集群模式。

(二)安装前准备

因为Hadoop是由java编写的,他的运行一定离不开jdk,又因为hadoop是分布式的需要多个节点去操作,这时一定要保证多个节点的时间同步,我们首先来配置jdk和时钟同步。

1、jdk的安装
  1. 卸载现有jdk
  1. 查询是否安装java软件:

[root@node-1 ~]$ rpm -qa | grep java

  1. 如果安装的版本低于1.8,卸载该jdk,将第一步查出的jdk卸载。

[root@node-1 ~]$ rpm -e --nodeps 软件包

  1. 对用户offcn增加权限

[root@node-1 offcn]# visudo

## Same thing without a password

# %wheel        ALL=(ALL)       NOPASSWD: ALL

%offcn  ALL=(ALL)       NOPASSWD: ALL

  1. 切换用户offcn,在/opt/下创建目录

[offcn@node-1 ~]$ echo "softwaress apps" | xargs sudo mkdir

[offcn@node-1 ~]$ sudo chmod -R 777 /opt/

  1. 用文件传输工具将jdk导入到softwaress文件夹下面
  2. 在/home/offcn目录中查看软件包是否导入成功

[offcn@node softwaress]$ pwd

/opt/softwaress

[offcn@node softwaress]$ ll

total 190444

-rw-rw-r--. 1 offcn offcn 195013152 May 11  2022 jdk-8u212-linux-x64.tar.gz

[offcn@node softwaress]$

  1. 解压jdk到/opt/app目录下

[offcn@node-1 softwares]$ tar -zxvf jdk-8u212-linux-x64.tar.gz -C ../apps/

  1. 配置jdk环境变量
  1. 先获取jdk路径:

[offcn@node-1 jdk-1.8]$ pwd

/opt/apps/jdk-1.8

  1. 编辑内容/etc/profile

[offcn@node-1 softwares]$  sudo vim /etc/profile

# jdk-1.8

export JAVA_HOME=/opt/apps/jdk-1.8

export PATH=$PATH:$JAVA_HOME/bin 

  1. 让修改后的文件生效:

[offcn@node-1 jdk-1.8]$ source /etc/profile

  1. 测试jdk是否安装成功

[offcn@node jdk-1.8]$ java -version

java version "1.8.0_212"

Java(TM) SE Runtime Environment (build 1.8.0_212-b10)

Java HotSpot(TM) 64-Bit Server VM (build 25.212-b10, mixed mode)

[offcn@node jdk-1.8]$

2、时钟同步策略

   时间同步的方式:在集群中找一台机器,作为时间服务器,集群中其他机器与这台机器定时的同步时间,比如,每隔十分钟,同步一次时间。

配置时间同步实操:

  1. 时间服务器配置
  1. 检查ntp是否安装,若没有安装则使用yum install -y ntp进行安装

[offcn@node-1 ~]$sudo rpm -qa|grep ntp

ntpdate-4.2.6p5-28.el7.centos.x86_64

python-ntplib-0.3.2-1.el7.noarch

fontpackages-filesystem-1.44-8.el7.noarch

ntp-4.2.6p5-28.el7.centos.x86_64

[offcn@node-1 ~]$ sudo systemctl start ntpd

  1. 执行:

[offcn@node-1 ~]$ sudo systemctl enable ntpd

[offcn@node-1 ~]$ crontab -e

#编写脚本

*/10 * * * * sudo /usr/sbin/ntpdate -u ntp.aliyun.com

  1. 修改任意机器时间

[offcn@node-2 ~]$ sudo date -s "2008-08-08 08:08:08"

  1. 十分钟后查看机器是否与时间服务器同步

[offcn@node-2 ~]$ date

(三)安装配置

1、安装Hadoop

Hadoop下载地址:https://archive.apache.org/dist/hadoop/common/hadoop-3.2.1/

(1)将hadoop-3.2.1.tar.gz 上传到/opt/softwaress

[offcn@node-1 softwares]$ pwd

/opt/softwaress

[offcn@node-1 softwares]$ ll

总用量 531948

-rw-r--r--. 1 root root 359196911 3月   8 11:00 hadoop-3.2.1.tar.gz

-rw-r--r--. 1 root root 185515842 3月   5 16:22 jdk-8u144-linux-x64.tar.gz

    (2)将hadoop-3.2.1.tar.gz解压到/opt/apps

[offcn@node-1 softwares]$ tar -zxvf hadoop-3.2.1.tar.gz  -C ../apps/

[offcn@node-1 softwares]$ ll

-rw-r--r--. 1 root root 359196911 3月   8 11:00 hadoop-3.2.1.tar.gz

(3)将Hadoop添加到环境变量

[offcn@node-1 apps]$ sudo vim /etc/profile

# hadoop-3.2.1

export HADOOP_HOME=/opt/apps/hadoop-3.2.1

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

 (4)让修改后的文件生效

[offcn@node-1 apps]$ source /etc/profile

    (5)测试是否安装成功

[offcn@node-1 apps]$ hadoop version

Hadoop 3.2.1

2、集群规划

node-1

node-2

node-3

HDFS

NameNode

DataNode

DataNode

SecondaryNameNode

DataNode

YARN

NodeManager

ResourceManager

NodeManager

NodeManager

3、修改配置文件
(1)hadoop-env.sh

[offcn@node-1 hadoop]$ cd $HADOOP_HOME/etc/hadoop

[offcn@node-1 hadoop]$ pwd

/opt/apps/hadoop-3.2.1/etc/hadoop

[offcn@node-1 hadoop]$ vim hadoop-env.sh

# Java的环境变量

export JAVA_HOME=/opt/apps/jdk-1.8

(2)core-site.xml

[offcn@node-1 hadoop]$ vim core-site.xml

文件内容如下:

<!-- 指定NameNode的地址 -->

<property>

    <name>fs.defaultFS</name>

    <value>hdfs://node-1:8020</value>

</property>

<!-- 指定hadoop数据的存储目录 -->

<property>

    <name>hadoop.tmp.dir</name>

    <value>/opt/apps/hadoop-3.2.1/datas</value>

</property>

<!-- 配置HDFS网页登录使用的静态用户为offcn -->

<property>

    <name>hadoop.http.staticuser.user</name>

    <value>offcn</value>

</property>

<!-- 配置该offcn(superUser)允许通过代理访问的主机节点 -->

<property>

    <name>hadoop.proxyuser.offcn.hosts</name>

    <value>*</value>

</property>

<!-- 配置该offcn(superUser)允许通过代理用户所属组 -->

<property>

    <name>hadoop.proxyuser.offcn.groups</name>

    <value>*</value>

</property>

<!-- 配置该offcn(superUser)允许通过代理的用户-->

<property>

    <name>hadoop.proxyuser.offcn.users</name>

    <value>*</value>

</property>

(3)hdfs-site.xml

[offcn@node-1 hadoop]$ vim hdfs-site.xml

文件内容如下:

<!-- secondaryNamenode web端访问地址-->

<property>

    <name>dfs.namenode.secondary.http-address</name>

    <value>node-3:9868</value>

</property>

(4)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>node-2</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>

<!-- 开启日志聚集功能 -->

<property>

    <name>yarn.log-aggregation-enable</name>

    <value>true</value>

</property>

<!-- 设置日志聚集服务器地址 -->

<property> 

    <name>yarn.log.server.url</name> 

    <value>http://node-1:19888/jobhistory/logs</value>

</property>

<!-- 设置日志保留时间为7天 -->

<property>

    <name>yarn.log-aggregation.retain-seconds</name>

    <value>604800</value>

</property>

<!-- 防止和Doris的backend端口冲突 -->

<property>

<name>yarn.nodemanager.localizer.address</name>

    <value>0.0.0.0:8040</value>

</property>

(5)mapred-site.xml

[offcn@node-1 hadoop]$ vim mapred-site.xml

文件内容如下:

<!-- 指定MapReduce程序运行在Yarn上 -->

<property>

    <name>mapreduce.framework.name</name>

    <value>yarn</value>

</property>

<!-- 历史服务器端地址 -->

<property>

    <name>mapreduce.jobhistory.address</name>

    <value>node-1:10020</value>

</property>

<!-- 历史服务器web端地址 -->

<property>

    <name>mapreduce.jobhistory.webapp.address</name>

    <value>node-1:19888</value>

</property>

(6)配置workers(去掉localhost,添加如下内容)

[offcn@node-1 hadoop]$ vim workers

node-1

node-2

node-3

远程分发:

cd /opt/apps/

scp -r hadoop-3.2.1/ node-2:$PWD

scp -r hadoop-3.2.1/ node-3:$PWD

sudo scp /etc/profile node-2:/etc/

sudo scp /etc/profile node-3:/etc/

source /etc/profile

hadoop version

(四)集群启停及测试

1、单点启动

(1)如果集群是第一次启动,需要格式化NameNode(格式化只进行一次!!!)

在格式化时,要保证一切正常,不要出现错误、异常、或者提示让选择yes或者no;如果出现错误等情况,把所有的配置检查一遍确认无误后,将hadoop安装目录下的data、pid、logs目录删除重新格式化。

[offcn@node-1 hadoop-3.2.1]$ hadoop namenode -format

  1. 在node-1上启动NameNode

hdfs --daemon start namenode

hdfs --daemon start datanode

hdfs --daemon start secondarynamenode

       (5)启动yarn进程

yarn --daemon start resourcemanager

yarn --daemon start nodemanager

mapred --daemon start historyserver

2、集群群起启动

(1)如果集群是第一次启动,需要格式化NameNode(格式化只进行一次!!!),操作方式详见单点启动

(2)启动HDFS

[offcn@node-1 hadoop-3.2.1]$ sbin/start-dfs.sh

Starting namenodes on [node-1]

Starting datanodes

Starting secondary namenodes [node-3]

(3)在配置了ResourceManager的节点(node-2)启动YARN

[offcn@node-2 hadoop-3.2.1]$ sbin/start-yarn.sh

Starting resourcemanager

Starting nodemanagers

3、查看Web界面

       (1)查看Hdfs的Web界面

浏览器输入地址:http://node-1:9870/

您可能感兴趣的与本文相关的镜像

Linly-Talker

Linly-Talker

AI应用

Linly-Talker是一款创新的数字人对话系统,它融合了最新的人工智能技术,包括大型语言模型(LLM)、自动语音识别(ASR)、文本到语音转换(TTS)和语音克隆技术

<think>好的,用户想了解如何搭建Hadoop集群的详细步骤和配置。首先,我需要回忆之前学过的Hadoop集群搭建知识,确保步骤正确。记得Hadoop集群通常分为完全分布式模式,需要多台机器,比如hadoop102、hadoop103、hadoop104这样的命名。用户提供的引用里提到了设置这些节点,并测试SSH连接,还有上传安装包。可能这些是关键的步骤。 接下来,我应该按照逻辑分步骤讲解。首先准备环境,包括服务器、Java安装、主机名和hosts文件的配置,以及SSH免密登录的设置。这些都是搭建集群的基础。然后,安装Hadoop,解压安装包,配置环境变量。接下来是核心的配置文件修改,比如hadoop-env.sh、core-site.xml、hdfs-site.xml、mapred-site.xml、yarn-site.xml以及workers文件。每个配置文件的作用需要简要说明,比如core-site.xml设置NameNode地址,hdfs-site.xml配置副本数等。 配置完成后,需要同步到其他节点,这里可以用scp命令或者rsync。然后初始化HDFS,启动集群,最后验证是否成功,比如jps查看进程,或者访问Web界面。可能用户在实际操作中会遇到问题,比如SSH连接失败,端口占用,或者配置文件错误,这些常见问题应该提及解决方案。 另外,用户的问题可能涉及到具体的配置参数,比如副本数设置成多少合适,或者资源管理器的配置,这些需要根据集群规模给出建议。比如小型集群副本数可以设为2,但生产环境通常3。还有安全模式的问题,可能需要关闭防火墙或者配置SELinux。 需要确保所有的命令和路径都是正确的,比如JAVA_HOME的路径是否正确,Hadoop的安装目录是否一致。同时,用户可能需要知道如何验证集群是否正常工作,比如运行一个测试的MapReduce作业,或者检查日志文件。 最后,生成相关问题的时候,应该围绕用户可能进一步关心的问题,比如配置参数优化、添加节点、安全配置、性能调优等。这些能帮助用户更深入理解集群管理和维护。</think>### Hadoop集群搭建步骤详解 #### 一、环境准备(3节点示例) 1. **服务器规划** - hadoop102(NameNode + DataNode) - hadoop103(ResourceManager + DataNode) - hadoop104(SecondaryNameNode + DataNode) 2. **基础配置** - 所有节点安装JDK 8+并配置环境变量: ```bash export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64 ``` - 配置主机名和/etc/hosts文件: ```bash 192.168.1.102 hadoop102 192.168.1.103 hadoop103 192.168.1.104 hadoop104 ``` - 配置SSH免密登录: ```bash ssh-keygen -t rsa ssh-copy-id hadoop102 ssh-copy-id hadoop103 ssh-copy-id hadoop104 ``` #### 二、Hadoop安装与配置 1. **解压安装包** ```bash tar -zxvf hadoop-3.3.6.tar.gz -C /opt/module/ ``` 2. **配置环境变量** ```bash export HADOOP_HOME=/opt/module/hadoop-3.3.6 export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin ``` 3. **修改核心配置文件** - `etc/hadoop/hadoop-env.sh`: ```bash export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64 ``` - `etc/hadoop/core-site.xml`: ```xml <configuration> <property> <name>fs.defaultFS</name> <value>hdfs://hadoop102:8020</value> </property> </configuration> ``` - `etc/hadoop/hdfs-site.xml`: ```xml <configuration> <property> <name>dfs.replication</name> <value>3</value> </property> </configuration> ``` #### 三、集群同步与启动 1. **分发配置到所有节点** ```bash scp -r /opt/module/hadoop-3.3.6 hadoop103:/opt/module/ scp -r /opt/module/hadoop-3.3.6 hadoop104:/opt/module/ ``` 2. **初始化HDFS** ```bash hdfs namenode -format ``` 3. **启动集群** ```bash start-dfs.sh # 启动HDFS start-yarn.sh # 启动YARN ``` #### 四、验证集群状态 1. **进程验证** ```bash jps # hadoop102应显示NameNode/DataNode # hadoop103应显示ResourceManager/NodeManager ``` 2. **Web界面验证** - HDFS状态:`http://hadoop102:9870` - YARN状态:`http://hadoop103:8088` #### 五、常见问题解决 1. **SSH连接失败** - 检查防火墙状态:`systemctl stop firewalld` - 验证公钥是否完整复制到`~/.ssh/authorized_keys` 2. **端口冲突** - 使用`netstat -tunlp | grep 8020`检查默认端口占用情况 3. **HDFS无法格式化** - 删除所有节点的`/tmp/hadoop-*`目录后重试[^1]
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值