Hadoop3.0集群安装配置

本文详细指导如何从官网下载CentOS 7.5 ISO镜像,进行VM虚拟机安装,配置网络、分区,安装EPEL,设置SSH免密,以及搭建Hadoop集群,包括NameNode、SecondaryNameNode和YARN的配置。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

centos7.5的搭建

  1. 官网https://www.centos.org/

  2. 下拉进入Older Version

  3. 往下拉找到Base Distribution,选择自己的版本,点击Tree

  4. 选择CentOs的ISO镜像文件(isos目录)

  5. 选择对应电脑的版本进行下载

  6. 选择你需要的,一般下载DVD标准安装版就行

各个版本的ISO镜像文件说明:

CentOS-7-x86_64-DVD-1810.iso 标准安装版(推荐)
CentOS-7-x86_64-Everything-1810.iso 完整版,集成所有软件(以用来补充系统的软件或者填充本地镜像)
CentOS-7-x86_64-LiveGNOME-1810.iso GNOME桌面版
CentOS-7-x86_64-LiveKDE-1810.iso KDE桌面版
CentOS-7-x86_64-Minimal-1810.iso 精简版,自带的软件最少
CentOS-7-x86_64-NetInstall-1810.iso 网络安装版(从网络安装或者救援系统)

国内阿里云镜像下载:https://mirrors.aliyun.com/centos/7/isos/x86_64/

VM虚拟机的安装

处理器数量(P):
1、启用了超线程或具有双核CPU的单处理器主机可视为拥有两个逻辑处理器。
2、只有拥有至少两个逻辑处理器的主机才支持指定多个虚拟处理器。
3、具有两个CPU的多处理器主机无论是否为双核处理器或是否启用了超线程,均视为拥有至少两个逻辑处理器。
4、物理CPU个数×每颗核数就等于逻辑CPU的个数。

每个处理器的核心数量(C):
1、多内核(multicore chips)是指在一个处理器(CPU)中集成两个或多个完整的计算引擎(内核)。
2、一个CPU中可以包括多个核,相当于逻辑上的多个CPU在工作。

分区配置 /45 /swap4 /boot1

图形化、安全策略看自己需求

分区方案描述
必须的分区
boot分区:

作用:引导分区,包含了系统启动的必要内核文件,即使根分区顺坏也能正常引导启动 一般这些文件所占空间在200M以下,
分区建议:分区的时候可选100M-500M之间,如果空间足够用,建议分300-500M。避免由于长期使用的冗余文件塞满这个分区。
分区格式:建议ext4,按需求更改

/分区(根分区):

作用:所有的文件都从这里开始,你可以比喻为Windows的C盘,但其实有区别。如果你有大量的数据在根目录下(比如FTP等)可以划分大一点的空间
分区建议:建议15G以上。看需求,根分区和home分区的大小就类似C盘和D盘的空间分布一样,主要占空间在哪儿就在那里分大容量
分区格式:建议ext4,按需求更改

swap分区:

作用:类似于Windows的虚拟内存,在内存不够用时占用硬盘的虚拟内存来进行临时数据的存放,而对于linux就是swap分区
分区建议:建议是物理内存大小的2倍,比如你电脑是4G的物理内存,swap分区可以是8G
分区格式:swap格式

可选的分区
home分区

作用:存放用户数据,HOME的结构一般是 HOME/userName/userFile,如果不分则默认在/目录下
分区建议:如果用户数据多可以将此分区适当增大,请参考“根分区”分区建议;一般硬盘的主要容量几乎都在Home分区和根分区下
分区格式:建议ext4,按需求更改

var分区

作用:用于log日志的文件的存放,如果不分则默认在/目录下
分区建议:如果你安装的linux是用于服务器或者经常做日志分析,请划分var分区,避免日志文件不断膨胀塞满导致根分区而引发问题。
分区格式:建议ext4,按需求更改

ip配置

vm

虚拟网络把08改为192.168.10.0

网关是192.168.10.2

win10

打开网络Internet选项
VMnet8属性,然后如图操作

在这里插入图片描述

centos7.5

vim /etc/sysconfig/network-scripts/ifcfg-ens33

修改BOOTPROTO后

在末尾加上ip地址,网关,域名解析器

IPADDR=192.168.10.100
GATEWAY=192.168.10.2
DNS1=192.168.10.2
vim /etc/hostname

hadoop100

主机名称映射

vim /etc/hosts
192.168.10.100 hadoop100
192.168.10.101 hadoop101
192.168.10.102 hadoop102
192.168.10.103 hadoop103
192.168.10.104 hadoop104
192.168.10.105 hadoop105
192.168.10.106 hadoop106
192.168.10.107 hadoop107
192.168.10.108 hadoop108

修改windows主机映射文件hosts文件

C:\Windows\System32\drivers\etc

打开hosts文件并添加映射内容并保存

如果文件设为只读一定把只读选项去掉

没有权限就修改获得权限

192.168.10.100 hadoop100
192.168.10.101 hadoop101
192.168.10.102 hadoop102
192.168.10.103 hadoop103
192.168.10.104 hadoop104
192.168.10.105 hadoop105
192.168.10.106 hadoop106
192.168.10.107 hadoop107
192.168.10.108 hadoop108

**
1、centos配置
**

1)测试网络

ifconfig

2)安装epel-release

yum install -y epel-release

3)最小化安装还需要的东西

ne-tools    vim
yum install -y ne-tools/vim

2、关闭防火墙,关闭防火墙开机自启

systemctl stop firewalld

systemctl disable firewalld.service

3、给atguigu用户配置使其具有root权限

vim /etc/sudoers

在这里插入图片描述

4、卸载自带的jdk,最小化不用管

rpm -qa | grep -i java | xargs -n1 rpm -e --nodeps

5、安装jdk

tar -zxvf jdk-8u212-linux-x64.tar.gz -C /opt/module/

6、配置生效

sudo cd /etc/profile.d

cd /etc/profile.d
[atguigu@hadoop102 profile.d]$ sudo vim my_env.sh

#JAVA_HOME配置java环境
export JAVA_HOME=/opt/module/jdk1.8.0_212
export PATH=$PATH:$JAVA_HOME/bin

生效

source /etc/profile

7、安装Hadoop

tar -zxvf hadoop-3.1.3.tar.gz -C /opt/module/

8、配置

#HADOOP_HOME
export HADOOP_HOME=/opt/module/hadoop-3.1.3
export PATH=$PATH:$HADOOP_HOME/bin
export PATH=$PATH:$HADOOP_HOME/sbin

词频统计(单机版)

bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-3.1.3.jar wordcount wcinput/ wcoutput

cat part-r-00000

搭建完全分布式

1)集群部署规划
注意:
➢ NameNode 和 SecondaryNameNode 不要安装在同一台服务器
➢ ResourceManager 也很消耗内存,不要和 NameNode、SecondaryNameNode 配置在
同一台机器上。

在这里插入图片描述
2)配置文件说明
Hadoop 配置文件分两类:默认配置文件和自定义配置文件,只有用户想修改某一默认
配置值时,才需要修改自定义配置文件,更改相应属性值。

(1)默认配置文件:
要获取的默认文件 文件存放在 Hadoop 的 jar 包中的位置

[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 这个路径上,用户可以根据项目需求重新进行修改配置。
3)配置集群
(1)核心配置文件
配置 core-site.xml

[atguigu@hadoop102 ~]$ cd $HADOOP_HOME/etc/hadoop 
[atguigu@hadoop102 hadoop]$ vim 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 网页登录使用的静态用户为 atguigu -->
 <property>
 <name>hadoop.http.staticuser.user</name>
 <value>atguigu</value>
 </property>
</configuration>

(2)HDFS 配置文件
配置 hdfs-site.xml

[atguigu@hadoop102 hadoop]$ vim 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>

(3)YARN 配置文件
配置 yarn-site.xml

[atguigu@hadoop102 hadoop]$ vim 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_CO
NF_DIR,CLASSPATH_PREPEND_DISTCACHE,HADOOP_YARN_HOME,HADOOP_MAP
RED_HOME</value>
 </property>
</configuration>

(4)MapReduce 配置文件
配置 mapred-site.xml

[atguigu@hadoop102 hadoop]$ vim 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>
4)在集群上分发配置好的 Hadoop 配置文件
[atguigu@hadoop102 hadoop]$ xsync /opt/module/hadoop3.1.3/etc/hadoop/

5)去 103 和 104 上查看文件分发情况

[atguigu@hadoop103 ~]$ cat /opt/module/hadoop3.1.3/etc/hadoop/core-site.xml
[atguigu@hadoop104 ~]$ cat /opt/module/hadoop3.1.3/etc/hadoop/core-site.xml

3.2.5 群起集群
1)配置 workers

[atguigu@hadoop102 hadoop]$ vim /opt/module/hadoop3.1.3/etc/hadoop/workers

hadoop102
hadoop103
hadoop104

注意:该文件中添加的内容结尾不允许有空格,文件中不允许有空行。
同步所有节点配置文件

[atguigu@hadoop102 hadoop]$ xsync /opt/module/hadoop-3.1.3/etc

2)启动集群
(1)如果集群是第一次启动,需要在 hadoop102 节点格式化 NameNode(注意:格式化 NameNode,会产生新的集群 id,导致 NameNode 和 DataNode 的集群 id 不一致,集群找不到已往数据。如果集群在运行过程中报错,需要重新格式化 NameNode 的话,一定要先停止 namenode 和 datanode 进程,并且要删除所有机器的 data 和 logs 目录,然后再进行格式化。)

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

