Hadoop学习笔记-004-CentOS_6.5_64_批处理命令脚本

摘要:
参考资源:http://blog.csdn.net/u010270403/article/details/51444677虚拟机中有五个centos系统,每个系统有两个用户root和hadoop:cdh1、cdh2、cdh3、cdh4和cdh5。集群规划的步骤1:切换到hadoop主目录,然后在hadoop目录下创建工具目录(仅在一台机器上,以cdh1为例)。创建工具目录#mkdirto

参考:http://blog.csdn.net/u010270403/article/details/51444677

虚拟机中共五个centos系统,每个系统有两个用户root和hadoop:cdh1,cdh2,cdh3,cdh4,cdh5

集群规划

Hadoop学习笔记-004-CentOS_6.5_64_批处理命令脚本第1张

第一步,切换到hadoop的家目录下,然后在hadoop家目录下创建  tools目录(只在一台机器即可,以cdh1为例)

创建tools目录

#mkdir tools

Hadoop学习笔记-004-CentOS_6.5_64_批处理命令脚本第2张

第二步,在tools目录下创建三个批处理文件:deploy.conf、deploy.sh、runRemoteCmd.sh(因为后续还要用Hadoop为这三个文件赋权限,且只有Hadoop用户会用这些文件,所以这三个文件用Hadoop用户创建)

创建deploy.conf

#vi deploy.conf
cdh1,all,namenode,journalnode,resourcemanager,
cdh2,all,namenode,journalnode,slave,resourcemanager,
cdh3,all,zookeeper,slave,journalnode,datanode,nodemanager,
cdh4,all,zookeeper,slave,journalnode,datanode,nodemanager,
cdh5,all,zookeeper,slave,journalnode,datanode,nodemanager,

创建deploy.sh

#vi deploy.sh
#!/bin/bash  
#set -x  
  
