Apache DolphinScheduler(incubator)需要的sudo,还可以这么玩,长见识了!

在新一代大数据任务调度 - Apache DolphinScheduler(以下简称dolphin) 官网中部署安装需要对部署OS用户配置sudo且免密

echo 'dolphinscheduler  ALL=(ALL)  NOPASSWD: NOPASSWD: ALL' >> /etc/sudoers

看到这的时候,你是否也对此处产生一点疑问?dolphin部署OS用户需配置可免密操作所有用户的权限?dolphin部署OS用户需拥有和root一样的权限?dolphin部署OS用户使用root权限操作什么?...

DolphinScheduler简介

Apache DolphinScheduler是一个分布式去中心化,易扩展的可视化DAG工作流任务调度系统。致力于解决数据处理流程中错综复杂的依赖关系,使调度系统在数据处理流程中开箱即用,目前已累计有 400+ 公司在生产上使用。

特点

  • 高可靠性

中心化的多Master和多Worker, 自身支持HA功能, 采用任务队列来避免过载,不会造成机器卡死;

  • 简单易用

DAG监控界面,所有流程定义都是可视化,通过拖拽任务定制DAG,通过API方式与第三方系统对接, 一键部署;

  • 丰富的使用场景

支持暂停恢复操作. 支持多租户,更好的应对大数据的使用场景. 支持更多的任务类型,如 spark, hive, mr, python, sub_process, shell;

  • 高扩展性

支持自定义任务类型,调度器使用分布式调度,调度能力随集群线性增长,Master和Worker支持动态上下线;

主要能力

  • Task以DAG形式关联,实时监控任务的状态;

  • 支持Shell、MR、Spark、SQL、依赖等10多种任务类型;

  • 工作流优先级、任务优先级,全局参数及局部自定义参数;

  • 工作流可定时、依赖、手动、暂停/停止/恢复;

  • 支持补数、多租户、日志在线查看及资源在线管理;

  • 完善的系统服务监控,任务超时告警/失败;

  • 去中心化设计确保系统的稳定、高可用;

  • 支持每日十万数据量级任务稳定运行;

我非常看好dolphin,但在实施中遇到公司要求不允许开通root权限,那还怎么搞下去?

如果能想怎么玩就怎么玩的大佬请忽略此文章,跪求带带小弟,我会喊666~

问题场景

说一个我在公司遇到的场景,基础设施运营和应用组件归属不同团队,运营团队要求应用层不允许拥有root权限,但dolphin使用需要配置sudo且免密,从官网配置要求看,此时的dolphin部署OS用户是和root账号一样拥有整个系统的最高权限。在运营安全角度来看,很危险。但你还想要玩,运营给了两条路,1.向上级领导审批,特事特办;2.申请机器,独自运营;哪条路都不好走,只能另寻出路。

调度选的好,下班回家早;调度选的对,半夜安心睡;选择dolphin,干就完了。

dolphin引用sudo用途

sudo描述

sudo是linux系统管理指令,是允许系统管理员让普通用户执行一些或者全部的root命令的一个工具,sudo的权限控制可以在/etc/sudoers文件中查看到。

dolphin配置sudo且免密做什么?

官网解释:以 sudo -u {linux-user} 切换不同linux用户的方式来实现多租户运行作业,所以部署用户需要有 sudo 权限,而且是免密的。

源码分析

dolphin使用sudo工具干了哪些事情

一键部署/执行任务脚本类命令/kill命令

解决方案

自己冥思苦想几种方案,效果都不理想

1.将dolphin部署OS用户配置可以向大数据集群所有租户下提交作业,通过指定队列来区分。缺点:dolphin部署OS用户在大数据集群权限非常大,对不同租户下的作业都有操作权限。

2.修改dolphin源码,移除sudo命令,在每个OS用户下安装一个worker节点,通过worker分组来实现多租户提交作业。缺点:worker节点过多,占有大量系统资源。

这个问题跟sudo配置有关,还得从sudo方面下手,发现sudo在配置的时候可以指定只允许部分OS用户账号。这样dolphin部署OS用户账号只有指定部分OS用户账号的操作权限,完全满足dolphin 使用sudo -u {linux-user}命令来解决实现多租户运行作业问题,也满足dolphin部署OS用户的权限只有普通用户权限和可以操作指定OS用户权限。