(2)启动 HDFS

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

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

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

(4)Web 端查看 HDFS 的 NameNode
浏览器中输入:

http://hadoop102:9870

查看 HDFS 上存储的数据信息
(5)Web 端查看 YARN 的 ResourceManager
浏览器中输入

:http://hadoop103:8088

查看 YARN 上运行的 Job 信息
3)集群基本测试
(1)上传文件到集群

➢ 上传小文件
[atguigu@hadoop102 ~]$ hadoop fs -mkdir /input
[atguigu@hadoop102 ~]$ hadoop fs -put 

$HADOOP_HOME/wcinput/word.txt /input
➢ 上传大文件

[atguigu@hadoop102 ~]$ hadoop fs -put /opt/software/jdk-8u212-
linux-x64.tar.gz /

(2)上传文件后查看文件存放在什么位置
➢ 查看 HDFS 文件存储路径

[atguigu@hadoop102 subdir0]$ pwd
/opt/module/hadoop-3.1.3/data/dfs/data/current/BP-1436128598-
192.168.10.102-1610603650062/current/finalized/subdir0/subdir0 

➢ 查看 HDFS 在磁盘存储文件内容

[atguigu@hadoop102 subdir0]$ cat blk_1073741825
hadoop yarn
hadoop mapreduce 
atguigu
atguigu

(3)拼接

-rw-rw-r--. 1 atguigu atguigu 134217728 523 16:01 blk_1073741836
-rw-rw-r--. 1 atguigu atguigu 1048583 523 16:01 blk_1073741836_1012.meta
-rw-rw-r--. 1 atguigu atguigu 63439959 523 16:01 blk_1073741837
-rw-rw-r--. 1 atguigu atguigu 495635 523 16:01 blk_1073741837_1013.meta
[atguigu@hadoop102 subdir0]$ cat blk_1073741836>>tmp.tar.gz
[atguigu@hadoop102 subdir0]$ cat blk_1073741837>>tmp.tar.gz
[atguigu@hadoop102 subdir0]$ tar -zxvf tmp.tar.gz

(4)下载

[atguigu@hadoop104 software]$ hadoop fs -get /jdk-8u212-linux-x64.tar.gz ./

(5)执行 wordcount 程序

[atguigu@hadoop102 hadoop-3.1.3]$ hadoop jar 
share/hadoop/mapreduce/hadoop-mapreduce-examples-3.1.3.jar 
wordcount /input /output

编写集群分发脚本

1)xsync集群分发脚本

(1)需求:循环复制文件到所有节点的相同目录下
(2)需求分析:

期望脚本:
xsync 要同步的文件名称

期望脚本在任何路径都能使用(脚本放在声明了全局环境变量的路径)

[atguigu@hadoop102 ~]$ echo $PATH
/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/home/atgu
igu/.local/bin:/home/atguigu/bin:/opt/module/jdk1.8.0_212/bi
n

(3)脚本实现
(a)在/home/atguigu/bin 目录下创建 xsync 文件

[atguigu@hadoop102 opt]$ cd /home/atguigu
[atguigu@hadoop102 ~]$ mkdir bin
[atguigu@hadoop102 ~]$ cd bin
[atguigu@hadoop102 bin]$ vim xsync

在该文件中编写如下代码


