栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 前沿技术 > 大数据 > 大数据系统

脚本分发(学习笔记4)

脚本分发(学习笔记4)

完全分布式运行模式(开发重点)

分析:

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

2)安装 JDK

3)配置环境变量

4)安装 Hadoop

5)配置环境变量

6)配置集群 

7)单点启动

8)配置 ssh

9)群起并测试集群 

编写集群分发脚本 xsync

1)scp(secure copy)安全拷贝

(1)scp 定义

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

(2)基本语法

scp    -r   $pdir/$fname          $user@$host:$pdir/$fname

命令 递归 要拷贝的文件路径/名称 目的地用户@主机:目的地路径/名称

进入hadoop103 查看module中是否已经拷贝过去

这里可以举一反三:

我们可以从hadoop103 中 拉取文件到 103的module 中(测试拉取102中hadoop框架)

指令代码(请在hadoop103中操作)

scp -r dashuju@hadoop102:/opt/module/hadoop-3.1.3 /opt/module/

接下来,请自行操作从 104 虚拟机 拉取 102虚拟机的module文件

2)rsync 远程同步工具 

rsync 主要用于备份和镜像。具有速度快、避免复制相同内容和支持符号链接的优点。

rsync 和 scp 区别:用 rsync 做文件的复制要比 scp 的速度快,rsync 只对差异文件做更

新。scp 是把所有文件都复制过去。

(1)基本语法

rsync -av $pdir/$fname $user@$host:$pdir/$fname

命令  选项参数  要拷贝的文件路径/名称  目的地用户@主机:目的地路径/名称 选项参数说明

-a :归档拷贝

-v :显示复制过程

测试rsync :请先删除hadoop103中 hadoop框架文件夹下的 wcoutput

确认好删除后,回到hadoop102中进行rsync 脚本分发,首先进入操作文件夹 module

然后解压~过程会出现

完成后检查103有没有回复 wcoutput文件夹

3)xsync 集群分发脚本

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

(2)需求分析:

(a)rsync 命令原始拷贝:

rsync -av /opt/module atguigu@hadoop103:/opt/

(b)但是,这里期望的是,只给一个文件名字 就能分发到其他虚拟机的路径下(该路径与给出分发文件的路 径地址一样):

rsync 文件名

这里在我们配置完jdk和hadoop后 ,可以在该虚拟机的任意位置都可以调取 java 和 hadoop命令

根据这个思想我们来设计 xsync脚本

 通过上面的全局变量发现,只要在全局变量中,把期望的xsync脚本封装到一个bin目录下,加入到 PATH全局变量中去,就可以在任意位置使用xsync脚本进行传递文件

操作:

  1. 首先我们要返回home目录下
  2. 在该位置处我们需要创建一个这样的路径

Home/dashuju/bin

进入 bin 文件夹后 创建脚本文件 xsync 并进入编辑shell脚本语言

首先这个脚本在逻辑里要完成一下几个条件判断和执行功能

  1. 首先判断是否传入
  2. 能够索引出所有操作的虚拟机,并且能够索检索出传入的文件个数,并且能够排除不存在的文件,循环录入

将以上脚本代码编辑到 xsync 脚本文件中

这里注意 在复制代码的时候,可能会出现代码错误,原因是 在复制过程中 有i 的出现导致他错乱

所以这里有2个解决方法:

  1. 在进入文件编辑 ESC —— :set paste——回车
  2. 复制文本的时候先点击 i

(撤销文本是:u)

编辑好保存退出后 进行测试xsync进行分发文件

那现在这个脚本可以用了???

当然不行,因为还没有赋予权限

操作代码

chmod 777 xsync

执行代码后:

开始测试:

回到 home(~)目录下

执行代码:

xsync bin/

开始分发文件

分发环境变量

回到home目录下

xsync /etc/profile.d/my_envy.sh

这时候会报一个错误

permission denied:没有权限;拒绝访问

这个时候是 正常的想法是 前面加上 sudo

sudo xsync /etc/profile.d/my_envy.sh

但是再次执行的时候 发现提示找不到这个命令

这里其实是 root权限 没办法操作home中的xsync,也可以说是 root 找不到这个命令

所以 这里我们把 xsync的绝对路径写上,让root找到xsync

sudo /home/dashuju/bin/xsync /etc/profile.d/my_envy.sh

再次执行后,传递文件

查看hadoop 103 和 104 是否有这个文件存在

有了环境变量的文件,说明传递成功,自行查看my_envy.sh,检查

在103中 写入 java 或者 hadoop命令

啊哈哈哈哈哈 ~~~~~~~      (*≧▽≦)ツ┻━┻[翻桌狂笑]

是不是找不到命令呀???  (¬◡¬)✧

你们没发现少了一步什么嘛?  (*◉ω◉*)

想想看哦~   。◕ᴗ◕。

传递过去的环境变量写入后,退出还有哪一步操作啊???

 答案:source /etc/profile.d/my_envy.sh

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/784950.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号