超详细的Hadoop集群部署

article/2025/8/28 9:47:13

本文建立在已经把虚拟机ip环境等已经下载好情况下。
那么,直接开始今天的正题:

搭建集群

环境准备

这里提供两种思路:一种是将一台直接搭建好,后面的克隆或者copy虚拟机
一种是3台并进,多次进行虚拟机之间文件互传,各有利弊,第一种方式容易漏改ip等问题,第二种方式简单明了,一遍过手,就是步骤稍微多一点,这里采用第二种方式:

1、配置服务器(我这里是以3台为例)

1个主节点:hadoop1(192.168.183.161),2个(从)子节点,hadoop2(192.168.183.162),hadoop13(192.168.183.163)

2、配置主节点名hadoop1(192.168.183.161)

在命令行输入: vi /etc/sysconfig/network

添加内容:
NETWORKING=yes
HOSTNAME=hadoop1

配置两台子节点名(192.168.102.136)和(192.168.102.137):
vi /etc/sysconfig/network
添加内容:
NETWORKING=yes
HOSTNAME=hadoop2

vi /etc/sysconfig/network
添加内容:
NETWORKING=yes
HOSTNAME=hadoop3

这块再多改一个东西 vi /etc/hostname

加上主机名 hadoop1,每个节点都执行各自的主机名

注意vi /etc/sysconfig/network 记得去掉 #号那一行,有时候会因为这个改不成功

3、配置hosts

打开主节点的hosts文件,将文件的前两行注释掉 (注释当前主机的信息)并在文件中添加所有hadoop集群的主机息。

在命令行输入: vi /etc/hosts
添加3台服务器的节点名信息(这个也就是后面用的映射)

192.168.183.161   hadoop1
192.168.183.162   hadoop2
192.168.183.163   hadoop3

保存之后,将主节点的hosts分别拷贝到其他两个子节点
命令行分别输入:
scp /etc/hosts root@192.168.183.162:/etc/
scp /etc/hosts root@192.168.183.163:/etc/
话不多说 重启吧,然后我们继续,可以看到主机名已经更改了

配置DNS请看这一篇 :Centos7配置IP地址和DNS_GakingChen的博客-CSDN博客_centos配置dns

4、关闭防火墙(每一台机器上面执行)

a.查看防火墙状态
firewall-cmd --state

b.停止firewall
systemctl stop firewalld.service

c.禁止firewall开机启动
systemctl disable firewalld.service

5、时间同步

命令行输入:yum install ntp 下载ntp插件 ,
下载完成后 命令行输入:ntpdate -u ntp1.aliyun.com
然后命令行输入:date
如果出现如下情况表示配置成功:

6、配置ssh无密码访问(这步很关键,请用心)

