Hadoop的分发脚本编写

手上有4台阿里云,正好可以搭建集群,就要把刚刚配置的单节点的数据拷贝过去。

编写集群分发脚本xsync

1.    scp(secure copy)安全拷贝

(1)scp定义:

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

(2)基本语法

Linux scp 命令用于 Linux 之间复制文件和目录。

scp 是 secure copy 的缩写, scp 是 linux 系统下基于 ssh 登陆进行安全的远程文件拷贝命令。

scp 是加密的,rcp 是不加密的,scp 是 rcp 的加强版。

语法

scp [-1246BCpqrv] [-c cipher] [-F ssh_config] [-i identity_file]
[-l limit] [-o ssh_option] [-P port] [-S program]
[[user@]host1:]file1 [...] [[[email protected]]host2:]file2

简易写法:

scp [可选参数] file_source file_target 

参数说明:

  • -1: 强制scp命令使用协议ssh1
  • -2: 强制scp命令使用协议ssh2
  • -4: 强制scp命令只使用IPv4寻址
  • -6: 强制scp命令只使用IPv6寻址
  • -B: 使用批处理模式(传输过程中不询问传输口令或短语)
  • -C: 允许压缩。(将-C标志传递给ssh,从而打开压缩功能)
  • -p:保留原文件的修改时间,访问时间和访问权限。
  • -q: 不显示传输进度条。
  • -r: 递归复制整个目录。
  • -v:详细方式显示输出。scp和ssh(1)会显示出整个过程的调试信息。这些信息用于调试连接,验证和配置问题。
  • -c cipher: 以cipher将数据传输进行加密,这个选项将直接传递给ssh。
  • -F ssh_config: 指定一个替代的ssh配置文件,此参数直接传递给ssh。
  • -i identity_file: 从指定文件中读取传输时使用的密钥文件,此参数直接传递给ssh。
  • -l limit: 限定用户所能使用的带宽,以Kbit/s为单位。
  • -o ssh_option: 如果习惯于使用ssh_config(5)中的参数传递方式,
  • -P port:注意是大写的P, port是指定数据传输用到的端口号
  • -S program: 指定加密传输时所使用的程序。此程序必须能够理解ssh(1)的选项。

命令格式:

scp local_file [email protected]remote_ip:remote_folder
或者
scp local_file remote_username@remote_ip:remote_file
或者
scp local_file remote_ip:remote_folder
或者
scp local_file remote_ip:remote_file 
  • 第1,2个指定了用户名,命令执行后需要再输入密码,第1个仅指定了远程的目录,文件名字不变,第2个指定了文件名;
  • 第3,4个没有指定用户名,命令执行后需要输入用户名和密码,第3个仅指定了远程的目录,文件名字不变,第4个指定了文件名;

应用实例:

scp /home/space/music/1.mp3 [email protected]:/home/root/others/music
scp /home/space/music/1.mp3 [email protected]:/home/root/others/music/001.mp3
scp /home/space/music/1.mp3 www.runoob.com:/home/root/others/music
scp /home/space/music/1.mp3 www.runoob.com:/home/root/others/music/001.mp3

(3)案例实操

(a)在hadoop101上,将hadoop101中/opt/module目录下的软件拷贝到其他节点上。

[[email protected] hadoop]# scp -r /opt/module  [email protected]:/opt/module
The authenticity of host ‘hadoop002 (47.111.251.212)‘ can‘t be established.
ECDSA key fingerprint is SHA256:YNsodxgiTBhRi6BaO1LqQrkOeudAVMaRisZJQdaJdAA.
ECDSA key fingerprint is MD5:b5:82:88:93:92:6a:01:ed:4d:6f:80:bc:68:1a:e8:c9.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added ‘hadoop002,47.111.251.212‘ (ECDSA) to the list of known hosts.
root@hadoop002‘s password:
Permission denied, please try again.
root@hadoop002‘s password:
THIRDPARTYLICENSEREADME.txt                                                                                                        100%  142KB   6.2MB/s   00:00
LICENSE                                                                                                                            100%   11KB   1.9MB/s   00:00
NOTICE                                                                                                                             100%   13KB   2.2MB/s   00:00
3RDPARTY                                                                                                                           100%   11KB   1.8MB/s   00:00
dblook.bat                                                                                                                         100% 1387   236.1KB/s   00:00

