第三章 Hadoop 运行模式(1)

第三章 Hadoop 运行模式

Hadoop运行模式包括三种模式

  • 本地模式(local)
    • 单机运行 只是用来演示一下官方的案例
  • 伪分布式模式
    • 也是单机运行,但是具备集群的功能,一台服务器模拟一个分布式环境,可用于测试
  • 完全分布式模式
    • 多个服务器组成的集群 生成环境使用

3.1 本地模式(官方wordcount)

  1. 准备一个测试文件 在文件中写入一下数据

    vim wcinput
    
    hadoop yarn
    hadoop mapreduce
    a b
    c a
    
  2. 执行测试用例

    hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-3.1.3.jar  wordcount wcinput wcoutput
    
  3. 查看结果

     cat wcoutput/part-r-00000
    
    看到如下结果:
    hadoop 2
    mapreduce 1
    yarn`	1
    a 	2
    b	1
    c 1
    

3.2 完全分布式运行模式

基本流程

  1. 准备 3 台客户机(关闭防火墙、静态 IP、主机名称)
  2. 安装 JDK
  3. 配置环境变量
  4. 安装 Hadoop
  5. 配置环境变量
  6. 配置集群
  7. 单点启动
  8. 配置 ssh
  9. 集群起动并测试集群

3.2.1 虚拟机准备

3.2.2 编写集群分发脚本 xsync

rsync 主要用于备份和镜像。具有速度快、避免复制相同内容和支持符号链接的优点。

rsync 和 scp 区别:用 rsync 做文件的复制要比 scp 的速度快,rsync 只对差异文件做更

新。scp 是把所有文件都复制过去

  1. xsync 集群分发脚本

    1. 需求:循环复制文件到所有节点的相同目录下

    2. 需求分析:

      1. rsync 命令原始拷贝:

        rsync -av /opt/module admin@hadoop103:/opt/
        
      2. 期望脚本:

      3. 期望脚本在任何路径都能使用(脚本放在声明了全局环境变量的路径)

        [admin@hadoop102 ~]$ echo $PATH
        /usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/home/atgu
        igu/.local/bin:/home/admin/bin:/opt/module/jdk1.8.0_212/bi
        n
        
    3. 脚本实现

      1. 在/home/admin/bin 目录下创建 xsync 文件

      2. 在该文件中编写如下代码

        #!/bin/bash
        #1. 判断参数个数
        if [ $# -lt 1 ]
        then
        echo Not Enough Arguement!
        exit;
        fi
        #2. 遍历集群所有机器
        for host in hadoop102 hadoop103 hadoop104
        do
        echo ==================== $host ====================
        #3. 遍历所有目录,挨个发送
        for file in $@
        do
        #4. 判断文件是否存在
        if [ -e $file ]
        then
        #5. 获取父目录
        pdir=$(cd -P $(dirname $file); pwd)
        #6. 获取当前文件的名称
        fname=$(basename $file)
        ssh $host "mkdir -p $pdir"
        rsync -av $pdir/$fname $host:$pdir
        else
        echo $file does not exists!
        fi
        done
        done
        
      3. 修改脚本 xsync 具有执行权限

        chmod +x xsync
        
      4. 测试脚本

        [atguigu@hadoop102 ~]$ xsync /home/atguigu/bin

      5. 将脚本复制到/bin 中,以便全局调用

        [atguigu@hadoop102 bin]$ sudo cp xsync /bin/

      6. 同步环境变量配置(root 所有者)

        sudo ./bin/xsync  	/etc/profile.d/my_env.sh
        

        注意:如果用了 sudo,那么 xsync 一定要给它的路径补全。

      7. 让环境变量生效

        source /etc/profile
        

    3.2.3 SSH无密登录配置

    1. 配置ssh

      1. 基本语法

        ssh 另一台电脑的ip地址
        
      2. ssh连接时候出现hostkey verification failed的解决办法

      3. 退出ssh 连接

        exit
        
    2. 无秘钥配置

      1. 免密登录的原理

        1. 服务器a和服务器b
        2. 在a上使用ssh-key-gen生成秘钥对,一个公钥和一个私钥
        3. 将a上的公钥拷贝到需要免密登录的服务器b上,
        4. 通过ssh访问b是通过a中的私钥加密访问的b,
        5. 接受到数据后,去授权key(Authorized_keys)中查找a的公钥,并解密数据
        6. 采用a公钥加密的数据放回给a
      2. 生成公钥和私钥

        cd ~/.ssh
        ssh-keygen -t ras
        
      3. 将公钥拷贝到要免密登录的目标服务器上

        ssh -copy-id hadoop02
        ssh -copy-id hadoop03
        

      注意:;

      • 还需要在hadoop103 hadoop104上采用admin账号配置一下无密登录到hadoop102,hadoop103,hadoop104
      • 还需要在hadoop102上使用root账号配置无密登录到hadoop102,hadoop103,hadoop104
    3. .ssh文件夹的文件功能解释

      • knows_host 记录ssh访问过计算机的公钥(public key)
      • id_rsa 生成的私钥
      • id_rsa.pub 生成的公钥
      • authorized_keys 存放授权访问过的无密登录服务器的公钥

猜你喜欢

转载自blog.csdn.net/hs_shengxiaguangnian/article/details/115825497
今日推荐