您的位置:首页 > 大数据 > Hadoop

Hadoop_02_Shell编程,Linux环境准备和zookeeper

2020-07-12 17:40 232 查看

文章目录

  • 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. 实时性:
      数据的更新在一段时间内最终都会被所有的机器接收成功
    内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
    标签: