hadoop离线阶段(第二节)shell编程和3台虚拟机同步配置

Shell编程

详见之前写的Linux基础(第四章)Shell编程基础
下面是对之前写的内容的补充

进行加减乘除

echo `expr 1 + 2` #加法
echo `expr 1 - 2` #减法
echo `expr 1 \* 2` #乘法
echo `expr 1 / 2` #除法

注意:
1、用``把式子包起来
2、用expr声明这是一个计算
3、乘法不要直接用*,要用转义符写成\*

case判断

示例:

#!/bin/bash

echo "输入1到5之间的整数"

read aNum #读取输入的内容,相当于java的Scanner.next()或python的input()

case "$aNum" in
1)
echo "你输入的数字是1"
;;
2)
echo "你输入的数字是2"
;;
3)
echo "你输入的数字是3"
;;
4)
echo "你输入的数字是4"
;;
5)
echo "你输入的数字是5"
;;
*)
echo "识别不了!!!"
;;
esac

case判断的注意事项:
1、每个条件完毕后,需要用两个分号;;来分隔
2、case判断写完后需要用esac结尾,类似的有if判断写完后用fi结尾

函数

示例:

#!/bin/bash


function hello() #定义函数
{
	echo "hello world"
	i=0
	for s in $@ #获取输入参数的集合
	do
		i=`expr $i + 1`
		echo "穿入的第${i}个参数是${s}"
	done
	echo "全部参数是$*"
}

hello $@ #调用函数,如果不加$@或$1、$2之类的位置参数,那么函数就不会接收参数

注意:
1、shell语言调用函数不是函数名加括号
2、调用函数如果要接收位置参数,则需要在函数名后写上要接收哪个位置参数

3台虚拟机同步设置

设置3台虚拟机的网络配置

1、分别关闭3台机器的防火墙

service iptables stop #关闭防火墙
chkconfig iptables off #设置防火墙不随开机启动

2、关闭3台机器的selinux

首先,vim /etc/selinux/config,然后作如图修改
在这里插入图片描述

3、更改3台机器的主机名
输入vim /etc/sysconfig/network
在vi界面作修改,第一台改为HOSTNAME=node01.hadoop.com,第二台改为HOSTNAME=node02.hadoop.com,第三台改为HOSTNAME=node03.hadoop.com
4、配置3台机器的ip和主机名映射
输入vim /etc/hosts
3台机器都添加如下内容:

192.168.177.100 node01.hadoop.com node01
192.168.177.110 node02.hadoop.com node02
192.168.177.120 node03.hadoop.com node03

5、分别重启,reboot -h now

设置3台机器的免密登录

1、3台机器分别生成公钥和密钥
输入ssh-keygen -t rsa,需要连续按3下回车才能完成这个命令
2、将3台机器的公钥和私钥都发送给node01
3台机器都执行ssh-copy-id node01.hadoop.com
3、将node01的密钥管理文件拷贝给node02和node03
在node01上执行如下命令:

scp /root/.ssh/authorized_keys node02:/root/.ssh
scp /root/.ssh/authorized_keys node03:/root/.ssh

4、测试免密登录
比如,在node01测试如下命令:

ssh node02 #登录到node02
exit #退出node02的登录,回到本机

设置3台机器时钟同步

时钟同步有两种方式:一是每台机器都向外网的服务器进行时钟校准;二是以集群中的某台机器的时间为准,集群中其他机器向它同步。
示例,通过定时任务向阿里云服务器进行时钟校准:

crontab -e
#编辑定时任务
*/1 * * * * /usr/sbin/ntpdate ntp4.aliyun.com

通过Shell脚本对3台机器安装jdk

1、3台机器都执行

mkdir -p /export/softwares
mkdir -p /export/servers

2、3台机器都执行cd /export softwares,然后yum -y install lrzsz,在完成安装lrzsz后,可以将jdk的tar包直接拖到命令窗口即可以把tar包复制到当前目录了
3、在node01创建脚本install_jdk.sh,脚本内容如下:

#!/bin/bash


tar -zxvf /export/softwares/jdk-8u141-linux-x64.tar.gz -C /export/servers #解压jdk的tar包

cd /export/servers/jdk* #把路径切换到解压后的jdk所在的目录
mypath=$(pwd) #获取jdk所在的目录


echo "export JAVA_HOME=${mypath}" >> /etc/profile #将jdk所在目录写为环境变量JAVA_HOME,并加入到/etc/profile
echo "export PATH=:\$PATH:\$JAVA_HOME/bin" >> /etc/profile #将jdk下的bin目录添加到环境变量PATH


for m in 2 3 #利用for循环,对node02和node03安装jdk和配置环境变量
do
scp -r ${mypath} node0${m}:/export/server #使用scp将node01的jdk解压后的目录复制到node02和node03的用于安装软件的目录下
ssh node0${m} "echo 'export JAVA_HOME=${mypath}' >> /etc/profile; echo 'export PATH=:\$PATH:\$JAVA_HOME/bin' >> /ect/profile" #分别登录到node02和node03,并配置环境变量
done

4、3台机器都执行如下命令,以验证是否jdk安装成功

source /etc/profile #启用profile的更改
$JAVA_HOME #访问环境变量JAVA_HOME

注意事项:
echo "xxx" > filename,是将"xxx"覆盖写入到某文件,echo "xxx" >> filename ,是将"xxx"追加写入到某文件;
“export PATH=:$PATH:$JAVA_HOME/bin” ,在$PATH$JAVA_HOME前添加转义符,是为了不使用path和java_home这两个变量的值,而是直接得到"$PATH:$JAVA_HOME/bin"这个字符串;
在执行脚本前,一定要对3台机器的/etc/profile进行备份。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值