```css
#!/bin/bash
#1. 判断参数个数
if [ $# -lt 1 ]
then
 echo Not Enough Arguement!
 exit;
fi 
#2. 遍历集群所有机器
for host in hadoop102 hadoop103 hadoop104
do
 echo ==================== $host ====================
 #3. 遍历所有目录,挨个发送
 for file in $@
 do
 #4. 判断文件是否存在
 if [ -e $file ]
 then
 #5. 获取父目录
 pdir=$(cd -P $(dirname $file); pwd)
 #6. 获取当前文件的名称
 fname=$(basename $file)
 ssh $host "mkdir -p $pdir"
 rsync -av $pdir/$fname $host:$pdir
 else
 echo $file does not exists!
 fi
 done
done

(b)修改脚本 xsync 具有执行权限

[atguigu@hadoop102 bin]$ chmod +x xsync

(c)测试脚本

[atguigu@hadoop102 ~]$ xsync /home/atguigu/bin

(d)将脚本复制到/bin 中,以便全局调用

[atguigu@hadoop102 bin]$ sudo cp xsync /bin/

(e)同步环境变量配置(root 所有者)

[atguigu@hadoop102 ~]$ sudo ./bin/xsync /etc/profile.d/my_env.sh

注意:如果用了 sudo,那么 xsync 一定要给它的路径补全。
让环境变量生效

[atguigu@hadoop103 bin]$ source /etc/profile [atguigu@hadoop104 opt]$
source /etc/profil

ssh免密登录

1)配置 ssh
(1)基本语法
ssh 另一台电脑的 IP 地址
(2)ssh 连接时出现 Host key verification failed 的解决方法

[atguigu@hadoop102 ~]$ ssh hadoop103

➢ 如果出现如下内容

Are you sure you want to continue connecting (yes/no)?

➢ 输入 yes,并回车
(3)退回到 hadoop102

[atguigu@hadoop103 ~]$ exit

2)无密钥配置

(1)生成公钥和私钥

[atguigu@hadoop102 .ssh]$ pwd
/home/atguigu/.ssh
[atguigu@hadoop102 .ssh]$ ssh-keygen -t rsa

然后敲(三个回车),就会生成两个文件 id_rsa(私钥)、id_rsa.pub(公钥)
(2)将公钥拷贝到要免密登录的目标机器上

[atguigu@hadoop102 .ssh]$ ssh-copy-id hadoop102
[atguigu@hadoop102 .ssh]$ ssh-copy-id hadoop103
[atguigu@hadoop102 .ssh]$ ssh-copy-id hadoop104

注意:

还需要在 hadoop103 上采用 atguigu 账号配置一下无密登录到 hadoop102、hadoop103、hadoop104服务器上。
还需要在 hadoop104 上采用 atguigu 账号配置一下无密登录到
hadoop102、hadoop103、hadoop104 服务器上。
还需要在 hadoop102 上采用 root账号,配置一下无密登录到 hadoop102、hadoop103、hadoop104;

数据存放路径

/opt/module/hadoop-3.1.3/data/dfs/data/current/BP-1701184409-192.168.10.102-1620908306361/current/finalized/subdir0/subdir0

集群开启

hdfs

sbin/start-dfs.sh

yarn(103)

sbin/start-yarn.sh

Web 端查看 HDFS 的 NameNode

(a)浏览器中输入:http://hadoop102:9870

(b)查看 HDFS 上存储的数据信息

Web 端查看 YARN 的 ResourceManager

(a)浏览器中输入:http://hadoop103:8088
(b)查看 YARN 上运行的 Job 信息

集群常用知识点

1.各个模块分开启动/ 停止 (配置 ssh 是前提) 常用

(1)整体启动/停止 HDFS(102)

start-dfs.sh/stop-dfs.sh 

(2)整体启动/停止 YARN(103)

start-yarn.sh/stop-yarn.sh 

启动 NodeManager 、ResourceManage

[leokadia@hadoop103 ~]$ start-yarn.sh

启动 HistoryServer
[leokadia@hadoop102 ~]$ mapred --daemon start historyserver

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

(1)分别启动/停止 HDFS 组件

hdfs --daemon start/stop namenode/datanode/secondarynamenode 

(2)启动/停止 YARN

yarn --daemon start/stop  resourcemanager/nodemanager

虽然上面的命令不是很复杂,但每次启动都要输入,比较麻烦,因此想到把他们封装成脚本

3.编写 Hadoop 集群常用脚本

1 )Hadoop 集群启停脚本(包含 HDFS ,Yarn ,Historyserver ):

myhadoop.sh
[leokadia@hadoop102 hadoop-3.1.3]$ cd /home/atguigu/bin

进入bin目录,将脚本放在这里
[leokadia@hadoop102 bin]$ vim myhadoop.sh

➢ 输入如下内容
记住:写脚本的时候能写绝对路径,千万不要写相对路径!

#!/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 " --------------- 关闭 historyserver ---------------" 
        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 

➢ 保存后退出,然后赋予脚本执行权限
[atguigu@hadoop102 bin]$

 chmod +x myhadoop.sh
 chomod 777 myhadoop.sh //赋予文件读写执行所有权

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

由于每次查看进程都得到每台服务器上输入jps查看,比较麻烦,且如果服务器较多,十分耗时,于是想到编写一个脚本,查看所有服务器的进程情况。

[leokadia@hadoop102 ~]$

cd /home/atguigu/bin

[leokadia@hadoop102 bin]$

vim jpsall

➢ 输入如下内容

#!/bin/bash 

for host in hadoop102 hadoop103 hadoop104 
do 
        echo =============== $host =============== 
        ssh $host jps  
done 

➢ 保存后退出,然后赋予脚本执行权限
[leokadia@hadoop102 bin]$

chmod +x jpsall
chomod 777 jpsall //赋予文件读写执行所有权

3 )分发/home/atguigu/bin 目录,保证自定义脚本在三台机器上都可以使用

[leokadia@hadoop102 ~]$ xsync /home/atguigu/bin/
在hadoop103、104上测试下能否正常使用

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值