Hadoop完全分布式搭建

完全分布式运行模式
1)准备 3 台客户机(关闭防火墙、静态 ip、主机名称)
2)安装 JDK
3)配置环境变量
4)安装 Hadoop
5)配置环境变量
6)文件拷贝
7)配置 ssh
8)配置集群
9)群起集群
== 前五步参考博客==
https://blog.csdn.net/weixin_45942827/article/details/125402841

把slave2上的JDK、Hadoop及环境拷贝到slave3和slave4中

scp -r /opt/module root@slave3:/opt
scp -r /opt/module root@slave4:/opt

sudo scp /etc/profile root@slave3:/etc/profile
sudo scp /etc/profile root@slave4:/etc/profile
知识点扩充 编写集群分发脚本 xsync

1、scp(secure copy)安全拷贝
(1)scp 定义:
scp 可以实现服务器与服务器之间的数据拷贝。
(2)基本语法

scp   -r     $pdir/$fname     $user@slave$host : $pdir/$fname
#命令 递归 要拷贝的文件路径/名称  目的用户@主机      : 目的路径/名称

(3)案例实操
(a)在 slave2 上,将 slave2中/opt/module 目录下的软件拷贝到 slave3上。

scp -r /opt/module root@slave3:/opt

在这里插入图片描述
在这里插入图片描述
(b)在 slave3上,将 slave2服务器上的/opt/module 目录下的软件拷贝到
slave3上。

sudo scp -r root@slave2:/opt/module root@slave3:/opt

(c)在 slave3上操作将 slave2中/opt/module 目录下的软件拷贝到
slave4上。

 scp -r root@slave2:/opt/module root@slave4:/opt

(d)将 slave2中/etc/profile 文件拷贝到 slave3的/etc/profile 上。

sudo scp /etc/profile root@slave3:/etc/profile

(e)将 slave2 中/etc/profile 文件拷贝到 slave4的/etc/profile 上。

sudo scp /etc/profile root@slave4:/etc/profile

== 注意:拷贝过来的配置文件别忘了 source 一下/etc/profile。 ==
2、 rsync 远程同步工具
rsync 主要用于备份和镜像。具有速度快、避免复制相同内容和支持符号链接的优点。
rsync 和 scp 区别:用 rsync 做文件的复制要比 scp 的速度快,rsync 只对差异文件做更新。scp 是把所有文件都复制过去。
(1)基本语法

rsync  -rvl    $pdir/$fname        $user@slave$host : $pdir/$fname
命令  选项参数  要拷贝的文件路径/名称  目的用户@主机      : 目的路径/名称

(2)案例实操
(a)把 slave2机器上的/opt/software 目录同步到 slave2服务器的 root 用户下的/opt/software目录

 rsync -rvl /opt/software/ root@slave3:/opt/software

在这里插入图片描述
在这里插入图片描述
3、xsync 集群分发脚本
(1)需求:循环复制文件到所有节点的相同目录下
(2)脚本实现
说明:在/root/bin 这个目录下存放的脚本,root用户可以在系统任何地方直接执行。
atguigu
(a)在/root/ 目录下创建 bin 目录,并在 bin 目录下 xsync 创建文件,文件内容如下:

mkdir bin
cd bin/
touch xsync
vim xsync

在该文件中编写如下代码

#!/bin/bash

