欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Hadoop(1.1)——xsync集群分发脚本

程序员文章站 2024-02-25 16:26:09
...

Hadoop运行模式:

  • Local Mode

    本地模式,数据存储在linux本地,测试时偶尔用

  • Psedo-Distributed Mode

    伪分布式模式:数据存储在HDFS,适用预算有限的情况

  • Fully-Distributed Mode

    完全分布式,数据存储在HDFS/多台服务器工作,企业大量用这个

完全分布式运行模式的搭建

步骤:

  1. 准备3台客户机(关闭防火墙、静态ip、主机名称)

  2. 安装JDK,配置环境变量

  3. 安装Hadoop,配置环境变量

  4. 配置集群

  5. 单点启动

  6. 配置ssh

  7. 群起并测试集群

1、编写集群分发脚本xsync

将102号主机上的JDK和hadoop拷贝到103、104中

1)scp(secure copy)安全拷贝
scp可以实现服务器之间的数据拷贝。

#基本语法:scp -r(递归) $pdir/$fname(文件路径/名称) [email protected]$host:$pdir/$fname(目的地用户@主机:目的地路径/名称)

scp -r jdk1.8.0_212/ [email protected]:/opt/module/ #102上的命令,将本主机的jdk推到103上

sudo scp -r [email protected]:/opt/module/hadoop-3.1.3 ./ #103上的命令,将102的root用户的/opt/module/hadoop-3.1.3/ 拉取到103本路径

2)rsync远程同步工具

用于备份和镜像。rsync和scp的区别:前者只对差异文件做更改,而scp复制所有的文件速度慢。

#基本语法 rsync -av(-a 归档拷贝;-v 显示复制过程) $pdir/$fname [email protected]$host:$pdir/$fname

3)xsync集群分发脚本
循环复制文件到所有节点的相同目录下。
脚本:

#!/bin/bash
#1. 判断参数个数
if [ $# -lt 1 ]
then
	echo Not Enough Argument!
	exit;
fi

#2. 遍历集群所有机器
for host in hadoop102 hadoop103 hadoop104
do
	echo ======================== $host ============================
	#3. 遍历所有目录,挨个发送
	for file in [email protected]
	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 exist!
		fi
	done
done

将该脚本放在全局变量的文件夹下,比如 user/bin/ 下。创建完该脚本,再使用chmod 777 xsync 修改执行权限。
执行该脚本的时候,参数是一个文件或者目录,目标主机是直接写在脚本内部的。
复制完jdk、hadoop、环境变量后resource一下即可