zoukankan      html  css  js  c++  java
  • 在docker容器下安装airflow

    本人的环境是基于centos7下来安装的

    一、安装docker 

    下载docker安装包,下载地址:https://download.docker.com/linux/static/stable/x86_64/

    下载到本地后解压

    tar -zxf docker-18.09.6.tgz 

    将解压出来的docker文件内容移动到 /usr/bin/ 目录下

    cp docker/* /usr/bin/

    docker注册为service

    新建文件

    vim /etc/systemd/system/docker.service

    并添加以下内容

    [Unit]
    Description=Docker Application Container Engine
    Documentation=https://docs.docker.com
    After=network-online.target firewalld.service
    Wants=network-online.target
     
    [Service]
    Type=notify
    # the default is not to use systemd for cgroups because the delegate issues still
    # exists and systemd currently does not support the cgroup feature set required
    # for containers run by docker
    ExecStart=/usr/bin/dockerd
    ExecReload=/bin/kill -s HUP $MAINPID
    # Having non-zero Limit*s causes performance problems due to accounting overhead
    # in the kernel. We recommend using cgroups to do container-local accounting.
    LimitNOFILE=infinity
    LimitNPROC=infinity
    LimitCORE=infinity
    # Uncomment TasksMax if your systemd version supports it.
    # Only systemd 226 and above support this version.
    #TasksMax=infinity
    TimeoutStartSec=0
    # set delegate yes so that systemd does not reset the cgroups of docker containers
    Delegate=yes
    # kill only the docker process, not all processes in the cgroup
    KillMode=process
    # restart the docker process if it exits prematurely
    Restart=on-failure
    StartLimitBurst=3
    StartLimitInterval=60s
     
    [Install]
    WantedBy=multi-user.target

    添加文件权限

    chmod +x /etc/systemd/system/docker.service
    systemctl daemon-reload

    启动docker

    systemctl start docker

    验证

    systemctl status docker			#查看Docker状态
    docker -v			#查看Docker版本
    

      

    二、安装airflow容器

     先在宿主机安装mysql

    上传mysql安装包

    先卸载自带的mysql相关的包

     rpm -qa|grep mariadb
    mariadb-libs-5.5.60-1.el7_5.x86_64
    $ rpm -e --nodeps mariadb-libs-5.5.60-1.el7_5.x86_64
    error: can't create transaction lock on /var/lib/rpm/.rpm.lock (Permission denied)
    $ sudo rpm -e --nodeps mariadb-libs-5.5.60-1.el7_5.x86_64
    $ rpm -qa|grep mariadb
    

    再依次安装

    bigdata@bigdata mysql]$ sudo rpm -ivh mysql-community-common-5.7.27-1.el7.x86_64.rpm
    warning: mysql-community-common-5.7.27-1.el7.x86_64.rpm: Header V3 DSA/SHA1 Signature, key ID 5072e1f5: NOKEY
    Preparing... ################################# [100%]
    Updating / installing...
    1:mysql-community-common-5.7.27-1.e################################# [100%]
    [bigdata@bigdata mysql]$ sudo rpm -ivh mysql-community-libs-5.7.27-1.el7.x86_64.rpm
    warning: mysql-community-libs-5.7.27-1.el7.x86_64.rpm: Header V3 DSA/SHA1 Signature, key ID 5072e1f5: NOKEY
    Preparing... ################################# [100%]
    Updating / installing...
    1:mysql-community-libs-5.7.27-1.el7################################# [100%]
    [bigdata@bigdata mysql]$ sudo rpm -ivh mysql-community-libs-compat-5.7.27-1.el7.x86_64.rpm
    warning: mysql-community-libs-compat-5.7.27-1.el7.x86_64.rpm: Header V3 DSA/SHA1 Signature, key ID 5072e1f5: NOKEY
    Preparing... ################################# [100%]
    Updating / installing...
    1:mysql-community-libs-compat-5.7.2################################# [100%]
    [bigdata@bigdata mysql]$ sudo rpm -ivh mysql-community-embedded-compat-5.7.27-1.el7.x86_64.rpm
    warning: mysql-community-embedded-compat-5.7.27-1.el7.x86_64.rpm: Header V3 DSA/SHA1 Signature, key ID 5072e1f5: NOKEY
    Preparing... ################################# [100%]
    Updating / installing...
    1:mysql-community-embedded-compat-5################################# [100%]
    [bigdata@bigdata mysql]$ sudo rpm -ivh mysql-community-devel-5.7.27-1.el7.x86_64.rpm
    warning: mysql-community-devel-5.7.27-1.el7.x86_64.rpm: Header V3 DSA/SHA1 Signature, key ID 5072e1f5: NOKEY
    Preparing... ################################# [100%]
    Updating / installing...
    1:mysql-community-devel-5.7.27-1.el################################# [100%]
    [bigdata@bigdata mysql]$ sudo rpm -ivh mysql-community-client-5.7.27-1.el7.x86_64.rpm
    warning: mysql-community-client-5.7.27-1.el7.x86_64.rpm: Header V3 DSA/SHA1 Signature, key ID 5072e1f5: NOKEY
    Preparing... ################################# [100%]
    Updating / installing...
    1:mysql-community-client-5.7.27-1.e################################# [100%]
    [bigdata@bigdata mysql]$ sudo rpm -ivh mysql-community-server-5.7.27-1.el7.x86_64.rpm
    warning: mysql-community-server-5.7.27-1.el7.x86_64.rpm: Header V3 DSA/SHA1 Signature, key ID 5072e1f5: NOKEY
    Preparing... ################################# [100%]
    Updating / installing...
    1:mysql-community-server-5.7.27-1.e################################# [100%]
    [bigdata@bigdata mysql]$

    skip-grant-tables #添加这句话,这时候登入mysql就不需要密码

     

    登录mysql,输入密码处直接回车就可以

    配置msyql

    mysql> flush privileges; 
    Query OK, 0 rows affected (0.00 sec)
    
    mysql> set password for root@localhost = password('Admin123!');
    Query OK, 0 rows affected, 1 warning (0.00 sec)
    
    mysql> create user 'airflow'@'localhost' identified by 'Airflow123!';
    Query OK, 0 rows affected (0.05 sec)


    mysql> create database airflow;
    Query OK, 1 row affected (0.00 sec)
    
    mysql> create user 'airflow'@'%' identified by 'AirFlow123!';
    Query OK, 0 rows affected (0.02 sec)
    
    mysql> GRANT all privileges on airflow.* TO 'airflow'@'%'  IDENTIFIED BY 'AirFlow123!';
    Query OK, 0 rows affected, 1 warning (0.01 sec)
    

    mysql> GRANT all privileges on airflow.* TO 'root'@'172.17.0.2' IDENTIFIED BY 'Admin123!';
    Query OK, 0 rows affected, 1 warning (0.04 sec)

    //172.17.0.2 是我的docker容器的地址

    mysql> FLUSH PRIVILEGES;
    Query OK, 0 rows affected (0.01 sec)

     修改/etc/my.cnf配置文件,在[mysqld]下添加编码配置

     

    character_set_server=utf8
    init_connect='SET NAMES utf8'

     vim /etc/my.cnf

     添加这一句

    explicit_defaults_for_timestamp=1

    编辑保存完 重启mysql服务: sudo systemctl restart mysqld.service

     

    三、docker上安装airflow

    git clone https://github.com/puckel/docker-airflow.git /root/airflow //下载源码到airflow文件夹

    docker run --name airflow6  -v /usr/local/airflow/dags:/usr/local/airflow/dags -v /usr/local/airflow/airflowSql:/usr/local/airflow/airflowSql  -v /home/airflow/airflow.cfg:/usr/local/airflow/airflow.cfg -d -p 8086:8080 --privileged puckel/docker-airflow   //运行容器

    /* 我这里把本地的目录映射到容器里面去 通过 -v 参数进行映射**/

      进入容器 

    docker exec -it -u root airflow6 bash

    修改配置文件

    自动扫描.py文件

    修改scheduler线程数控制并发量(这个通常在性能调优方面)

    修改检查新的dag的间隔

    airflow initdb  // 初始化数据库

    出现错误:

    airflow.exceptions.AirflowException: Could not create Fernet object: Incorrect padding

    解决办法:

    python -c "from cryptography.fernet import Fernet;

    print(Fernet.generate_key().decode())"

     

    export AIRFLOW__CORE__FERNET_KEY=oNu9XwewQNyx9mAJT2vZvtm3qzPRZIWRqwk9hSVch4A=

    airflow initdb // 重新运行初始化数据库

    打开浏览器

  • 相关阅读:
    软件设计师-成绩查询
    spring data jpa
    Maven 项目中使用 logback
    spring boot 整合 Camunda
    Spring 中 bean 的生命周期?
    如何合理的使用工具提高效率?
    Java 中的日志
    HashMap 原理?jdk1.7 与 1.8区别
    内存泄漏与溢出
    v-on 绑定自定义事件
  • 原文地址:https://www.cnblogs.com/braveym/p/11673899.html
Copyright © 2011-2022 走看看