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 

  • 相关阅读:
    在WCF中使用Flag Enumerations
    WCF开发教程资源收集
    [转]WCF 4 安全性和 WIF 简介
    Asp.Net Web API 2 官网菜鸟学习系列导航[持续更新中]
    Asp.Net Web API 2第十八课——Working with Entity Relations in OData
    Asp.Net Web API 2第十七课——Creating an OData Endpoint in ASP.NET Web API 2(OData终结点)
    Asp.Net Web API 2第十六课——Parameter Binding in ASP.NET Web API(参数绑定)
    Asp.Net Web API 2第十五课——Model Validation(模型验证)
    函数 生成器 生成器表达式
    函数的进阶
  • 原文地址:https://www.cnblogs.com/hzcya1995/p/13290401.html
Copyright © 2011-2022 走看看