|NO.Z.00061|——————————|^^ 配置 ^^|——|Hadoop&PB级数仓.V03|——|PB数仓.v03|调度系统Airflow|修改默认时区|

一、修改时区
### --- 修改时区

~~~     Airflow默认使用UTC时间,在中国时区需要用+8小时。
~~~     将UTC修改为中国时区,需要修改Airflow源码。
### --- 在修改 $AIRFLOW_HOME/airflow.cfg 文件

(env) [root@hadoop02 ~]# vim /opt/yanqi/servers/airflow/airflow.cfg
default_timezone = Asia/Shanghai        # 约 65 行
### --- 修改 timezone.py
~~~     # 进入Airflow包的安装位置
(env) [root@hadoop02 ~]# cd /opt/yanqi/servers/python3.6/bin/env/lib/python3.6/site-packages/

~~~     # 修改airflow/utils/timezone.py
(env) [root@hadoop02 site-packages]# cd airflow/utils
(env) [root@hadoop02 utils]# vim timezone.py
~~~     # 方式一:第27行注释,增加27-37行:

~~~ # 27行开始
# utc = pendulum.timezone('UTC')

from airflow import configuration as conf
try:
        tz = conf.get("core", "default_timezone")
        if tz == "system":
                utc = pendulum.local_timezone()
        else:
                utc = pendulum.timezone(tz)
except Exception:
        pass
~~~ # 37行结束
### --- 方式二:
~~~     以上的修改方式有警告,可以使用下面的方式(推荐):

~~~ # 27行开始
# utc = pendulum.timezone('UTC')

from airflow import configuration
try:
        tz = configuration.conf("core", "default_timezone")
        if tz == "system":
                utc = pendulum.local_timezone()
        else:
                utc = pendulum.timezone(tz)
except Exception:
        pass
~~~ # 37行结束
~~~     # 修改utcnow()函数 (注释掉72行,增加73行内容)

~~~ # 61行开始
def utcnow():
    """
    Get the current date and time in UTC

    :return:
    """

    # pendulum utcnow() is not used as that sets a TimezoneInfo object
    # instead of a Timezone. This is not pickable and also creates issues
    # when using replace()
    # d = dt.datetime.utcnow()
    # d = d.replace(tzinfo=utc)
    d = dt.datetime.now()
    d = d.replace(tzinfo=utc)
    
    return d
~~~ # 76行结束
### --- 4、修改 airflow/utils/sqlalchemy.py

~~~     # 进入Airflow包的安装位置
(env) [root@hadoop02 ~]# cd /opt/yanqi/servers/python3.6/bin/env/lib/python3.6/site-packages/
~~~     # 修改 airflow/utils/sqlalchemy.py
(env) [root@hadoop02 site-packages]# cd airflow/utils
(env) [root@hadoop02 utils]# vim sqlalchemy.py
~~~     # 方式一:修改时区参数
~~~     在38行之后增加 39 - 48 行的内容:   

~~~     # 38行开始
utc = pendulum.timezone('UTC')

from airflow import configuration as conf
try: 
        tz = conf.get("core", "default_timezone")
        if tz == "system":
                utc = pendulum.local_timezone()
        else:
                utc = pendulum.timezone(tz)
except Exception:
        pass
~~~     # 48行结束
~~~     # 方式二:修改时区参数
~~~     以上的修改方式有警告,可以使用下面的方式(推荐):

~~~     # 38行开始
utc = pendulum.timezone('UTC')

from airflow import configuration
try:
        tz = configuration.conf("core", "default_timezone")
        if tz == "system":
                utc = pendulum.local_timezone()
        else:
                utc = pendulum.timezone(tz)
except Exception:
        pass
~~~     # 48行结束
5### --- 修改airflow/www/templates/admin/master.html

~~~     # 进入Airflow包的安装位置
(env) [root@hadoop02 ~]# cd /opt/yanqi/servers/python3.6/bin/env/lib/python3.6/site-packages/
~~~     # 修改 airflow/www/templates/admin/master.html
(env) [root@hadoop02 site-packages]# cd airflow/www/templates/admin
(env) [root@hadoop02 admin]# vim master.html
~~~     # 将第40行修改为以下内容:
     var UTCseconds = x.getTime();    # 第40行
~~~     # 将第43行修改为以下内容:
         "timeFormat":"H:i:s",        # 第43行
二、重启Airflow服务
### --- 重启airflow webserver
~~~     停止airflow服务

~~~     # 关闭 airflow webserver 对应的服务
(env) [root@hadoop02 ~]# ps -ef | grep 'airflow-webserver' | grep -v 'grep' | awk '{print $2}' | xargs -i kill -9 {}

~~~     # 关闭 airflow scheduler 对应的服务
(env) [root@hadoop02 ~]# ps -ef | grep 'airflow' | grep 'scheduler' | awk '{print $2}' | xargs -i kill -9 {}
~~~     # 删除对应的pid文件
~~~     正常停止的话,这两个文件会关闭,
~~~     若是通过kill掉的,需要把这两个pid文件删除掉

(env) [root@hadoop02 ~]# cd $AIRFLOW_HOME
(env) [root@hadoop02 airflow]# rm -rf *.pid
~~~     # 重启服务(在python3.6虚拟环境中执行)

(env) [root@hadoop02 ~]# airflow scheduler -D
(env) [root@hadoop02 ~]# airflow webserver -D
### --- Airflow的web界面

~~~     修改时区之前时间参数
~~~     修改时区之后时间参数

 
 
 
 
 
 
 
 
 

Walter Savage Landor:strove with none,for none was worth my strife.Nature I loved and, next to Nature, Art:I warm'd both hands before the fire of life.It sinks, and I am ready to depart
                                                                                                                                                   ——W.S.Landor

 

 

posted on   yanqi_vip  阅读(83)  评论(0编辑  收藏  举报

相关博文:
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· DeepSeek 开源周回顾「GitHub 热点速览」
< 2025年3月 >
23 24 25 26 27 28 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 1 2 3 4 5

导航

统计

点击右上角即可分享
微信分享提示