美文网首页
一种大数据作业容器化的方法

一种大数据作业容器化的方法

作者: 李传亮 | 来源:发表于2021-04-07 17:36 被阅读0次

大数据分布式作业调度系统的一般架构是由 master 将任务分发到一批 worker 上执行

image.png

大数据作业有很多种不同的任务类型:

  • Shell
  • Jar
  • Hive/Spark sql
  • Python
  • 抽取、导出

按运行方式又可分为两大类:

  • 在 worker 本地运行的,比如一个 shell 脚本,或者一个算法类的 python 脚本
  • 由 worker 提交到资源调度系统 yarn 上运行的任务,比如 spark submit, hive sql 等

每个在 worker 上运行的任务都会消耗一些本地资源,worker 的配置将决定同时可以调度到多少任务上去运行。

对于以上所指的第二类任务,由于任务真正运行的地方是在 Yarn 集群上,所以需要 worker 的资源较少,而对于第一类任务,特别是 python 类的任务,需要消耗较多 CPU 和内存,由于缺乏隔离机制,会导致 worker 的不稳定,从而影响其它任务的运行。

那么如何解决这个问题呢,首先想到的办法是能否让调度系统支持资源隔离机制,即每个任务将被隔离在一个单独的容器中,限制其资源的使用,进而我们会想到 docker 和 Kubernetes,其实已经有这类调度系统出现,叫 Argo, 这种调度系统完全是基于 Kubernetes 开发的云原生作业调度系统,使用 CRD 来封装各种作业类型,任务最终都会以容器化的形式运行在 Kubernetes 上。

本文提供在一个非云原生调度系统上无缝支持容器化的方式。

image.png

这种方式就是图中的 k8s_exec, 它是一个使用 kubernetes/python sdk 开发的脚本命令,可以将一个任务脚本包装成一个 on k8s 的任务,提交到 k8s 集群上运行,将管理任务的生命周期。通过这种方式,可以对现在系统较少的倾入方式,实现任务的容器化和资源隔离,更进一步的,特别地,作者将这种方式用在了 Spark on Kubernetes 上,使用调度系统上的 Spark SQL 任务运行在 Kubernetes 上。

k8s_exec 的工作原理如图,详情请查看 github

image.png

相关文章

  • 一种大数据作业容器化的方法

    大数据分布式作业调度系统的一般架构是由 master 将任务分发到一批 worker 上执行 大数据作业有很多种不...

  • ArrayList源码学习

    容器初始化方法: 两种初始化方法 不指定初始容器大小 内部源码操作 指定初始化容器大小 添加方法 有4种添加方法:...

  • Docker 安装 Mongodb

    mongo 数据持久化 在使用MongoDB的容器时,数据持久化有很多种方式,下面我们将描述一种推荐的方式: 在宿...

  • Docker安装redis和mysql并挂载数据目录在外部

    redis容器化安装并挂载数据目录在外部: mysql容器化安装并挂载数据目录在外部:

  • docker容器数据卷

    什么是容器数据卷 把docker容器运行产生的数据持久化,相当于容器的外置硬盘 容器数据卷的特点 1.数据卷可在容...

  • 容器数据卷

    一、什么是容器数据卷 对容器内的数据做持久化,防止容器内的数据丢失。还可以实现在容器之间共享或重用数据 。同样也可...

  • 设计模式-迭代器设计模式

    1.定义 提供一种方法顺序访问某个容器的元素,但是又不暴露容器内部的数据显示 2.示例

  • Docker 数据持久化的三种方案,你总能用到

    容器中的数据可以存储在容器层。但是将数据存放在容器层存在以下问题: 数据不是持久化。意思是如果容器删除了,这些数据...

  • spring 初始化和销毁方法

    在容器创建前叫做初始化方法,容器关闭后叫做销毁方法。 配置如下: a.初始化方法: b.销毁方法 销毁方法需要用...

  • 创建容器数据卷--VOLUME

    容器数据卷是什么? 类似于Redis里面的rdb和aof文件 容器数据卷有啥用? 容器数据持久化、宿主机和容器的数...

网友评论

      本文标题:一种大数据作业容器化的方法

      本文链接:https://www.haomeiwen.com/subject/crhfsktx.html