笔记屋 笔记屋
  • 首页
  • 大数据
    • Hadoop
  • 码农碎笔
  • 杂乱无章
  • 好物收藏

Hadoop完全分布式-同步数据

准备完全分布式需要的机器

  • hadoop102
  • hadoop103
  • hadoop104

同步数据

将hadoop102的数据(jdk、hadoop安装目录同步,环境变量文件)同步到 hadoop103 hadoop104

scp(secure copy)安全拷贝

scp 定义

scp 可以实现服务器与服务器之间的数据拷贝。(from server1 to server2)

基本语法:

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

案例实操

前提:

在 hadoop102 hadoop103 hadoop104 都已经创建好的 /opt/module /opt/software 两个目录, 并且已经把这两个目录修改为hadoop:hadoop。

  • 在 hadoop102 上,将 hadoop102 中/opt/module/jdk1.8.0_212 目录拷贝到hadoop103 上。

[hadoop@hadoop102 ~]$ scp -r /opt/module/jdk1.8.0_212 hadoop@hadoop103:/opt/module
  • 在 hadoop103 上,将 hadoop102 中/opt/module/hadoop-3.1.3 目录拷贝到hadoop103 上。

[hadoop@hadoop103 ~]$ scp -r hadoop@hadoop102:/opt/module/hadoop-3.1.3 /opt/module/
  • 在 hadoop103 上操作,将 hadoop102 中/opt/module 目录下所有目录拷贝到hadoop104 上。

[hadoop@hadoop103 opt]$ scp -r hadoop@hadoop102:/opt/module/* hadoop@hadoop104:/opt/module

rsync 远程同步工具

  • rsync 主要用于备份和镜像。具有速度快、避免复制相同内容和支持符号链接的优点。
  • rsync 和 scp 区别:用 rsync 做文件的复制要比 scp 的速度快,rsync 只对差异文件做更新。scp 是把所有文件都复制过去。

基本语法

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

案例实操

把 hadoop102 机器上的/opt/software 目录同步到 hadoop103 服务器的/opt/software 目录下


[hadoop@hadoop102 opt]$ rsync -av /opt/software/* hadoop@hadoop103:/opt/software

编写集群分发的脚本

注意:为了省去配置环境变量的步骤,直接在/home/hadoop/下创建bin目录 把脚本创造 bin目录下 。


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

脚本内容如下:


#!/bin/bash
		#参数预处理
		if [ $# -lt 1 ]
		then 
		 echo "参数不能为空!!!"
		 exit
		fi
		#遍历集群找那个所有的机器 进行内容分发
		for host in hadoop103 hadoop104
		do
		  echo "===============$host================"
		  #遍历所要分发的内容 进行传输
		  for file in $@
		  do
			#判断当前文件是否存在
			if [ -e $file ]
			then
			  #存在
			   #1.获取父级目录
			   pdir=$(cd -P $(dirname $file); pwd)
			   #2.获取当前的文件名
			   fname=$(basename $file)
			   #3.在目标服务器创建同级目录
			   ssh $host "mkdir -p $pdir"
			   #4.同步文件
			   rsync -av $pdir/$fname $host:$pdir 
			else
			  #不存在
			  echo "$file 不存在!!!"
			  exit
			fi
		  done
		done

修改脚本 xsync 具有执行权限


[hadoop@hadoop102 bin]$ chmod +x xsync

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


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

测试脚本


[hadoop@hadoop102 ~]$ xsync /home/atguigu/bin
[hadoop@hadoop102 bin]$ sudo xsync /bin/xsync
有帮助?
Hadoop运行模式-本地运行模式
Hadoop完全分布式-配置集群
Copyright © 2022 笔记屋. 苏ICP备20033168号