hadoop离线 day02 shell编程与三台虚拟机互信和zookeeper

1391-王同学

发表文章数:51

热门标签

, , , ,
首页 » 大数据 » 正文

一、 shell脚本

mkdir -p /export/software 存放所有软件压缩包
mkdir -p /export/servers 压缩包解压之后的路径

1.shell脚本执行的两种方式

sh hello.sh # 或者 bash hello.sh

chmod -R 777 hello.txt
./hello.txt

2. shell变量

  • 变量的定义:
    变量=值 如:your_name=‘wuyifan’
    注意等号两边不能有空格

  • 变量的使用:${变量名}

  • 变量的范围:

局部变量:仅仅在当前窗口有效

环境变量:所有窗口全部有效,所有的用户共享

shell变量:在shell脚本里使用和定义,只在脚本内有效

  • 参数传递
    $0 :当前脚本的名称
    $1 :命令行传参的第一个参数
    $2 : 命令行传参的第二个参数
    * /@ :传递给脚本的所有参数

3. shell 运算符

表达式和运算符之间要空格

注意:乘法要有转义字符
#! /bin/sh

a=2
b=10

echo `expr $a + $b`

echo `expr $b - $a`

echo `expr  $b /* $a`


echo `expr  $b / $a`


4. 流程控制

if else语句

if condition1
then
command 1
elif condition2
then
command 2
fi

条件表达式语法:

大于 -gt (greater than)
小于 -lt (less than)
大于或等于-ge (greater than or equal)
小于或等于 -le (less than or equal)
不相等 -ne (not equal)

for 循环

#! /bin/bash
for x in node1 node2 node3
do
 echo $x
done


while 语法

#! /bin/bash
i=1

while ((i<5))
do
 echo $i
 let i++
done
#! /bin/bash
#case语句
echo 'Input a number between 1 to 4'
echo 'Your number is:/c'
read aNum
case $aNum in
    1)  echo 'You select 1'
    ;;
    2)  echo 'You select 2'
    ;;
    3)  echo 'You select 3'
    ;;
    4)  echo 'You select 4'
    ;;
    *)  echo 'You do not select a number between 1 to 4'
    ;;
esac

5. 函数的定义

function funname(){

}

案例:

#!/bin/bash

funWithParam(){
    echo "第一个参数为 $1 !"
    echo "第二个参数为 $2 !"
    echo "第十个参数为 $10 !"
    echo "第十个参数为 ${10} !"
    echo "第十一个参数为 ${11} !"
    echo "参数总数有 $# 个!"
    echo "作为一个字符串输出所有参数 $* !"
}
funWithParam 1 2 3 4 5 6 7 8 9 34 73

二、大数据集群环境准备

1. 关闭防火墙

service iptables stop
chkconfig iptables off
  • 关闭selinux
vi /etc/selinux/config

修改SELINUX的值为disabled
hadoop离线 day02 shell编程与三台虚拟机互信和zookeeper
三台主机都要修改

2. 修改主机名

vim /etc/sysconfig/network

修改hostname参数
hadoop离线 day02 shell编程与三台虚拟机互信和zookeeper
三台主机都要修改

3. 主机名与IP地址映射

vim /etc/hosts

增加3行:
192.168.116.100 node01.hadoop.com node01
192.168.116.101 node02.hadoop.com node02
192.168.116.102 node03.hadoop.com node03
hadoop离线 day02 shell编程与三台虚拟机互信和zookeeper
三台主机都要修改

3. 三台机器免密登录

1)每台机器上生成公钥与私钥(下面的命令三台机器各运行一次)

ssh-keygen -t rsa
# 三次回车

hadoop离线 day02 shell编程与三台虚拟机互信和zookeeper

2)将每台机器的私钥拷贝到第一台机器(下面的命令三台机器各运行一次)

ssh-copy-id node01
#依次输入yes和密码即可

