Hadoop的运行模式——第一部分
shell脚本可以没有后缀 重要的是开头的定义
#!/bin/bash此章节xsync分发脚本没有后缀
Hadoop的运行模式
本地模式:单机运行,演示官方用例,生产环境不用 伪分布式模式:也是单机运行,但是具备Hadoop集群的所有功能,一台服务器模拟一个分布式的环境,生产环境不用 完全分布式模式:多台服务器组成分布式环境,生产环境使用
本地模式官方测试样例
## 测试官方实例
mkdir wcinput
cd wcinput
vim word.txt
## 内容如下:
xiaolong xiaolong
hello hello
world
make make
## 运行保存
wq!
## 执行程序
hadoop jar hadoop3.1.3/share/hadoop/mapreduce/hadoop-mapreduce-examples-3.1.3.jar wordcount ./wcinput ./wcoutput
## 输出目录不能存在 否则会存在FileExitsError
cat wcoutput/part-r-00000 输出结果
_SUCCESS作为成功标志
编写集群分发脚本xsync
scp 安全拷贝
scp定义
scp可以实现服务器与服务器之间的数据拷贝
基本语法
scp -r $pdir/$fname命令 递归 要拷贝的文件路径/名称案例
scp -r /opt/module/jdk1.8.0_212 atguigu@hadoop103:/opt/module
scp -r atguigu@hadoop102:/opt/module/hadoop-3.1.3 /opt/module/
scp -r atguigu@hadoop102:/opt/module/* atguigu@hadoop104:/opt/module
rysnc 远程同步工具
rsync主要用于备份和镜像。具有速度快、避免复制相同内容和支持符号链接的优点。
rsync和scp区别:用rsync做文件的复制要比scp的速度快,rsync只对差异文件做更新。scp是把所有文件都复制过去。
基本语法
rsync -av $pdir/$fname $user@$host:$pdir/$fname命令 选项参数 要拷贝的文件路径/名称 目的地用户@主机:目的地路径/名称选项参数说明
选项 功能 -a 归档拷贝 -v 显示复制过程 案例实操
(a)删除hadoop103中/opt/module/hadoop-3.1.3/wcinput[atguigu@hadoop103 hadoop-3.1.3]$ rm -rf wcinput/
[atguigu@hadoop102 module]$ rsync -av hadoop-3.1.3/ atguigu@hadoop103:/opt/module/hadoop-3.1.3/(b)同步hadoop102中的/opt/module/hadoop-3.1.3到hadoop103[atguigu@hadoop102 module]$ rsync -av hadoop-3.1.3/ atguigu@hadoop103:/opt/module/hadoop-3.1.3/
xsync集群分发脚本
需求分析
rsync原始命令拷贝
rsync -av /opt/module atguigu@hadoop103:/opt/期望脚本:
xsync + 要同步的文件名称
期望脚本在任何路径下都能使用(放在声明了全局环境变量的路径)
echo $PATH
脚本实现
在
~/bin目录下创建xsync文件mkdir ~/atguigu/bin
mkdir bin
cd bin
vim xysnc在文件中编写如下代码
#!/bin/bash
## 不懂就去看看shell学习随笔
#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修改脚本xsync具有执行权限
chmod +x xsync
测试脚本
xysnc /home/atguigu/bin
脚本复制到/bin中,全局调用
sudo cp xysnc /bin/
同步环境变量配置(root所有者)
sudo ./bin/xsync /etc/profile.d/my_env.sh
注意最后文件需要source使环境变量生效
注意root用户使用xsync脚本是需要绝对路径指定的 因为root用户没有配置此环境变量

浙公网安备 33010602011771号