美文网首页
VM+centos7+Docker+hadoop完全分布式环境搭

VM+centos7+Docker+hadoop完全分布式环境搭

作者: 云顶天宫写代码 | 来源:发表于2022-11-03 17:39 被阅读0次

    第一步:VMware 安装

    VMware 安装可参考网址 https://www.windowszj.net/pcsoft/youxi/35924.html

    第二步:centos7.9安装

    用root 账户登录centos系统

    第三步:docker环境安装

    3.1 添加docker到yum源

     yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
    

    3.2 安装docker

    #第一步
     yum -y install docker-ce
    #第二步
     sudo mkdir -p /etc/docker
    # 第三步:以下5行全部拷贝
    sudo tee /etc/docker/daemon.json <<-'EOF'
    {
      "registry-mirrors": ["https://10ph4ijp.mirror.aliyuncs.com"]
    }
    EOF
    # 第四步 docker配置生效
    sudo systemctl daemon-reload
    # 第五步  重启docker
    sudo systemctl restart docker
    
    # 开启 docker 自启动
    systemctl enable docker.service
    
    # 关闭 docker 自启动 ( 这一步不用执行!!!!!)
    systemctl disable docker.service
    

    3.3 安装Hadoop

    • 第一步
    # 执行
     docker search hadoop
    # 以下是执行结果,可能每个人略有不同
    NAME                             DESCRIPTION                                     STARS     OFFICIAL   AUTOMATED
    sequenceiq/hadoop-docker         An easy way to try Hadoop                       661                  [OK]
    uhopper/hadoop                   Base Hadoop image with dynamic configuration…   103                  [OK]
    harisekhon/hadoop                Apache Hadoop (HDFS + Yarn, tags 2.2 - 2.8)     67                   [OK]
    bde2020/hadoop-namenode          Hadoop namenode of a hadoop cluster             52                   [OK]
    bde2020/hadoop-datanode          Hadoop datanode of a hadoop cluster             39                   [OK]
    bde2020/hadoop-base              Base image to create hadoop cluster.            20                   [OK]
    uhopper/hadoop-namenode          Hadoop namenode                                 11                   [OK]
    bde2020/hadoop-nodemanager       Hadoop node manager docker image.               10                   [OK]
    bde2020/hadoop-resourcemanager   Hadoop resource manager docker image.           9                    [OK]
    uhopper/hadoop-datanode          Hadoop datanode  
    
    
    • 第二步
    docker pull sequenceiq/hadoop-docker
    
    • 第三步查看安装结果
    #执行 
    docker images  # 查看所有镜像
    # 结果示例
    REPOSITORY                 TAG       IMAGE ID       CREATED       SIZE
    sequenceiq/hadoop-docker   latest    5c3cc170c6bc   7 years ago   1.77GB
    
    • 第四步: 创建三个Hadoop 实例
    docker run --name hadoop -d -h master sequenceiq/hadoop-docker
    docker run --name hadoop1 -d -h slave1 sequenceiq/hadoop-docker
    docker run --name hadoop2 -d -h slave2 sequenceiq/hadoop-docker
    

    可能遇到的问题:

    1. docker ps 执行后没有看到运行的三个实例
    docker ps -a    #查看所有实例
    docker start fe2e78dd16cb c8edd12cef98 04b5376ff60c   # 通过docker start 启动容器,注意替换这三个12位的字符串,根据自己电脑的 Container ID
    
    • 第五步:Hadoop 配置
      再打开三个命令窗口:如下图


      image.png
      image.png

      分别执行

    # master 执行
    docker exec -it hadoop bash
    # slave1 执行
    docker exec -it hadoop1 bash
    # salve2 执行
    docker exec -it hadoop2 bash
    
    image.png

    master、 slave1、slave2 三个窗口都需要执行

    /etc/init.d/sshd start
    ssh-keygen -t rsa # 一直回车即可
    cd /root/.ssh
    cat id_rsa.pub > authorized_keys
    

    本地(第一个)窗口执行

    mkdir /ssh  && cd /ssh
    
    docker cp hadoop:/root/.ssh/authorized_keys ./authorized_keys_master
    
    docker cp hadoop1:/root/.ssh/authorized_keys ./authorized_keys_slave1
    
    docker cp hadoop2:/root/.ssh/authorized_keys ./authorized_keys_slave2
    
    touch authorized_keys
    
    cat authorized_keys_master authorized_keys_slave1 authorized_keys_slave2 > authorized_keys
    cat  authorized_keys  # 查看所有秘钥,下一步要用
    
    # 分别拷贝authorized_keys 到三个hadoop实例
    docker cp /ssh/authorized_keys hadoop:/root/.ssh/authorized_keys
    docker cp /ssh/authorized_keys hadoop1:/root/.ssh/authorized_keys
    docker cp /ssh/authorized_keys hadoop2:/root/.ssh/authorized_keys
    
    master、 slave1、slave2 三个窗口分别执行

    查看ip

    ifconfig
    
    ## 正常情况 master(inet addr:172.17.0.2)
    # slave1(inet addr:172.17.0.3)
    # slave2(inet addr:172.17.0.4)
    
    vi /etc/hosts  ### 追加内容
    172.17.0.2      master
    172.17.0.3      slave1
    172.17.0.4      slave2
    
    cd /root/.ssh  # 进入到免密登录的秘钥目录
    vi authorized_keys   # 编辑秘钥内容 与 本地窗口中的authorized_keys一致
    

    验证免密登录是否成功

    ssh master
    exit
    

    修改Hadoop配置文件

    find / -name hadoop-env.sh
    # /usr/local/hadoop-2.7.0/etc/hadoop/hadoop-env.sh
    cd /usr/local/hadoop-2.7.0/etc/hadoop
    vi core-site.xml
    

    追加以下内容

          <property>
              <name>hadoop.tmp.dir</name>
              <value>/usr/local/hadoop-2.7.0/hdpdata</value>
          </property>
    

    执行

    vi yarn-site.xml
    

    追加以下内容

    <property>
            <name>yarn.resourcemanager.hostname</name>
            <value>172.17.0.2</value>
        </property>
    

    master 窗口执行

    cd /usr/local/hadoop-2.7.0/sbin  && ./stop-all.sh
    
    scp yarn-site.xml slave1:/usr/local/hadoop-2.7.0/etc/hadoop
    
    scp yarn-site.xml slave2:/usr/local/hadoop-2.7.0/etc/hadoop
    
    cd /usr/local/hadoop-2.7.0/bin
    
    ./hadoop namenode -format
    
    cd /usr/local/hadoop-2.7.0/sbin
    
    ./start-all.sh
    

    master、 slave1、slave2 三个窗口分别执行

    jps
    

    运行后的结果如下

    220 DataNode
    549 ResourceManager
    399 SecondaryNameNode
    129 NameNode
    2058 Jps
    642 NodeManager
    

    安装好centos后下载Eclipse
    Eclipse下载地址:
    https://www.eclipse.org/downloads/download.php

    常用的dfs 操作指令

    cd /usr/local/hadoop-2.7.0/bin  # 进入到hdfs 指令所在目录
    
    ./hdfs dfs -ls /   # 查看文件系统根目录
    
    ./hdfs dfs -mkdir /test  # 创建一个test 目录
    
    1668933323357.jpg

    在本地窗口执行

    vi test.txt
    # 随便输入内容,例如:
    ddd
    ddd
    ddd
    dd
    dd
    d
    

    在 master 、slave1、slave2

    1.  cd /usr/local/hadoop-2.7.0/bin
    2. ./hdfs dfs -ls / 
    3. ./hdfs dfs -mkdir /test    # 创建文件夹
    4. ./hdfs dfs -put /home/test.txt /test   # 上传文件
    

    找到MapReduce 的工具包

    cd /usr/local/hadoop-2.7.0/bin
    
     ./hadoop jar $HADOOP_PREFIX/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.0.jar wordcount /test /testoutput 
    # /testoutput 每次执行的时候命名不能重复
    
    ./hdfs dfs -cat /testoutput/part-r-00000  # 查看WordCount 后的数据统计
    

    docker 每次重启后执行的步骤

    打开四个窗口


    image.png

    1、 本地窗口执行-查看所有待启动的容器

    docker ps -a
    
    1669451837907.jpg
    1. 根据 hadoop 、 hadoop1、hadoop2 的顺序,启动容器
    # 这里的ID要替换成自己的哦!!!
    docker start d0841eaaa094 d670c33b3332 aa2ddd814014
    
    image.png
    1. 在master 窗口执行
    docker exec -it hadoop bash
    
    1. 在slave1窗口执行
    docker exec -it hadoop1 bash
    
    1. 在slave2 窗口执行
    docker exec -it hadoop2 bash
    
    1. 在 master、slave1、slave2中分别编辑hosts
    vi /etc/hosts  ### 追加内容
    172.17.0.2      master
    172.17.0.3      slave1
    172.17.0.4      slave2
    

    或者使用 shell 脚本方式
    master 窗口执行

    cd   # 回到容器的根目录
    vi runhosts.sh
    #添加以下内容
    echo  172.17.0.2      master >> /etc/hosts
    echo  172.17.0.3      slave1 >> /etc/hosts
    echo  172.17.0.4      slave2 >> /etc/hosts
    
    #授权脚本
    chmod +x  runhosts.sh 
    # 发送到slave1  slave2
    scp runhosts.sh   slave1:~
    scp runhosts.sh   slave2:~
    
    实训延伸:
    7248cf97c6c42772fc6c63efb0be21c.jpg

    下载的网址: https://github.com/jpetazzo/pipework
    推荐的一个数据相关的博客地址:https://tech.meituan.com/

    相关文章

      网友评论

          本文标题:VM+centos7+Docker+hadoop完全分布式环境搭

          本文链接:https://www.haomeiwen.com/subject/kobpprtx.html