#判断参数是否小于3个,因为运行deploy.sh需要有源文件(或源目录)和目标文件(或目标目录),  
#以及在MachineTag(哪些主机)上执行,这个标记就是上面deploy.conf中的标记 ,如 zookeeper、all等  
#使用实例如:我们把app目录下的所有文件复制到远程标记为zookeeper的主机上的/home/hadoop/app目录下  
# ./deploy.sh  /home/hadoop/app /home/hadoop/app zookeeper  
#执行完上述命令后,shell脚本文件就自动把CDHNode1下的app目录中的文件复制到三个zookeeper节点的app目录下  
if [ $# -lt 3 ]    
then   
  echo "Usage: ./deply.sh srcFile(or Dir) descFile(or Dir) MachineTag"  
  echo "Usage: ./deply.sh srcFile(or Dir) descFile(or Dir) MachineTag confFile"  
  exit   
fi  
#源文件或源目录  
src=$1  
#目标文件或目标目录  
dest=$2
#标记  
tag=$3  
  
#判断是否使用deploy.conf配置文件,或者自己指定配置文件  
  
if [ 'a'$4'a' == 'aa' ]  
then  
  confFile=/home/hadoop/tools/deploy.conf  
else   
  confFile=$4  
fi  
  
#判断配置文件是否是普通文本文件  
if [ -f $confFile ]  
then  
#判断原件是普通文件还是目录  
 if [ -f $src ]  
  then  
#如果是普通文件就把解析出标记对应的主机名的ip  
 for server in `cat $confFile|grep -v '^#'|grep ','$tag','|awk -F',' '{print $1}'`   
    do  
       scp $src $server":"${dest}  #使用循环把文件复制到目标ip上的相应目录下  
       echo "循环"$src $server":"${dest}
    done   
  elif [ -d $src ]  
  then  
    for server in `cat $confFile|grep -v '^#'|grep ','$tag','|awk -F',' '{print $1}'`   
    do  
       scp -r $src $server":"${dest}  
       echo "循环"$src $server":"${dest}
    done   
  else  
      echo "Error: No source file exist"  
  fi  
  
else  
  echo "Error: Please assign config file or run deploy.sh command with deploy.conf in same directory"  
fi

创建runRemoteCmd.sh#vi runRemoteCmd.sh

#!/bin/bash  
#set -x  
#判断参数个数  
#实例如:显示所有节点的java进程,中间用引号的就是命令,这个命令将在所以节点上执行  
#./runRemoteCmd.sh  "jps" all  
if [ $# -lt 2 ]  
then   
  echo "Usage: ./runRemoteCmd.sh Command MachineTag"  
  echo "Usage: ./runRemoteCmd.sh Command MachineTag confFile"  
  exit   
fi  
  
cmd=$1  
tag=$2  
if [ 'a'$3'a' == 'aa' ]  
then  
   
  confFile=/home/hadoop/tools/deploy.conf  
else   
  confFile=$3  
fi  
  
if [ -f $confFile ]  
then  
    for server in `cat $confFile|grep -v '^#'|grep ','$tag','|awk -F',' '{print $1}'`   
    do  
       echo "*******************$server***************************"  
       ssh $server "source /etc/profile; $cmd"    
# 注意在使用的时候要根据自己设置的环境变量的配置位置,给定相应的source源 ,  
# 如 我把环境变量设/home/hadoop/.bash_profile文件下,就需要上面这条命令改为  
# ssh $server "source /home/hadoop/.bash_profile;$cmd"  
#上面的例子:这条命令就是在远程标记为tag的主机下执行这个命令jps。  
 done   
else  
  echo "Error: Please assign config file or run deploy.sh command with deploy.conf in same directory"  
fi 

第三步,给脚本文件添加执行权限

#chmod u+x deploy.sh

#chmod u+x runRemoteCmd.sh

Hadoop学习笔记-004-CentOS_6.5_64_批处理命令脚本第3张

第五步,在cdh1节点上,通过runRemoteCmd.sh脚本,一键创建所有节点的软件安装目录/home/hadoop/app    

# ./runRemoteCmd.sh "mkdir /home/hadoop/app" all

查看cdh1和cdh2家目录

cdh1

Hadoop学习笔记-004-CentOS_6.5_64_批处理命令脚本第4张

cdh2

Hadoop学习笔记-004-CentOS_6.5_64_批处理命令脚本第5张

在cdh1上进入~/tools,执行runRemoteCmd.sh脚本,并查看Hadoop家目录

cdh1

Hadoop学习笔记-004-CentOS_6.5_64_批处理命令脚本第6张

cdh2

Hadoop学习笔记-004-CentOS_6.5_64_批处理命令脚本第7张

完成!

免责声明:文章转载自《Hadoop学习笔记-004-CentOS_6.5_64_批处理命令脚本》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇matlab 矩阵作图 [转]修改vsftpd默认端口21下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

安卓系统手机目录

一、文件夹 1./acct/    系统回收站,删除的系统文件。     2./cache/    缓存     3./data/    用户的所有程序相关数据     app/    所有用户安装的apk文件     app-private/     data/    每一个应用的数据         com.xx.appname/    每一个应用的数...

如何在任何目录下通过鼠标右键新建 Typora 文件

1. 打开注册表: 2. 定位 HKEY_CLASSES_ROOTDirectoryBackgroundshell 目录,建议手动从根目录下一级级查找,系统查找注册表很慢。 3. 在 shell 上右键新建 “项”,取名为 Typora 4. 双击 Typora 右边窗口的默认文件,填写 Typora 字符串,表示鼠标右键时显示的文件名称。 5....

(7) MySQL数据库备份详解

对于任何数据库来说,备份都是非常重要的 数据库复制不能取代备份的作用 比如我们由于误操作,在主数据库上删除了一些数据,由于主从复制的时间很短,在发现时,从数据库上的数据可能也已经被删除了, 我们不能使用从数据库上的数据来恢复主数据库上的数据,只能通过备份进行误删除数据的恢复 一. 备份的分类 1.按备份的结果来分: 逻辑备份 其备份结果为SQL语句,适合于...

svn的应用

SVN 如何来进行多人协作开发? 在实际工作中,通常是一个小组或者一个团队一起开发同一个项目,不同的人开发不同的功能模块,有一个公共的地方存放项目代码。 如果多个人同时对同一个文件做了修改,比如按照分工,两个人分别做文章模块的增删改查功能,需要操作同一个文件article控制器,如果大家同时完成工作并提交代码,会出现一个代码覆盖的问题。 解决办法: ①合理...

CentOS 6安装Oracle 11gR2数据库

1.安装环境--- 操作系统:CentOS release 6.8 (Final) oracle:Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production 【1】安装依赖包: yum -y install binutils compat-libcap1 co...

Hive入门学习随笔(一)

===什么是Hive? Hive是基于Hadoop HDFS之上的数据仓库。 我们可以把数据存储在这个基于数据的仓库之中,进行分析和处理,完成我们的业务逻辑。 本质上就是一个数据库 ===什么是数据仓库? 实际上就是一个数据库。我们可以利用数据仓库来保存我们的数据。 与一般意义上的数据库不同。数据库是一个面向主题的、集成的、不可更新的、随时间不变化的数据集...