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 故障获取不到日志的问题的更多相关文章

  1. 安装docker17.06.0版本报错和解决方法

    本人在自己电脑的虚拟机里安装docker ce 17.06.0版本的时候报如下错误: [root@manager2 yum.repos.d]# yum install docker-ce-17.06. ...

  2. pip升级到18.0版本过程中报错解决方法

    我这台电脑是windows10系统,一般在cmd命令行界面下执行pip的升级命令:pip install –upgrade pip 安装的时候,会有拒绝访问报错:这个时候应该是权限的问题,于是在win ...

  3. 安装MYSQL详细教程 版本:mysql-installer-community-5.7.16.0 免安装版本和安装版本出现错误的解决

    一.版本的选择 之前安装的Mysql,现在才来总结,好像有点晚,后台换系统了,现在从新装上Mysql,感觉好多坑,我是来踩坑,大家看到坑就别跳了,这样可以省点安装时间,这个折腾了两天,安装了好多个版本 ...

  4. Microsoft.Office.Interop.Excel, Version=12.0.0.0版本高于引用的程序集(已解决)

    Microsoft.Office.Interop.Excel, Version=12.0.0.0版本高于引用的程序集(已解决) 论坛里的帮助:http://bbs.csdn.net/topics/39 ...

  5. 错误:Unsupported major.minor version 51.0(jdk版本错误)的解决方法

    错误:Unsupported major.minor version 51.0(jdk版本错误)的解决方法 java.lang.UnsupportedClassVersionError: org/ap ...

  6. 解决IDEA2018.1.5或者Android Studio 3.0版本的输入法不跟随光标问题

    问题1:IDEA2018.1.5版本的输入法不跟随光标 解决办法1:修改JDK版本,步骤如下: 1. 使用快捷键ctrl+shift+A,在输入框中输入Switch Boot JDK,如图所示 2.替 ...

  7. Django2.0版本以上与pymsql 不匹配问题以及解决方法

    Django2.0版本以上与pymsql 不匹配问题以及解决方法 Django 2.0 以上 如果使用pymysql0.93,需要一下两步操作: # 1 第一次报错信息: File "D:\ ...

  8. 解决 Electron 5.0 版本出现 require is not defined 的问题

    Electron已经发布了5.0正式版,升级后发现原来能运行的代码报错提示require is not defined 经查相关资料,原来官方在5.0版本修改了nodeIntegration的默认值, ...

  9. 使用mysql5.7版本的mysqldump备份mysql8.0版本的数据库报错解决办法

    使用mysql5.7版本的mysqldump命令执行备份mysql8.0版本的数据库时会报错: mysqldump: Couldn't execute 'SET SQL_QUOTE_SHOW_CREA ...

  10. mysql8.0以后的版本开启远程连接:

    mysql8.0以后的版本开启远程连接: 1 CREATE USER 'root'@'%' IDENTIFIED BY '你的密码'; 2 GRANT ALL ON *.* TO 'root'@'%' ...

随机推荐

  1. bean反射比较两个bean属性值的修改明细

    1.期望:将[username]从'111'改成'222';将[address]从'这是一个测试数据'改成'这是一个真实数据'; 2.导入jar <dependency> <grou ...

  2. java多线程-2-概念和实现机制

    知其然,而知其所以然! 在计算机领域,有多种操作系统,常见的有windows家族和unix/Linux家族,它们都支持多任务的计算模式. 它们实现多任务的机制是差不多的,这点在<<操作系统 ...

  3. 2019 香港区域赛 BDEG 题解

    B.Binary Tree 题意:给你一棵二叉树.有两个游戏者,回合制,他们每次可以删去这棵二叉树中的一棵满二叉树.求最后谁赢. 解法:每一棵满二叉树有奇数个节点,那么每次游戏者只能删去奇数个节点,所 ...

  4. 记录一次 OpenStack 集群在创建虚机后无法获取 IP 的问题

    现象 所有的组件状态都是正常工作的,DHCP 服务正常工作,在个个虚拟网络设备端口抓包,发现 OpenVSwitch 上 DHCP 包可以通行,虚机获取 DHCP Discover 请求可以正常发出, ...

  5. 「转」Android编译选项中的eng、user、user-debug

    Android编译选项中eng.user.user-debug主要区别 reference: https://blog.csdn.net/dearsq/article/details/52589376 ...

  6. HCIA基本命令

    ACLDHCPNATSTP-RSTP-MSTPVLANVLAN间路由VRRP链路聚合路由

  7. k8s学习总结之各组件功能及作用的详细介绍

    K8S集群架构: 一个K8S集群是由两大部分组成: Master节点和Node节点 一.Master节点主要包括API Server.Scheduler.Controller manager.etcd ...

  8. MySQL - CASE WHEN的高级用法

    Case语法 CASE WHEN condition1 THEN result1 WHEN condition2 THEN result2 WHEN conditionN THEN resultN E ...

  9. 【ClickHouse】7:clickhouse多实例安装

    背景介绍: 有三台CentOS7服务器安装了ClickHouse HostName IP 安装程序 实例1端口 实例2端口 centf8118.sharding1.db 192.168.81.18 c ...

  10. Docker的使用和常用命令

    部署项目前基础服务准备 第一步:安装Docker环境 第二步:开启Docker远程带证书访问(可选) 第三步:拉取mysql,redis,nginx等等所需镜像 第四步:运行(创建)容器 # 本地远程 ...