Hadoop_02_Shell编程,Linux环境准备和zookeeper

Shell编程

注意!:
shell编程,除了变量不能空格,其他到处都要空格
表达式和运算符之间要有空格 2 + 2

vim可以通过以下命令显示行数
:set nu

a=4
b=20
echo expr $a + $b
//先执行a + b为24,再将24作为字符串打印
//expr为表达式运算符
加:+
减:-
乘:*
除:/

# 此外,还可以通过(())、 $[]进行算术运算。
count=1
((count++))
echo $count
a=$((1+2))
a=$[1+2]

if else

if [ condition1 ] //注意这里的中括号内要空格
then
command1
elif condition2
then
command2
else
commandN
fi

条件表达式写法
EQ 就是 EQUAL等于
NQ 就是 NOT EQUAL不等于
GT 就是 GREATER THAN大于 
LT 就是 LESS THAN小于
GE 就是 GREATER THAN OR EQUAL 大于等于
LE 就是 LESS THAN OR EQUAL 小于等于

for

方式一
for N in 1 2 3
do
echo $N
done

for N in 1 2 3; do echo $N; done

for N in {1…3}; do echo $N; done

方式二
for ((i = 0; i <= 5; i++))
do
echo “welcome $i times”
done

for ((i = 0; i <= 5; i++)); do echo “welcome $i times”; done

while

method 1
while expression
do
command

done

method2

#!/bin/bash
i=1
while (( i <= 3))
do 
 let i++
 echo $i
done

#echo $i
let 命令是 BASH 中用于计算的工具,用于执行一个或多个表达式,变量
计算中不需要加上 $ 来表示变量。 自加操作: let no++ 自减操作: let no–

method3
while true
do
command
done

Case

case 值 in
模式 1)
command1
command2

commandN
;;

模式 2)
command1
command2

commandN
;;
esac

交互对话例子

#!/bin/bash
echo '输入 1 到 4 之间的数字:'
echo '你输入的数字为:'
read aNum
case $aNum in
    1)  echo '你选择了 1'
    ;;
    2)  echo '你选择了 2'
    ;;
    3)  echo '你选择了 3'
    ;;
    4)  echo '你选择了 4'
    ;;
    *)  echo '你没有输入 1 到 4 之间的数字'
    ;;
esac

函数

[ function ] funname [()]
{
action;
[return int;]
}

#!/bin/bash
function hello(){
	echo "传入给我的第一个参数”$1
	echo "abc"
echo "给我传点参数“
}

hello $1
# sh func.sh helloworld //在外面调用时传入参数

Linux环境准备

三台机器:

  1. 关闭防火墙
    service iptables stop
    chkconfig iptables off
  2. 关闭selinux
    vim /etc/selinux/config
    将SELINUX=enforcing注释掉
    添加SELINUX=disabled
  3. 三台机器更改主机名
    vim /etc/sysconfig/network
  4. 三台机器做主机名与IP地址的映射
    vim /etc/hosts (这里的每一台需要把三台的映射都添加上去)
  5. 三台机器重启
    reboot -h now

三台机器免密码登录

  1. 三台机器生成公钥与私钥
    ssh-keygen -t rsa
    2.拷贝公钥到同一台机器
    ssh-copy-id node01.hadoop.com (三台均执行)
  2. 复制第一台机器的认证到其他机器
    scp /root/.ssh/authorized_keys node02.hadoop.com:/root/.ssh
    scp /root/.ssh/authorized_keys node03.hadoop.com:/root/.ssh
  3. 验证,例如:在node03中
    ssh node01
    exit
    ssh node02
    exit
    每个都与其他进行连接测试

三台机器时钟同步

  1. 保证虚拟机连上外网
    ntpdate us.pool.ntp.org
  2. 三台机器定时任务
    crontab -e
    */1 * * * * /usr/sbin/ntpdate ntp4.aliyun.com

三台机器JDK的安装

统一两个路径
mkdir -p /export/softwares 存放我们的软件的压缩包
mkdir -p /export/servers 存放我们软件解压之后的路径

步骤

  1. 安装工具,方便我们上传文件
    yum -y install lrzsz
    安装好后,cd到softwares文件夹,直接将jdk的包拖拽至Xshell界面,三个虚拟机都要
  2. 通过shell脚本一键安装jdk
    一定要注意:尽量先备份三台机器的 /etc/profile这个文件
    cp /etc/profile /export/servers/
  3. servers下建立shells文件夹,cd shells/
    vim install_jdk.sh
  4. sh install_jdk.sh
  5. source /etc/profile //使更改生效
#!/bin/bash

# 第一步:先解压我们的安装包

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

cd /export/servers/jdk*
mypath=`pwd`

echo "export JAVA_HOME=$mypath" >> /etc/profile
echo "export PATH=:\$JAVA_HOME/bin:\$PATH" >> /etc/profile

#安装我们第二台与第三台的jdk
#直接将我们第一台安装好的拷贝过去即可

for m in 2 3 
do
 scp -r /export/servers/jdk* node0$m:/export/servers
done

#  配置第二台与第三台的环境变量
for  n in 2 3
do
 ssh node0$n "echo 'export JAVA_HOME=$mypath' >> /etc/profile; echo 'export PATH=:\$JAVA_HOME/bin:\$PATH' >> /etc/profile "
done

Note
" > 追加内容,之前内容被覆盖 "
" >> 直接在最后一行追加 "

zookeeper

一个分布式的服务协调框架 主要用于协调辅助其他的框架正常的运行。主要是为了解决应用系统当中的一致性问题。

zk的本质上是一个分布式的小文件存储系统:zk上面的每个文件内容最好不要超过1M

分布式:每台机器看到的数据都是一样的

zk主要作用

  1. 统一命名服务
  2. 统一配置管理

zookeeper的特性

  1. 全局的数据一致性:
    保证每台机器看到的数据都是一模一样的
  2. 可靠性:
    如果数据被一台服务器接收,最终会被所有服务器接收
  3. 顺序性:
    如果a消息在b消息之前被处理,那么所有的机器上面都是a消息在b消息之前被处理
  4. 数据更新的原子性:
    数据更新处理要么成功,要么失败,不存在一半成功一半失败的情况
  5. 实时性:
    数据的更新在一段时间内最终都会被所有的机器接收成功
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值