分享

hadoop集群下几个好用的脚本工具

 python_lover 2022-12-12 发布于北京

远程复制同步脚本

1.通过scp直接拷贝

一般Linux系统之间复制同步文件,或者文件夹使用的是scp,基本语法如下:

scp -r sourceFile  username@host:destpath
  • 或者在有ssh免密登录的情况下可以使用如下命令
scp -r sourceFile  host:$PWD
2. 通过rsync来实现增量拷贝

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

rsync和scp区别:用rsync做文件的复制要比scp的速度快,rsync只对差异文件做更新。scp是把所有文件都复制过去。

(1) 基本语法

rsync -av sourceFile username@host:destPath

选项参数说明

选项 功能
-a 归档拷贝
-v 显示复制过程

例如hadoop01执行以下命令同步zk安装包

rsync -av /bigdata/soft/apache-zookeeper-3.6.2-bin.tar.gz hadoop02:/bigdata/soft/
3. 通过rsync来封装分发脚本

我们可以通过rsync这个命令工具来实现脚本的分发,可以增量的将文件分发到我们所有其他的机器上面去
(1)需求:循环复制文件到所有节点的相同目录下
(2)需求分析:
(a)rsync命令原始拷贝:

rsync -av /bigdata/soft hadoop@hadoop02:/bigdata/soft

(b)期望脚本使用方式:
xsync要同步的文件名称
(c)说明:在/home/hadoop/bin这个目录下存放的脚本,hadoop用户可以在系统任何地方直接执行。
(3)脚本实现
三台机器执行以下命令安装rsync工具

sudo yum -y install rsync

(a)在/home/hadoop目录下创建bin目录,并在bin目录下xsync创建文件,文件内容如下:

[hadoop@hadoop01 ~]$ cd ~
[hadoop@hadoop01 ~]$ mkdir bin
[hadoop@hadoop01 ~]$ cd /home/hadoop/bin
[hadoop@hadoop01 bin]$ touch xsync
[hadoop@hadoop01 bin]$ vim xsync

在该文件中编写如下代码

#!/bin/bash
#1 获取输入参数个数,如果没有参数,直接退出
pcount=$#
if ((pcount==0)); then
echo no args;
exit;
fi

#2 获取文件名称
p1=$1
fname=`basename $p1`

echo $fname

#3 获取上级目录到绝对路径
pdir=`cd -P $(dirname $p1); pwd`
echo $pdir

#4 获取当前用户名称
user=`whoami`

#5 循环
for((host=1; host<4; host++)); do
       echo ------------------- hadoop0$host --------------
       rsync -av $pdir/$fname $user@hadoop0$host:$pdir
done

(b)修改脚本 xsync 具有执行权限

[hadoop@hadoop01 bin]$ cd ~/bin/
[hadoop@hadoop01 bin]$ chmod 777 xsync

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

[hadoop@hadoop01 bin]$ xsync /home/hadoop/bin/

注意:如果将xsync放到/home/hadoop/bin目录下仍然不能实现全局使用,可以将xsync移动到/usr/local/bin目录下

一键启动hadoop集群的脚本

  • 为了便于一键启动hadoop集群,我们可以编写shell脚本
  • 在主节点hadoop01服务器的/home/hadoop/bin目录下创建脚本
[hadoop@hadoop01 bin]$ cd /home/hadoop/bin/
[hadoop@hadoop01 bin]$ vi hadoop.sh
  • 内容如下
#!/bin/bash
case $1 in
"start" ){
 source /etc/profile;
 /bigdata/install/hadoop-3.1.4/sbin/start-dfs.sh
 /bigdata/install/hadoop-3.1.4/sbin/start-yarn.sh
 #/bigdata/install/hadoop-3.1.4/sbin/mr-jobhistory-daemon.sh start historyserver
 /bigdata/install/hadoop-3.1.4/bin/mapred --daemon start historyserver
};;
"stop"){

 /bigdata/install/hadoop-3.1.4/sbin/stop-dfs.sh
 /bigdata/install/hadoop-3.1.4/sbin/stop-yarn.sh
 #/bigdata/install/hadoop-3.1.4/sbin/mr-jobhistory-daemon.sh stop  historyserver
 /bigdata/install/hadoop-3.1.4/bin/mapred --daemon stop historyserver
};;
esac
  • 修改脚本权限
[hadoop@hadoop01 bin]$ chmod 777 hadoop.sh
[hadoop@hadoop01 bin]$ ./hadoop.sh start  # 启动hadoop集群
[hadoop@hadoop01 bin]$ ./hadoop.sh stop   # 停止hadoop集群

所有机器查看进程脚本

  • 我们也可以通过jps在每台机器上面查看进程名称,为了方便我们以后查看进程,我们可以通过脚本一键查看所有机器的进程
  • 在主节点hadoop01服务器的/home/hadoop/bin目录下创建文件xcall
[hadoop@hadoop01 bin]$ cd ~/bin/
[hadoop@hadoop01 bin]$ vi xcall
  • 添加以下内容
#!/bin/bash

params=$@
for (( i=1 ; i <= 3 ; i = $i + 1 )) ; do
    echo ============= hadoop0$i $params =============
    ssh hadoop0$i "source /etc/profile;$params"
done
  • 然后一键查看进程并分发该脚本
chmod 777  /home/hadoop/bin/xcall
xsync /home/hadoop/bin/
  • 各节点应该启动的hadoop进程如下图
xcall jps

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多