3.2.0 版本预告!远程日志解决 Worker 故障获取不到日志的问题
Apache DolphinScheduler 3.2.0 版本已经呼之欲出,8 月 中下旬,这个大版本就要和用户见面了。为了让大家提前了解到此版本更新的主要内容,我们已经制作了几期视频和内容做了大致介绍,包括《重磅预告!Apache DolphinScheduler 3.2.0 新功能“剧透”》、《3.2.0 版本预告!Apache DolphinScheduler API 增强相关功能》。
今天,我们来介绍另一个用户比较关心的新功能——Remote logging(远程日志),看看是否能帮助你的工作变得更简单吧!
https://www.bilibili.com/video/BV1U14y1q74N/?spm_id_from=333.999.0.0
今天由为大家介绍 Apache DolphinScheduler 3.2.0 的一个新特性,叫做 Remote logging。我们会从三个部分来说明这个功能,第一,它是什么,解决什么问题;第二,它如何配置;第三,我们怎么去使用它?
远程日志是什么?解决什么问题?
在没有这个功能之前,我们的任务日志流向是这样子的,任务运行完的时候,Worker 会将日志写到 Worker 本地,当用户需要去查看任务日志的时候,我们会发送请求这个 Worker 的日志,然后展示给用户。当一些意外情况出现,导致这个 Worker 的日志不存在,或者是这个 Worker 不存在的时候,用户在页面上就看不了日志了。
但是有了 Remote Logging,这个问题就能得到比较好的解决。它整体的流程如下所示:
我们只是增加了这条线的部分以及下面 Remote Logging 的部分,当我们的 Worker 将日志写到本地的时候,会有个异步线程将写到本地的 log 同步到 Remote Logging。当一些意外情况发生导致日志丢失,但用户想要看日志详细信息的时候,我们会有个请求将日志从远端拉到本地,然后本地返回。
为什么我们要设置这样一个动作呢?这样做首先能保证接口的一致性,就是日志全部都是从 Worker 发送给 API Server,然后去读取的。其次是尽量减少我们远端的带宽,只有当本地日志缺失的时候,我们才会去下载远端的日志。
如何配置?
接下来我们快速说明一下如何配置 Remote Logging。在我们的发版文件里会有关于如何启动和配置的简单介绍。
首先,我们要修改 Common Properties 文件,将这个 remote.logging.enable 设置存储并且设置为你想要存储的远端存储介质。目前我们支持了 OSS、S3 和 GCS。
其次就是一些第三方远端存储的配置,比如 AccessKey、Secret 以及对应的 bucket 和 region 等。
如何使用?
我们回到页面,体验一下 Remote Logging 是如何使用,以及我们是如何判断它是生效的。
我们这里有一个简单的工作流,它只有两个任务,分别打印了 1 和 2 这两个信息。手动触发这个工作流并观察日志,看看它是否正常地被写到远端。
当我们触发了工作流运行,并且工作流是运行成功的,我们将日志写到远端。当任务被运行成功的时候,我们就开始写日志了。
这一行就能很明显地看到,日志被写成功之后,会同时有一个异步线程将日志同步到远端的存储。
因为我们这里使用的是 S3,它将本地的路径的日志同步了一份到远端。回到 S3 的页面,可以看到 log 已经存在了。
接着我们模拟一下当本地 Worker 的日志缺失的时候,我们如何去读日志。 我们手动将这个日志文件删除,可以看到这个文件夹下面有两个日志文件,分别是 3 和 4。将这两个文件都删除,可以看到这里已经没有对应的日志文件了。
此时,如果是之前的版本,我们已经不能查看最新的 instance 的日志文件了,但是有了 Remote Logging,就会发现本地不存在这个日志,将日志从远端下载到本地给用户查看。
模拟一下,这里我们点击查看任务日志,会发现任务日志已经被显示出来了。再去查看一下本地文件,会发现刚刚不存在的日志已经下载下来了,并且只下载了我们需要的那一个。
接下来看看另一个任务的日志,同样发现是能被显示的,本地的两个日志文件也被下载下来了。查看服务日志,我们发现它已经检测到日志文件不在本地出现,会去远端获取这个日志文件。
这就是 Remote Logging 功能的大致介绍,如果它能解决你的问题,欢迎在 8 月中下旬发布 3.2.0 版本的时候,升级版本来体验一下!
本文由 白鲸开源 提供发布支持!
3.2.0 版本预告!远程日志解决 Worker 故障获取不到日志的问题的更多相关文章
- 安装docker17.06.0版本报错和解决方法
本人在自己电脑的虚拟机里安装docker ce 17.06.0版本的时候报如下错误: [root@manager2 yum.repos.d]# yum install docker-ce-17.06. ...
- pip升级到18.0版本过程中报错解决方法
我这台电脑是windows10系统,一般在cmd命令行界面下执行pip的升级命令:pip install –upgrade pip 安装的时候,会有拒绝访问报错:这个时候应该是权限的问题,于是在win ...
- 安装MYSQL详细教程 版本:mysql-installer-community-5.7.16.0 免安装版本和安装版本出现错误的解决
一.版本的选择 之前安装的Mysql,现在才来总结,好像有点晚,后台换系统了,现在从新装上Mysql,感觉好多坑,我是来踩坑,大家看到坑就别跳了,这样可以省点安装时间,这个折腾了两天,安装了好多个版本 ...
- Microsoft.Office.Interop.Excel, Version=12.0.0.0版本高于引用的程序集(已解决)
Microsoft.Office.Interop.Excel, Version=12.0.0.0版本高于引用的程序集(已解决) 论坛里的帮助:http://bbs.csdn.net/topics/39 ...
- 错误:Unsupported major.minor version 51.0(jdk版本错误)的解决方法
错误:Unsupported major.minor version 51.0(jdk版本错误)的解决方法 java.lang.UnsupportedClassVersionError: org/ap ...
- 解决IDEA2018.1.5或者Android Studio 3.0版本的输入法不跟随光标问题
问题1:IDEA2018.1.5版本的输入法不跟随光标 解决办法1:修改JDK版本,步骤如下: 1. 使用快捷键ctrl+shift+A,在输入框中输入Switch Boot JDK,如图所示 2.替 ...
- Django2.0版本以上与pymsql 不匹配问题以及解决方法
Django2.0版本以上与pymsql 不匹配问题以及解决方法 Django 2.0 以上 如果使用pymysql0.93,需要一下两步操作: # 1 第一次报错信息: File "D:\ ...
- 解决 Electron 5.0 版本出现 require is not defined 的问题
Electron已经发布了5.0正式版,升级后发现原来能运行的代码报错提示require is not defined 经查相关资料,原来官方在5.0版本修改了nodeIntegration的默认值, ...
- 使用mysql5.7版本的mysqldump备份mysql8.0版本的数据库报错解决办法
使用mysql5.7版本的mysqldump命令执行备份mysql8.0版本的数据库时会报错: mysqldump: Couldn't execute 'SET SQL_QUOTE_SHOW_CREA ...
- mysql8.0以后的版本开启远程连接:
mysql8.0以后的版本开启远程连接: 1 CREATE USER 'root'@'%' IDENTIFIED BY '你的密码'; 2 GRANT ALL ON *.* TO 'root'@'%' ...
随机推荐
- Xcode 配置账号
Xcode 配置开发者账号 简介:在iOS 开发过程中,要打包到手机上是需要登陆账号和配置对应证书的. 配置账号 打开Xcode -> Preferences -> Accounts -& ...
- Idea SpringBoot 子模块 加载不到该子模块根目录config下面的配置文件
Idea SpringBoot 子模块 加载不到该子模块根目录config下面的配置文件 import org.mybatis.spring.annotation.MapperScan; import ...
- Mysql int类型字段插入表达式,值为0或1
CREATE TABLE `t_user` ( `uId` INT(11) DEFAULT NULL, `uName` VARCHAR(20) DEFAULT NULL, `uPwd` VARCHAR ...
- redisTemplate缓存方法template code
import com.alibaba.fastjson.JSONObject; @Autowired private RedisTemplate redisTemplate; String PREFI ...
- 从Purge机制说起,详解GaussDB(for MySQL)的优化策略
本文分享自华为云社区<[华为云MySQL技术专栏]GaussDB(for MySQL) Purge优化>,作者:GaussDB 数据库. 在MySQL中,尤其是在使用InnoDB引擎时,P ...
- Python 导入包失败,提示“most likely due to a circular import”
详细报错信息如下: ImportError: cannot import name 'DoReplace' from partially initialized module 'common.do_r ...
- CSDN 大规模抓取 GitHub 上的项目到 GitCode,伪造开发者主页引公愤
事件起因 CSDN旗下的GitCode最近因为一种极其不道德的行为引起了开发者的广泛愤怒和抗议.CSDN在没有通知或征求开发者同意的情况下,悄悄地将大量GitHub上的开源项目搬运到了其自己的GitC ...
- 什么是RDD
RDD(Resilient Distributed Dataset)叫做弹性分布式数据集RDD,是Spark中最基本的数据抽象,它代表一个不可变.可分区.里面的元素可并行计算的集合.RDD具有数据流模 ...
- 2.模块文件以及增删改查(CURD操作)
创建 db.py db.py 文件是我们管理数据库连接和模型基类的地方.它让我们的代码更加模块化和可维护,实际生产中也是类似的,无论是在 FastAPI 或者 Flask 等框架中,当使用到 SqlA ...
- Java(screw)生成数据库表结构
数据库支持 MySQL MariaDB TIDB Oracle SqlServer PostgreSQL Cache DB(2016) 文档生成支持 html word markdown 方式一:代码 ...