(b)将hadoop101中/etc/profile文件拷贝到其他节点的/etc/profile上。

[[email protected] hadoop-2.7.2]# scp /etc/profile [email protected]:/etc/profile
[email protected]hadoop002‘s password:
profile                                                                                                                            100% 2012   342.8KB/s   00:00
[root@hadoop001 hadoop-2.7.2]# scp /etc/profile [email protected]:/etc/profile
[email protected]hadoop003‘s password:
profile                                                                                                                            100% 2012   529.6KB/s   00:00
[root@hadoop001 hadoop-2.7.2]# scp /etc/profile [email protected]:/etc/profile

注意:拷贝过来的配置文件别忘了source一下/etc/profile,。

2.    rsync 远程同步工具

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

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

(1)基本语法

rsync    -rvl       $pdir/$fname              $user@hadoop$host:$pdir/$fname

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

选项参数说明

表2-2


选项


功能


-r


递归


-v


显示复制过程


-l


拷贝符号连接

(2)案例实操

(a)把hadoop101机器上的/opt/module目录同步到hadoop003服务器的root用户下的/opt/目录

[[email protected] hadoop]# vim /etc/hosts
[[email protected] hadoop]# rsync -rvl /opt/module/ [email protected]:/opt/module
The authenticity of host ‘hadoop003 (47.111.232.53)‘ can‘t be established.
ECDSA key fingerprint is SHA256:YKGJjhv5Q/fneno2xR5HWQjFBkeZL09SF4RwtWI8tC4.
ECDSA key fingerprint is MD5:30:ad:2b:59:1c:a8:37:d3:bf:69:6b:7d:8f:ee:3b:b8.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added ‘hadoop003,47.111.232.53‘ (ECDSA) to the list of known hosts.
root@hadoop003‘s password:
sending incremental file list
created directory /opt/module
./
hadoop-2.7.2/
hadoop-2.7.2/LICENSE.txt
hadoop-2.7.2/NOTICE.txt
hadoop-2.7.2/README.txt
hadoop-2.7.2/hdfs-site.xml
hadoop-2.7.2/bin/
hadoop-2.7.2/bin/container-executor
hadoop-2.7.2/bin/hadoop

3.    xsync集群分发脚本

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

(2)需求分析:

(a)rsync命令原始拷贝:

rsync  -rvl     /opt/module              [email protected]:/opt/

(b)期望脚本:

xsync要同步的文件名称

(3)脚本实现

(a)在/usr/local/bin目录下xsync创建文件,文件内容如下:

[[email protected] module]# cd /usr/local/bin
[[email protected] bin]# ll
total 4
-rw-r--r-- 1 root root 498 Jan 14 22:57 xsync
[root@hadoop002 bin]# chmod 777 xsync
[[email protected] bin]# ll
total 4
-rwxrwxrwx 1 root root 498 Jan 14 22:57 xsync
[root@hadoop002 bin]# pwd
/usr/local/bin
[root@hadoop002 bin]# cat xsync
#!/bin/bash
#1 获取输入参数个数,如果没有参数,直接退出
pcount=$#
if((pcount==0)); then
echo no args;
exit;
fi

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

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

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

#5 循环
for((host=3; host<5; host++)); do
        echo ------------------- hadoop$host --------------
        rsync -rvl $pdir/$fname $user@hadoop00$host:$pdir
done

[root@hadoop002 bin]#

原文地址:https://www.cnblogs.com/dalianpai/p/12194593.html

时间: 2024-08-04 23:01:26

Hadoop的分发脚本编写的相关文章

hadoop 批量处理脚本编写

