zoukankan      html  css  js  c++  java
  • 基于Docker处理大数据

    一、利用docker-compose

    见之前华为鲲鹏服务器安装docker-compose及运用

    二、利用Hadoop搭建Docker大数据处理集群

    • 在Cnetos7构建大数据分析集群安装Docker并创建Hadoop镜像和三节点容器三步走各配置三节点Hdfs集群、Yarn集群、Spark集群

    2.1安装Docker与创建Hadoop镜像和三节点容器

    2.1.1安装Dcoker

    1
    2
    3
    4
    5
    6
    7
    8

    9

    10

    11

    12

    # 更新yum    
    mv      /etc/yum     .repos.d     /CentOS-Base     .repo      /etc/yum     .repos.d     /CentOS-Base     .repo.backup    
    wget http:     //mirrors     .aliyun.com     /repo/Centos-altarch-7     .repo -O      /etc/yum     .repos.d     /CentOS-Base     .repo    
     
    # 安装docker    
    curl -fsSL https:     //get     .docker.com |      bash      -s docker --mirror Aliyun    
     
    sudo      systemctl start docker    
    sudo      systemctl      enable      docker    

    在这里同样可以使用另一种方式进行备份更换yum源

    mkdir -p /etc/yum.repos.d/repo_bak/
    mv /etc/yum.repos.d/*.repo /etc/yum.repos.d/repo_bak/
    curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.myhuaweicloud.com/repo/CentOS-Base-7.repo

    配置Docker加速器和开机启动服务

    可以使用阿里云,华为云和daocloud使用方法都一样改registry-mirrors为对应的加速地址

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    sudo      mkdir      -p      /etc/docker    
     
    sudo      tee      /etc/docker/daemon     .json <<-     'EOF'    
    {    
           "registry-mirrors"     : [     "***************"     ]    
    }    
    EOF    
     
    sudo      systemctl daemon-reload    
    sudo      systemctl restart docker    

     

    2.2在Docker上创建Hadoop镜像

     从Docker Hub官网仓库上获取centos镜像库

    1
    2
    3
    docker pull centos    
    #查看镜像库    
    docker images    

    生成带有SSH功能的centos的镜像文件并生成centos7-ssh镜像

    为了后面配置各节点之间的SSH免密码登陆,需要在pull下的centos镜像库种安装SSH, 这里利用 Dockerfile 文件来创建镜像

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27

    28

    29

    30

    31

    32

    33

    34

    35

    36

    cd      /usr/local    
      
    # 创建一个存放带ssh的centos镜像Dockerfile文件的目录    
    mkdir      DockerImagesFiles     /centos7     .shh    
      
    #创建带ssh的centos的Dockerfile 文件    
    vi      Dockerfile    
      
    # Dockerfile文件内容    
    #基于centos镜像库创建    
    FROM centos    
    MAINTAINER dys    
    #安装ssh    
    RUN yum      install      -y openssh-server      sudo    
    RUN      sed      -i      's/UsePAM yes/UsePAM no/g'      /etc/ssh/sshd_config    
    RUN yum       install      -y openssh-clients    
      
    #配置root名 username    
    RUN      echo      "root:Jack20"      | chpasswd    
    RUN      echo      "root   ALL=(ALL)       ALL"      >>      /etc/sudoers    
    #生成ssh password-key    
    RUN      ssh     -keygen -t dsa -f      /etc/ssh/ssh_host_dsa_key    
    RUN      ssh     -keygen -t rsa -f      /etc/ssh/ssh_host_rsa_key    
      
    #配置sshd服务    
    RUN      mkdir      /var/run/sshd    
    EXPOSE 22    

    CMD [     "/usr/sbin/sshd"          "-D"     ]

     

    #生成镜像

    docker build -t=     "centos7-ssh"      .       

    docker images  

       

    生成Hadoop镜像库文件

    在构建Hadoop镜像库的Dockerfile所在目录下,上传已经下载的 jdk-8u241-linux-x64.tar.gz, hadoop-2.7.3.tar.gz,Scala-2.11.8.tgz,spark-2.0.1-bin-hadoop2.7.tgz。

    注意:这里要提前在Dockerfile文件配置环境变量,如果镜像库构建完成后,在容器中配置环境变量是不起作用的。

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44

    45

    46

    47

    48

    49

    50

    51

    52

    53

    cd      /usr/local    
      
    # 创建一个存放hadoop镜像Dockerfile文件的目录    
    mkdir      DockerImagesFiles     /hadoop    
      
    #创建带ssh的centos的Dockerfile 文件    
    vi      Dockerfile    
      
    # Dockerfile文件内容    
    #基于centos7-ssh构建    
    FROM centos7-     ssh    
    #安装java    
    ADD jdk-8u241-linux-x64.     tar     .gz      /usr/local/    
    RUN      mv      /usr/local/jdk1     .8.0_241      /usr/local/jdk1     .8    
    #配置JAVA环境变量    
    ENV JAVA_HOME      /usr/local/jdk1     .8    
    ENV PATH $JAVA_HOME     /bin     :$PATH    
    #安装hadoop    
    ADD hadoop-2.7.3.     tar     .gz      /usr/local    
    RUN      mv      /usr/local/hadoop-2     .7.3      /usr/local/hadoop    
    #配置hadoop环境变量    
    ENV HADOOP_HOME      /usr/local/hadoop    
    ENV PATH $HADOOP_HOME     /bin     :$PATH    
      
    #安装scala 注意Spark2.0.1对于Scala的版本要求是2.11.x    
    ADD scala-2.11.8.tgz      /usr/local    
    RUN      mv      /usr/local/scala-2     .11.8      /usr/local/scala2     .11.8    
      
    #配置scala环境变量    
    ENV SCALA_HOME      /usr/local/scala    
    ENV PATH $SCALA_HOME     /bin     :$PATH    
      
    #安装spark    
    ADD spark-2.0.1-bin-hadoop2.7.tgz      /usr/local    
    RUN      mv      /usr/local/spark-2     .0.1-bin-hadoop2.7.tgz      /usr/local/spark2     .0.1    
      
    #配置spark环境变量    
    ENV SPARK_HOME      /usr/local/spark2     .0.1    
    ENV PATH $SPARK_HOME     /bin     :$PATH    
      
    #创建hdfs账号    
    RUN      useradd      hdfs    
    RUN      echo      "hdfs:jack"      | chpasswd    
      

    RUN yum      install      -y      which      sudo

    #生成镜像 

    docker build -t=     "hadoop"      .      

    docker images   

       

    生成三节点Hadoop容器集群

    首先规划一下节点的主机名称,IP地址(局域网内构建docker镜像时,自动分配192.168.10.1/16网段的IP)和端口号

    1
    2
    3
    4
    5
    6
    7
    8
    9

    10

    11

    12

    13

    #创建master容器,80808和8088,8080是用来在浏览器中访问hadoop yarn spark #WEB界面,这里分别映射到物理机的80808和8088,8080端口。    
      
    #重点注意:容器启动后,映射比较麻烦,最好在这里映射。    
    docker run   -d -P -p 80808:80808 -p 8088:8088 -p 8080:8080 --name master -h master --add-host slave01:192.168.10.3 --add-host slave02:192.168.10.4 hadoop    
      
    #创建slave01容器,在容器host文件,添加hostname,并配置其他节点主机名称和IP地址    
    docker run   -d -P --name slave01 -h slave01 --add-host master:192.168.10.2 --add-host slave02:192.168.10.4  hadoop    
      
    #创建slave02容器    
    docker run   -d -P --name slave02 -h slave02 --add-host master:192.168.10.2 --add-host slave01:192.168.10.3  hadoop    

    查看已创建的容器并更改hadoop和spark2.0.1目录所属用户

    1
    2
    3
    4
    5
    #查看已创建的容器    
    docker      ps      -a    
    #更改hadoop和spark2.0.1目录所属用户【需要root用户且三个容器都要执行】    
    chown      -R hdfs:hdfs      /usr/local/hadoop    
    chown      -R hdfs:hdfs      /usr/local/spark2     .0.1    

     

    2.2在Docker上配置三节点Hdfs集群

    开启三个容器终端

    1
    2
    3
    docker      exec      -it master      /bin/bash    
    docker      exec      -it slave01      /bin/bash    
    docker      exec      -it slave02      /bin/bash    

    配置hdfs账号容器各节点间的SSH免密码登陆

    分别进入master,slave01,slave02三个容器节点,执行下面命令

    1
    2
    3
    4
    5
    6
    7
    8
    9

    10

    11

    #切换到hdfs账号    
    su      hdfs    
    #生成hdfs账号的key,执行后会有多个输入提示,不用输入任何内容,全部直接回车即可    
    ssh     -keygen    
    #拷贝到其他节点    
    ssh     -copy-     id      -i      /home/hdfs/     .     ssh     /id_rsa      -p 22 hdfs@master    
    ssh     -copy-     id      -i      /home/hdfs/     .     ssh     /id_rsa      -p 22 hdfs@slave01    
    ssh     -copy-     id      -i      /home/hdfs/     .     ssh     /id_rsa      -p 22 hdfs@slave02    
    #验证是否设置成功    
    ssh      slave01    

    配置hadoop

    这里主要配置hdfs,因为我们的计算框架要用spark,所以maprreduce的不需要配置。 
    进入master容器的hadoop配置目录,需要配置有以下7个文件:hadoop-env.sh,slaves,core-site.xml,hdfs-site.xml,maprd-site.xml,yarn-site.xml

    启动HDFS集群,验证是否搭建成功

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15

    16

    17

    18

    #如果配置环境变量,就直接执行    
    hdfs namenode -     format          #格式化namenode    
    start-dfs.sh                    #启动dfs     
      
    # 在 master上执行jps     
    $ jps    
    #运行结果应该包含下面的进程    
    1200 SecondaryNameNode    
    3622 Jps    
    988 NameNode    
      
    # 在 slave上执行jps     
    $ jps       
    #运行结果应该包含下面的进程    
    2213 Jps    
    1962 DataNode    

    浏览器输入http://本机ip地址:80808 ,可以浏览hadoop node管理界面 

    2.3在Docker上配置三节点Yarn集群

    上面已经配置成功,直接启动yarn集群

    1
    2
    #启动yarn    
    $ start-yarn.sh    

    浏览器输入http://本机ip地址:8088/cluster 可以浏览节点;

    1.png

    2.4在Docker上配置三节点spark集群

    配置spark

    进入master容器的spark配置目录,需要配置有两个文件:spark-env.sh,slaves

    启动spark集群

    1
    $ start-all.sh    

    浏览Spark的Web管理页面: http://本机ip地址:8080 

  • 相关阅读:
    从零搭建一个IdentityServer——资源与访问控制
    职 工 养 老 保 险 转 移—陕西省外转入
    EurekaUser-Redis
    EurekaUser-返回类型和全局异常
    C# 入门实战系列文章
    Python入门实战系列文章
    Python基础之Scrapy简介
    Python办公自动化之文件合并
    Python基础之shutil及zipfile模块
    Python基础之os模块简介
  • 原文地址:https://www.cnblogs.com/hzcya1995/p/13290401.html
Copyright © 2011-2022 走看看