开搞

sudo的权限控制在文件/etc/sudoers内配置

root ALL=(ALL:ALL) ALL%wheel ALL=(ALL) ALL
%sudo ALL=(ALL:ALL) ALL

对/etc/sudoers文件进行编辑的代码公式可以概括为:

授权用户/组 主机=[(切换到哪些用户或组)] [是否需要输入密码验证] 命令1,命令2,...

解释

  • '授权用户/组':

    • 以%号开头的表示"将要授权的组";

    • 不以%号开头的表示"将要授权的用户";

  • '主机':允许登录的主机,

    • ALL表示所有;

    • 如果该字段不为ALL,表示授权用户只能在某些机器上登录本服务器来执行sudo命令.

  • '[(切换到哪些用户或组)]':

    • 为(ALL)或者(ALL:ALL), 表示能够提权到(任意用户:任意用户组);

    • 为(),代表省略, 相当于(root:root),表示可以通过sudo提权到root;

  • '[是否需要输入密码验证] ':

    • 为NOPASSWD: 代表执行sudo时可以不需要输入密码

  • '命令1,命令2,...':

    • 多个命令使用逗号分隔,这些命令是授权给用户的操作; 命令都是使用绝对路径,避免目录下同名命令情况;

    • ALL表示允许所有操作

[ ]中的内容, 都能省略

按照上文修改如下

echo 'dolphinscheduler  ALL=(userA,userB,userC)  NOPASSWD: NOPASSWD: ALL' >> /etc/sudoers
  • 其中userA,userB,userC代表是linux OS用户,用于多租户向大数据集群提交作业。

  • 后面有新增租户,提交运营申请dolphin worker节点所在机器新增sudo配置权限控制,也实现了机器OS用户使用权限控制。

注:我是按用户userA,userB,userC去申请sudo控制权限,此处使用用户组去申请sudo控制权限是不是会更好,有待其他小伙伴去探索。

解决了sudo问题,dolphin完全可以使用普通OS用户普通权限运行。

你是否有更好的想法,欢迎留言讨论!

您知道么?

为什么要参与开源?

这里汇总了以下对个人来说比较重要的几点:

参与开源的方式?

参与 DolphinScheduler 社区有非常多的参与贡献的方式,包括文档、翻译、答疑、测试、代码、会议分享等,此外也极其欢迎各种实践文章,DolphinScheduler开源社区非常期待您的参与。

贡献第一个PR(文档、代码) 我们也希望是简单的,用第 1 个 PR 来熟悉社区的流程和友好度,也判断一下这是不是我想参与贡献的社区呐

文档github地址:https://github.com/apache/incubator-dolphinscheduler-website

当然如果您酷爱coding,社区也是非常欢迎“show me the code"的。

戳原文,立刻奔向

DolphinScheduler 
的 github 仓库一起玩耍,来个 star 先收藏也是好的