编写shell脚本就是解决批量处理 1. 在/usr/local/bin 创建脚本 并授权所有用户 chmod a+x  xcall.sh xcall.sh 比如:删除/tmp/*所有文件   批量删除4台服务器的/tmp/*所有文件 xcall.sh rm -rf /tmp/* 2 rsync 远程同步 速度快 四个机器均安装rsync命令. s129 s128 s127 s126 远程同步. $>sudo yum install rsync 或 yum install rsync rsync

为Hadoop的MapReduce程序编写makefile

最近需要把基于hadoop的MapReduce程序集成到一个大的用C/C++编写的框架中,需要在make的时候自动将MapReduce应用进行编译和打包.这里以简单的WordCount1为例说明具体的实现细节,注意:hadoop版本为2.4.0. 源代码包含两个文件,一个是WordCount1.java是具体的对单词计数实现的逻辑:第二个是CounterThread.java,其中简单的当前处理的行数做一个统计和打印.代码分别见附1. 编写makefile的关键是将hadoop提供的jar包的路

Hadoop自动化部署脚本

摘自:http://www.wangsenfeng.com/articles/2016/10/27/1477556261953.html 1 概述 最近自己写了一个Hadoop自动化部署脚本,包括Hadoop集群自动化部署脚本和Hadoop增加单节点自动化部署脚本.需要快速部署Hadoop集群的童鞋可以使用该脚本.这些脚本我在用5台虚拟机进行了测试,如果在使用中还有bug,欢迎指出.本文主要介绍Hadoop集群自动化部署脚本,安装的Hadoop版本为2.6.0. 2 依赖 安装Hadoop2.6

linux分发脚本

秒密钥前提下的分发脚本: [[email protected] scriptc]$ cat fenfa.sh #!/bin/bash . /etc/init.d/functions if [ $# -ne 2 ] then echo "argv is not right." exit 1 fi for ip in `cat iplist` do scp -P52113 $1 [email protected]$ip:$2  >/dev/null 2>&1 if [

LoadRunner脚本编写

一.脚本编写 案例一 Action() { //请求1 web_custom_request("WebTours", //可以自定义 "URL=http://127.0.0.1:1080/WebTours/", //Get请求的地址 "Method=GET", //方式GET "Resource=0", //说明URL是否是一个资源,0代表不是资源,1代表是资源 "RecContentType=text/html&q

SecureCRT中python脚本编写

SecureCRT中python脚本编写学习指南 SecureCRT python 引言 在测试网络设备中,通常使用脚本对设备端进行配置和测试以及维护:对于PE设备的测试维护人员来说使用较多是SecureCRT工具:SecureCRT支持VB.JavaScript.Python等多种脚本语言,为了实现脚本在CRT中更加丰富稳定地执行,掌握CRT的常用函数是非常有用的.接下来的时间我将对SecureCRT脚本编写的常用函数展开学习应用. 内容 (1)使用python语言实现SecureCRT中的D

SecureCRT脚本编写常用函数(一)

SecureCRT脚本编写常用函数(一) 测试 python 引言 在测试网络设备中,通常使用脚本对设备端进行配置和测试以及维护:对于PE设备的测试维护人员来说使用较多是SecureCRT工具:SecureCRT支持VB.JavaScript.Python等多种脚本语言,为了实现脚本在CRT中更加丰富稳定地执行,掌握CRT的常用函数是非常有用的.接下来的时间我将对SecureCRT脚本编写的常用函数展开学习应用. 索引 本阶段重点对SecureCRT中Screen相关函数进行学习,针对Pytho

LoadRunner学习---脚本编写(4)(比较重要)

今天接着来翻译http://www.wilsonmar.com/中关于LoadRunner脚本编写部分,下面该翻译脚本编写中一些比较重要的部分了. Web用户Action 在VuGen中,脚本产生的默认模式是基于HTML的--“描述用户的动作的脚本”直接与用户的动作是对应的: * web_url是浏览器地址栏的URL. * web_link是点击在<a href= ...>和<a>之间的文本超链接. * web_image是点击HTML的<img href= link. *

Hadoop的shell脚本分析

你会发现hadoop-daemon.sh用于启动单独的本机节点 而hadoop-daemons.sh 会批量的ssh到别的机器启动 前记: 这些天一直学习hadoop,学习中也遇到了许多的问题,主要是对hadoop的shell脚本和hadoop的源码概念不够清楚,所以我就对hadoop的bin目录下的shell脚本进行了研究,有一些成果想记录下来,也希望大家前来批评指正. 分析原因: 很多hadoop的初学者对hadoop的脚本不是很清楚,不知道为什么可以在命令行中启动hadoop,也不知道为什