#1. 获取输入参数个数,如果没有参数,直接退出
if [ $# -lt 1 ]
then 
	echo Not Enough Arguement!
	exit;
fi

#2. 遍历集群所有机器
for host in slave2 slave3 slave4
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 具有执行权限

 chmod 777 xsync

(c)调用脚本形式:xsync 文件名称

xsync /root/bin

在这里插入图片描述
在这里插入图片描述

SSH 无密登录配置

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

ssh slave3

如果出现如下内容

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

解决方案如下:直接输入 yes
(3)退回到slave2

exit

在这里插入图片描述

2、 无密钥配置

(1)生成公钥和私钥:

ssh-keygen -t rsa

然后敲(三个回车),就会生成两个文件 id_rsa(私钥)、id_rsa.pub(公钥)
在这里插入图片描述

(2)将公钥拷贝到要免密登录的目标机器上

ssh-copy-id slave2
ssh-copy-id slave3
ssh-copy-id slave4

在这里插入图片描述
在这里插入图片描述
== 还需要在 slave3、slave4配置一下无密登录,步骤相同 ==

集群配置

1、 集群部署规划

slave2slave3slave4
HDFSNameNode 、DataNodeSecondaryNameNode、DataNodeDataNode
YARNNodeManager、ResourceManagerNodeManagerNodeManager

2、 配置集群
(1)核心配置文件
配置 core-site.xml

cd /opt/module/hadoop-2.7.2/etc/hadoop   #先进入此目录
vim core-site.xml

在 之间添加配置内容,内容如下:

<!-- 指定 HDFS 中 NameNode 的地址 -->
<property>
<name>fs.defaultFS</name>
 <value>hdfs://slave2:9000</value>
</property>
<!-- 指定 Hadoop 运行时产生文件的存储目录 -->
<property>
<name>hadoop.tmp.dir</name>
<value>/opt/module/hadoop-2.7.2/data</value>
</property>

在这里插入图片描述

(2)HDFS 配置文件
配置 hadoop-env.sh

vim hadoop-env.sh

export JAVA_HOME=/opt/module/jdk1.8.0_144  #在文件末尾加入

在这里插入图片描述

配置 hdfs-site.xml

vim hdfs-site.xml

在 之间添加配置内容,内容如下:

<!-- 设置SNN进程运行机器位置信息 -->
<property>
 <name>dfs.namenode.secondary.http-address</name>
 <value>slave3:9868</value>
</property>
<!-- 配置namenode的元数据存储目录 -->
<property>
<name>dfs.namenode.name.dir</name>
<value>file:/usr/local/hadoop/tmp/dfs/name</value>
</property>
<!-- 配置datanode的元数据存储目录 -->
<property>
<name>dfs.datanode.data.dir</name>
<value>file:/usr/local/hadoop/tmp/dfs/data</value>
</property>

在这里插入图片描述

(3)YARN 配置文件

配置 yarn-site.xml

vim yarn-site.xml

在 之间添加配置内容,内容如下:

<!-- Reducer 获取数据的方式 -->
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<!-- 指定 YARN 的 ResourceManager 的地址 -->
<property>
<name>yarn.resourcemanager.hostname</name>
<value>slave2</value>
</property>

在这里插入图片描述

(4)MapReduce 配置文件

配置 mapred-site.xml

cp mapred-site.xml.template mapred-site.xml     #复制文件到本目录并改名
vim mapred-site.xml

在 之间添加配置内容,内容如下:

<!-- 指定 MR 运行在 Yarn 上 -->
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>

在这里插入图片描述

3.在集群上分发配置好的 Hadoop 配置文件

rsync -rvl /opt/module/hadoop-2.7.2/etc/hadoop/slaves root@slave3:/opt/module/hadoop-2.7.2/etc/hadoop/slaves
rsync -rvl /opt/module/hadoop-2.7.2/etc/hadoop/slaves root@slave4:/opt/module/hadoop-2.7.2/etc/hadoop/slaves

4.查看文件分发情况(分别在slave3和slave4上运行)

 cat /opt/module/hadoop-2.7.2/etc/hadoop/core-site.xml

群起集群

1.、配置 slaves

cd /opt/module/hadoop-2.7.2/etc/hadoop
vim slaves

在该文件中增加如下内容:

slave2
slave3
slave4

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

rsync -rvl /opt/module/hadoop-2.7.2/etc/hadoop/ root@slave3:/opt/module/hadoop-2.7.2/etc/hadoop/
rsync -rvl /opt/module/hadoop-2.7.2/etc/hadoop/ root@slave4:/opt/module/hadoop-2.7.2/etc/hadoop/

2.、启动集群
(1)如果集群是第一次启动,需要格式化 NameNode(注意格式化之前,一定要先停
止上次启动的所有 namenode 和 datanode 进程,然后再删除 data 和 log 数据)

cd /opt/module/hadoop-2.7.2   #先进入Hadoop的根目录
hdfs namenode -format

在这里插入图片描述

(2)启动 HDFS

#slave2中输入
sbin/start-dfs.sh

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

(3)启动 YARN

#slave2中输入
sbin/start-yarn.sh

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

3、Web 端查看HDFS的NameNode
(1)、浏览器中输入:http://slave2:50070/status.html

在这里插入图片描述
4、Web 端查看YARN的ResourceManager
浏览器中输入:http://slave2:8088
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值