hadoop离线 day02 shell编程与三台虚拟机互信和zookeeper

3)将第一台机器的authorized_keys 拷贝到第二台第三台上面去(下面的命令只在第一台执行)

scp /root/.ssh/authorized_keys mode02/root/.ssh
scp /root/.ssh/authorized_keys mode03/root/.ssh
# 两次命令均需要依次输入yes和登录密码

hadoop离线 day02 shell编程与三台虚拟机互信和zookeeper
至此三台机器的互信已经完成。
可以检验一下,在node01上输入:

ssh node02

已经可以免密登录
hadoop离线 day02 shell编程与三台虚拟机互信和zookeeper

4. 三台机器的时钟同步

1、检查是否安装ntpd
rpm -qa |grep ntpd
2、与阿里云始终服务器对齐
ntpdate ntp4.aliyun.com
3、设置定时同步任务

 crontab -e
 # 打开定时任务文件
 # 加入一行:
 # */1 * * * * /usr/sbin/ntpdate ntp4.aliyun.com

5. JDK安装

1、查看自带的openjdk
rpm -qa |grep ntpd
2、删除上一步返回的三个JDK,(用空格隔开)
rpm -e java-1.6.0-openjdk-1.6.0.41-1.13.13.1.el6_8.x86_64 tzdata-java-2016j-1.el6.noarch java-1.7.0-openjdk-1.7.0.131-2.6.9.0.el6_8.x86_64 –nodeps

3、node02和node03也依次执行hadoop离线 day02 shell编程与三台虚拟机互信和zookeeper
mkdir -p /export/servers
mkdir -p /export/softwares

1、拷贝JDK文件到node01的 /export/softwares 目录下,新建文件install_jdk.sh,将如下脚本拷贝进去并执行脚本,即可安装三台机器

#!/bin/bash

tar -zxvf /export/softwares/jdk-8u141-linux-x64.tar.gz -C /export/servers/

cd /export/servers/jdk1.8.0_141
home=`pwd`

echo $home

echo "export JAVA_HOME=${home}"  >> /etc/profile
echo "export PATH=:/$PATH:/$JAVA_HOME/bin" >> /etc/profile


for m in  2 3
do
scp -r /export/servers/jdk1.8.0_141 node0$m:/export/servers/
ssh node0$m "echo 'export JAVA_HOME=/export/servers/jdk1.8.0_141' >> /etc/profile; echo 'export PATH=:/$PATH:/$JAVA_HOME/bin' >> /etc/profile"

done

更新/etc/profile文件并检验安装是否成功(三台机器均需要执行)

source  /etc/profile
java -version

返回以下结果既可证明安装完成
hadoop离线 day02 shell编程与三台虚拟机互信和zookeeper

三、zookeeper基本概念

基本概念

hadoop离线 day02 shell编程与三台虚拟机互信和zookeeper

zookeeper的特性

  • 全局数据一致性:每个server保存相同的数据副本
  • 可靠性:如果一个消息被一台server接收,最终被所有的server接收
  • 顺序性:数据处理的过程是有顺序的。如果一台机器上消息A在消息B之前被处理,那么所有的机器上都是这个顺序
  • 数据更新的原子性:数据更新要么成功,要么失败,不存在一半成功一半失败
  • 实时性:数据的更新在一段时间内最终会被所有的机器接收成功

未经允许不得转载:作者:1391-王同学, 转载或复制请以 超链接形式 并注明出处 拜师资源博客
原文地址:《hadoop离线 day02 shell编程与三台虚拟机互信和zookeeper》 发布于2020-11-22

分享到:
赞(0) 打赏

评论 抢沙发

评论前必须登录!

  注册



长按图片转发给朋友

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏

Vieu3.3主题
专业打造轻量级个人企业风格博客主题!专注于前端开发,全站响应式布局自适应模板。

登录

忘记密码 ?

您也可以使用第三方帐号快捷登录

Q Q 登 录
微 博 登 录