Apache DolphinScheduler 需要的sudo,还可以这么玩,长见识了!的更多相关文章

  1. Apache DolphinScheduler新一代分布式工作流任务调度平台实战-上

    概述 定义 dolphinscheduler 官网地址 https://dolphinscheduler.apache.org/ dolphinscheduler GitHub地址 https://g ...

  2. Apache DolphinScheduler 1.3.9 发布,新增 StandaloneServer

    点击上方 蓝字关注我们 2021 年 10 月 22 日,Apache DolphinScheduler 正式发布 1.3.9 版本.时隔一个半月,在社区贡献者的共同努力下,Apache Dolphi ...

  3. Apache DolphinScheduler 3.0.0 正式版发布!

    ​  点亮 ️ Star · 照亮开源之路 GitHub:https://github.com/apache/dolphinscheduler   ​ 版本发布 2022/8/10 2022 年 8 ...

  4. 感谢有你!Apache DolphinScheduler 项目 GitHub star 突破 8k

    本周伊始,Apache DolphinScheduler 项目在 GitHub 上的 Github Star 总数首次突破 8K.目前,Apache DolphinScheduler 社区已经拥有 C ...

  5. 大数据平台迁移实践 | Apache DolphinScheduler 在当贝大数据环境中的应用

    大家下午好,我是来自当贝网络科技大数据平台的基础开发工程师 王昱翔,感谢社区的邀请来参与这次分享,关于 Apache DolphinScheduler 在当贝网络科技大数据环境中的应用. 本次演讲主要 ...

  6. Apache DolphinScheduler&TiDB联合Meetup | 聚焦开源生态发展下的应用开发能力

    在软件开发领域有一个流行的原则:Don't Repeat Yourself(DRY),翻译过来就是:不要重复造轮子.而开源项目最基本的目的,其实就是为了不让大家重复造轮子. 尤其是在大数据这样一个高速 ...

  7. Apache DolphinScheduler 2.X保姆级源码解析,中国移动工程师揭秘服务调度启动全流程

    2022年1月,科学技术部高新技术司副司长梅建平在"第六届中国新金融高峰论坛"上表示,当前数据量已经大大超过了处理能力的上限,若信息技术仍然是渐进式发展,则数据处理能力的提升将远远 ...

  8. 中国联通改造 Apache DolphinScheduler 资源中心,实现计费环境跨集群调用与数据脚本一站式访问

    截止2022年,中国联通用户规模达到4.6亿,占据了全中国人口的30%,随着5G的推广普及,运营商IT系统普遍面临着海量用户.海量话单.多样化业务.组网模式等一系列变革的冲击. 当前,联通每天处理话单 ...

  9. 论语音社交视频直播平台与 Apache DolphinScheduler 的适配度有多高

    在 Apache DolphinScheduler& Apache ShenYu(Incubating) Meetup 上,YY 直播 软件工程师 袁丙泽 为我们分享了<YY直播基于Ap ...

随机推荐

  1. Spring Authorization Server 0.3.0 发布,官方文档正式上线

    基于OAuth2.1的授权服务器Spring Authorization Server 0.3.0今天正式发布,在本次更新中有几大亮点. 文档正式上线 Spring Authorization Ser ...

  2. HttpUploadFile

    public static void HttpUploadFile(string url, string file, string paramName, string contentType, Nam ...

  3. 《回炉重造 Java 基础》——集合(容器)

    整体框架 绿色代表接口/抽象类:蓝色代表类. 主要由两大接口组成,一个是「Collection」接口,另一个是「Map」接口. 前言 以前刚开始学习「集合」的时候,由于没有好好预习,也没有学好基础知识 ...

  4. github新项目npm错误

    当我们从GitHub或者别人那里拿到项目的时候,一般都是要先npm install 进行安装依赖.但是难免会遇到报错. 出现问题1: 解决方案:清除缓存npm cache clear --force之 ...

  5. Cabloy-CMS中区块的开发与效果

    关于区块 Cabloy-CMS引入了区块的概念,通过区块可以快速向文章添加各种类型的内容,比如:插入一个地图子页面.插入一首音乐,等等 Cabloy-CMS中的区块可以类比于Wordpress古腾堡编 ...

  6. 2.2 追求并发的极致-线程概论 -《zobolの操作系统学习札记》

    2.2 追求并发的极致-线程概论 为了追求程序运行之间的并发性,计算机科学家们发明了进程.为了进一步的追求进程内部的并发性,工程师们又提出了线程. 正是线程的出现,给予了程序员更多地操纵OS的自由,可 ...

  7. npm发布包以及更新包还有需要注意的几点问题(这里以发布vue插件为例)

    前言 在此之前,你需要去npm官网注册一个属于自己的账号,记住自己的账户名以及密码.邮箱,后面会用的到.第一步,安装webpack简易框架 vue init webpack-simple marque ...

  8. RabbitMD大揭秘

    RabbitMD大揭秘 欢迎关注H寻梦人公众号 通过SpringBoot整合RabbitMQ的案例来说明,RabbitMQ相关的各个属性以及使用方式:并通过相关源码深刻理解. Queue(消息队列) ...

  9. 8.4 苹果macOS电脑如何安装Java开发环境(JDK)

    和Windows电脑安装差不多. 下载 来到JDK官方下载界面,点击Java SE 8(简称JDK 8)后面的JDK下载,来到该界面,先同意协议,然后下载对应平台的JDK,我们这里下载Mac OS X ...

  10. CF989C A Mist of Florescence 题解

    因为 \(1 \leq a,b,c,d \leq 100\) 所以每一个颜色都有属于自己的联通块. 考虑 \(a = b=c=d=1\) 的情况. AAAAAAAAAAAAAAAAAAAAAAAAAA ...