这步的核心原理是:将每台机器的公钥全部放至同一个文件中(authorized_keys

生成公钥密钥对

在每个节点上分别执行:
命令行输入:ssh-keygen -t rsa
一直按回车直到生成结束
执行结束之后每个节点上的~/.ssh/目录下生成了两个文件 id_rsa 和 id_rsa.pub

cd  ~/.ssh/
其中前者为私钥,后者为公钥

这块用个简单的方法,以前的有点复杂:

在每台机器上执行这个命令:

ssh-copy-id -i ~/.ssh/id_rsa.pub hadoop1

ssh-copy-id -i ~/.ssh/id_rsa.pub hadoop2

ssh-copy-id -i ~/.ssh/id_rsa.pub hadoop3

3台都执行,会自动把密钥加载到 authorized_keys 文件中


在主节点上执行:
命令行输入:cp id_rsa.pub authorized_keys
将子节点的公钥拷贝到主节点并添加进authorized_keys

将两个子节点的公钥拷贝到主节点上
分别在两个子节点上执行:

scp /root/.ssh/id_rsa.pub   root@hadoop1:/root/.ssh/id_rsa_hadoop2.pub
scp /root/.ssh/id_rsa.pub   root@hadoop1:/root/.ssh/id_rsa_hadoop3.pub

然后在主节点上,将拷贝过来的两个公钥合并到authorized_keys文件中去
主节点上执行:
cat id_rsa_hadoop2.pub>> authorized_keys
cat id_rsa_hadoop3.pub>> authorized_keys

将主节点的authorized_keys文件分别替换子节点的authorized_keys文件,此时主节点上面的内容已经是最全的了,
主节点上用scp命令将authorized_keys文件拷贝到子节点的相应位置,

scp authorized_keys root@hadoop2:/root/.ssh/
scp authorized_keys root@hadoop3:/root/.ssh/

最后测试是否配置成功

这块有可能会ssh 失败,还需要输密码:可做以下操作:

要保证:~/.ssh需要是700权限
authorized_keys需要是644权限chmod 700 ~/.ssh
chmod 644 ~/.ssh/authorized_keys

在hadoop1上分别执行
ssh hadoop2
ssh hadoop2

相互之前也要能ssh成功
能正确跳转到两台子节点的操作界面即可,同样在每个子节点通过相同的方式登录主节点和其他子节点也能无密码正常登录就表示配置成功。

这里的配置方式可以有多种操作步骤,最终目的是每个节点上的/root/.ssh/authorized_keys文件中都包含所有的节点生成的公钥内容。到此免密已经OK

7、jdk安装

配置环境变量, 编辑profile文件:
vi /etc/profile
在profile文件末尾添加以下代码:

export JAVA_HOME=/usr/local/jdk1.8.0_191
export JRE_HOME=$JAVA_HOME/jre
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=$JAVA_HOME/lib:$JRE_HOME/lib

保存,source /etc/profile 生效配置文件
测试是否安装成功:java -version

至此环境已经OK,开始开心的安装hadoop集群

8、安装hadoop

解压安装包:tar -zxvf hadoop-2.7.7.tar.gz

tar -zxvf hadoop-2.7.0.tar.gz -C /home/software/soft/ 解压到指定目录
cp -r jdk1.8.0_11/ /home/software/soft/ 复制到指定目录

完事儿后配置环境变量:
vi /etc/profile
在末尾添加:

export HADOOP_HOME=/usr/local/hadoop-2.7.7
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin

保存后使新编辑的profile生效:source /etc/profile

hadoop配置
修改文件:
1:hadoop-env.sh ——>jdk
2:yarn-env.sh ——>jdk
3:core-site.xml
4:hdfs-site.xml
5:mapred-site.xml
6:yarn-site.xml
7:slaves ——>子节点,节点
其中hadoop-env.sh和yarn-env.sh里面都要添加jdk,接下来一个一个来

hadoop-env.sh中

添加如下代码:   export JAVA_HOME=/home/usr/java/jdk1.8.0_11       到如下位置:

yarn-env.sh中

添加如下代码:   export JAVA_HOME=/home/usr/java/jdk1.8.0_11       到如下位置:

core-site.xml中

添加如下代码:

<configuration><property><name>fs.defaultFS</name><value>hdfs://hadoop1:9000</value></property><property><name>io.file.buffer.size</name><value>131072</value></property><property><name>hadoop.tmp.dir</name><value>file:/home/usr/java/hadoop-2.7.0/temp</value></property><property><name>hadoop.proxyuser.root.hosts</name><value>*</value></property><property><name>hadoop.proxyuser.root.groups</name><value>*</value></property>
</configuration>

注:上面代码中file后的路径下的temp文件夹需要自己创建

此处做个更新:hadoop.tmp.dir 这个参数配置的目录建议放在hadoop整体目录之外的某个地方,扩容时scp的时候会很方便 --20221026

hdfs-site.xml中

添加如下代码:

此处做个更新:dfs.namenode.name.dir 、dfs.datanode.data.dir 这两个参数配置的目录建议放在hadoop整体目录之外的某个地方,扩容时scp的时候会很方便,否则会比较麻烦 --20221026

<configuration><property><name>dfs.namenode.secondary.http-address</name><value>hadoop1:9001</value></property><!-- 设置namenode.name目录 --><property><name>dfs.namenode.name.dir</name><value>file:/home/usr/java/hadoop-2.7.0/dfs/name</value></property><!-- 设置namenode.data目录 --><property><name>dfs.datanode.data.dir</name><value>file:/home/usr/java/hadoop-2.7.0/dfs/data</value></property><!-- 设置副本个数 --><property><name>dfs.replication</name><value>2</value></property><!-- 开启webHDFS --><property><name>dfs.webhdfs.enabled</name><value>true</value></property><property><name>dfs.permissions</name><value>false</value></property><property><name>dfs.web.ugi</name><value>supergroup</value></property>
</configuration>

注:上面代码中file后的路径下的/dfs/data文件夹需要自己创建

mapred-site.xml中

(注意要将mapred-site.xml.template重命名为 .xml的文件   Mv mapred-site.xml.template mapred-site.xml)
<configuration><property><name>mapreduce.framework.name</name><value>yarn</value></property><property><name>mapreduce.jobhistory.address</name><value>hadoop1:10020</value></property><property><name>mapreduce.jobhistory.webapp.address</name><value>hadoop1:19888</value></property>
</configuration>

yarn-site.xml中

添加如下代码:

<configuration><property><name>yarn.nodemanager.aux-services</name><value>mapreduce_shuffle</value></property><property><name>yarn.nodemanager.aux-services.mapreduce.shuffle.class</name><value>org.apache.hadoop.mapred.ShuffleHandler</value></property><property><name>yarn.resourcemanager.address</name><value>hadoop1:8032</value></property><property><name>yarn.resourcemanager.scheduler.address</name><value>hadoop1:8030</value></property><property><name>yarn.resourcemanager.resource-tracker.address</name><value>hadoop1:8031</value></property><property><name>yarn.resourcemanager.admin.address</name><value>hadoop1:8033</value></property><property><name>yarn.resourcemanager.webapp.address</name><value>hadoop1:8088</value></property>
</configuration>

slaves中

修改成:
hadoop2
hadoop3

主节点上面该配的已经配完,下面是copy子节点的了

主节点上执行:
scp -r /home/usr/java/hadoop-2.7.0     root@hadoop2:/home/usr/java
scp -r /home/usr/java/hadoop-2.7.0     root@hadoop3:/home/usr/java

拷贝profile到子节点

主节点上执行:
scp /etc/profile root@hadoop2:/etc/
scp /etc/profile root@hadoop3:/etc/

在两个子节点上分别使新的profile生效:

source /etc/profile

格式化主节点的namenode

主节点上进入hadoop目录
然后执行:
./bin/hadoop namenode -format
新版本用下面的语句不用hadoop命令了
./bin/hdfs namenode -format
提示:successfully formatted表示格式化成功

记得加上这个配置,可避免集群环境停不下来的问题:

Spark集群无法停止的原因分析和解决(Hadoop集群也有这个问题)_Alex_81D的博客-CSDN博客

此时已经完成:

启动hadoop

主节点上在hadoop目录下执行:
./sbin/start-all.sh

主节点上jps进程如下:
NameNode
SecondaryNameNode
ResourceManager

每个子节点上的jps进程如下:
DataNode
NodeManager

如果这样表示hadoop集群配置成功

此时整个集群完成!!!!是不是很简单

------------------------------------------------------------------------------

备注:动态扩容的方法:参考博主另一篇文章

Hadoop集群增加节点不删数据详细操作步骤_Alex_81D的博客-CSDN博客


http://chatgpt.dhexx.cn/article/WOaOrcKr.shtml

相关文章

Hadoop集群格式化

hadoop搭建过程中需要进行格式化&#xff0c;而在进行文件配置过程中难免会出错&#xff0c;导致格式化后集群不能正常启动&#xff0c; 想要重新格式化&#xff0c;删掉hadoop-2.10.1目录下的tmp文件夹: rm -rf tmp hadoop版本因人而异&#xff0c;之后重新进行格式化即可&am…

Hadoop集群的启动

在首次启动Hadoop之前还需要进行一些配置工作 我们是在Linux集群上安装Hadoop集群 Linux中对大小写敏感&#xff01; 1. 配置操作系统的环境变量 注意&#xff0c;一说Linux操作系统的环境变量 配置文件就在/home/wangguowei下的.bash.profile中 将hadoop的家目录写好 并引入…

搭建Hadoop集群

实验二 搭建Hadoop集群 1 实验目的 搭建Hadoop集群&#xff1b;掌握Linux分发&#xff1b;掌握Hadoop启动和关闭。 2 实验内容 搭建Hadoop集群&#xff0c;配置etc/下的配置文件&#xff0c;设置主从节点&#xff0c;设置Hadoop环境变量&#xff0c;分发到其他电脑&#xf…

5. Hadoop集群操作

5. Hadoop集群操作 5.1 启动Hadoop集群 5.1.1 格式化文件系统 如果集群是第一次启动&#xff0c;需要在hadoop102节点格式化NameNode。 注意&#xff1a;格式化NameNode&#xff0c;会产生新的集群id&#xff0c;导致NameNode和DataNode的集群id不一致&#xff0c;集群找不到…

hadoop集群迁移

集群迁移 主要是要找到两个集群中active状态的namenode 集群迁移不同于服务器之间的文件发送&#xff0c;在hdfs中&#xff0c;文件是以块的形式&#xff0c;只可以通过namenode访问文件&#xff0c;所以迁移时需要通过hadoop命令 主要命令是distcp distcp有很多参数&#xf…

Hadoop集群实验

目录 1.实验介绍 2.安装前准备 3.实验环境搭建 4.安装Hadoop 4.1下载Hadoop 4.2修改hadoop配置文件 5.启动Hadoop集群 6.Hadoop测试 1.实验介绍 Hadoop是一个由Apache基金会所开发的分布式系统基础架构。用户可以在不了解分布式底层细节的情况下&#xff0c;开发分布式…

Hadoop集群部署

Hadoop集群部署 一、环境准备二、在hadoop102中安装jdk三、在 hadoop102 安装 Hadoop安装hadoop查看 Hadoop 目录结构 四、编写集群分发脚本1. scp&#xff08;secure copy&#xff09;安全拷贝2.rsync远程同步工具3.xsync集群分发脚本 五、ssh免密登录1.配置ssh2.免密配置 六、…

Hadoop集群简介

Hadoop集群整体概述&#xff1a; Hadoop集群包括两个集群&#xff1a;HDFS集群、YARN集群 两个集群逻辑上分离(两个集群互相之间没有依赖、互不影响)、通常物理上在一起(某些角色进程往往部署在同一台物理服务器上) 两个集群都是标准的主从架构集群 MapReduce算是集群吗&…

hadoop集群

一、概念 Hadoop是由java语言编写的&#xff0c;在分布式服务器集群上存储海量数据并运行分布式分析应用的开源框架&#xff0c;其核心部件是HDFS与MapReduce。HDFS是一个分布式文件系统&#xff0c;类似mogilefs&#xff0c;但又不同于mogilefs&#xff0c;hdfs由存放文件元数…

Hadoop入门详解以及Hadoop集群搭建

一、Hadoop概念 hadoop是一个由Apache基金会所开发的分布式系统基础架构。用户可以在不了解分布式底层细节的情况下&#xff0c;开发分布式程序。hadoop充分利用了集群的威力进行高速运算和存储。Hadoop实现了一个分布式文件系统&#xff08;Distributed File System&#xff…

把Redis 设置成服务

设置Redis服务 上面虽然安装启动了Redis&#xff0c;但是一旦关闭cmd窗口&#xff0c;redis就关闭了,为了我们日后开发测试的便利&#xff0c;我们当然要把它设置成windows服务项。 打开cmd命令窗口&#xff0c;切换到Redis目录&#xff0c;输入如下命令&#xff1a; redis-…

配置redis,对外服务

前言 在服务器安装完redis之后&#xff0c;别的机器想要通过IP和端口连接Redis服务器是连接不上的&#xff0c;因此需要配置redis对外服务。 一、打开redis配置文件 vi /etc/redis/redis.conf二、修改bind绑定的地址 三、关闭保护模式 四、重启redis服务 service redis res…

Redis 服务监控

Redis现在在很多公司中应用已经很广泛了&#xff0c;但是如何监控redis&#xff0c;实时的观察redis的性能&#xff0c;下面就关于Redis的常用监控介绍一下。 一、使用redis自带的info命令和monitor命令 现在常见的监控方案基本上都是使用redis自带的info命令和monitor命令获取…

Windows下将Redis设置为服务

如果下载的是免安装的 Redis &#xff0c;解压文件后运行 Redis-server.exe就可开启服务 但是&#xff0c;这个窗口不能关闭&#xff0c;否则服务也会随之关闭&#xff0c;过于麻烦&#xff0c;也不方便操作 所以&#xff0c;我们可以将 redis 设置为一种服务&#xff0c;可利…

【Windows】Redis集群部署

集群是如何进行工作的 Redis采用哈希槽来处理数据与节点之间的映射关系&#xff0c;一个集群共有16384 个哈希槽&#xff0c;每个key通过 CRC16算法计算出一个16bit的值&#xff0c;再对16384取模&#xff0c;得到对应的哈希槽&#xff0c;集群通过维护哈希槽与节点的关系来得…

redis设置服务

设置服务 可以看到如果我们启动redis服务的话&#xff0c;每次都要进入到安装目录&#xff0c;这样是不是很繁琐&#xff0c;所以我们将redis做成一个服务&#xff0c;我们直接启动。 首先将utils/redis_init_script文件复制到/etc/init.d下&#xff0c;同时易名为redis。执行命…

Redis 服务管理

对Redis服务器的管理可以使用redis提供的服务命令&#xff0c;也可以借助一些管理软件&#xff0c;如&#xff1a;phpRedisAdmin 一、Redis服务器命令主要是用于管理redis服务 1.bgrewriteaof 异步执行一个 aof&#xff08;appendonly file&#xff09; 文件重写操作 2.bgsav…

redis服务(2)

配置 gearman 实现数据同步 Gearman是一个支持分布式的任务分发框架。 Gearman Job Server&#xff1a;Gearman核心程序&#xff0c;以守护进程形式运行在后台。 Gearman Client&#xff1a;可以理解为任务的收件员&#xff0c;比如我要在后台执行一个发送邮件的任务&#xff0…

【MySQL集群+Redis配置】

Mysql集群配置 一、主从备份二、主主备份三、多主一从四、一主多从五、Mysql中间件——Amoeba&#xff08;读写分离&#xff09;1)&#xff09;先搭建一个主从关系的服务器2&#xff09; 从服务器上保存授权信息&#xff0c;并开启从服务线程3&#xff09;配置读写分离 六、安装…

Redis部署

Redis部署 Redis入门简介源码编译安装 Redis入门简介 Redis是一个开源的基于内存亦可持久化的日志型、Key-Value数据库&#xff0c;并提供多种语言的API。 Redis是一个key-value存储系统。 和Memcached缓存类似&#xff0c;Redis支持存储的value类型相对更多&#xff0c;包括…