Spark on Kubernetes与阿里云的深度整合
最近,笔者尝试将Spark on Kubernetes与阿里云深度整合,设计一个开箱即用的Spark on Kubernetes镜像。
首先通过Terraform在阿里云上一键创建和销毁Kubernetes集群。然后写了一个脚本生成Spark镜像,使其在Kubernetes上运行时可以直接读写阿里云OSS上的数据。最后还写了一个spark-submit脚本,可以让镜像动态地从阿里云OSS上下载需要运行的主程序包(jar)。
功能:
一次编译,多次运行,同时支持共有云、私有云、以及混合云。用户只需专注于Spark job本身,无需担心运维。解耦计算与存储,不再需要HDFS集群,更加节省费用。避免了常规做法中的二次资源调度,进一步提升资源管理效率。每一个job都可以指定资源,实现更好的资源隔离。自带弹性伸缩属性,无需被集群太小所困扰。
优势:
镜像可以部署到共有云、私有云、或混合云上的任意一个Kubernetes集群
镜像可以直接读写阿里云的对象存储服务(OSS),节省了HDFS的费用
可以从阿里云的OSS上自动下载包含Spark job的工作包(jar),不再用为每个工作包制作新的镜像可以从阿里云的OSS上自动下载包含Spark job的工作包(jar),不再用为每个工作包制作新的镜像
特点:
使用Kubernetes原生调度的Spark on Kubernetes是对现有的Spark on Yarn/Mesos的资源使用方式的革命性的改进,主要表现在以下几点:
1、Kubernetes原生调度:不再需要二层调度,直接使用Kubernetes的资源调度功能,跟其他应用共用整个kubernetes管理的资源池;
2、资源隔离,粒度更细:原先yarn中的queue在Spark on Kubernetes中已不存在,取而代之的是Kubernetes中原生的namespace,可以为每个用户分别指定一个namespace,限制用户的资源quota;
3、细粒度的资源分配:可以给每个spark任务指定资源限制,实际指定多少资源就使用多少资源,因为没有了像yarn那样的二层调度(圈地式的),所以可以更高效和细粒度的使用资源;
4、监控的变革:因为做到了细粒度的资源分配,所以可以对用户提交的每一个任务做到资源使用的监控,从而判断用户的资源使用情况,所有的metric都记录在数据库中,甚至可以为每个用户的每次任务提交计量;
5、日志的变革:用户不再通过yarn的web页面来查看任务状态,而是通过pod的log来查看,可将所有的Kubernetes中的应用的日志等同看待收集起来,然后可以根据标签查看对应应用的日志;
所有这些变革都可以让我们更高效的获取资源、更有效率的获取资源!
笔者设计的Spark on Kubernetes在普通版本的基础上,与阿里云深度整合,添加了一些比较实用的特性:
可以通过Terraform配置阿里云ACK Kubernetes集群,一键创建和销毁集群,避免重复劳动以及不必要的集群消耗
可以直接从阿里云OSS上获取Spark所需jar包,避免重复打包镜像
可以直接通过阿里云OSS读写数据,避免不必要的HDFS费用
目前正在免费Alpha测试中,具体操作步骤记录在了这篇博客里。欢迎感兴趣的同学一起讨论。也可通过邮箱与笔者联系沟通。
————————————————
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
使用Dataworks同步Elasticsearch至MaxCompute 日期类型为\N的解决办法
问题背景: 如果ES的数据存在日期类型,并且ES的日期类型本身没有dateFormat的话,同步到MaxCompute默认是空值。 如图: 解决办法: 需要在elasticsearch Reader中增加dateFormat属性,格式和要同步的ES日期格式一致就可以了。如: { "type": "job", "steps": [ { "stepType": "elasticsearch", "parameter": { "search": "", "endpoint": "http://阿里云es地址:9200", "password": "密码", "dateFormat": "yyyy-MM-dd'T'HH:mm:ss.SSSZZ", "retryCount": 3, "column": [ "created_time" ], "scroll": "1m", "index": "odpstest", "type": "doc", "username": "elastic" }, "name": "Reader", "category": "reader" }, { "stepTyp...
- 下一篇
阿里云服务器实例规格怎么选/阿里云所有实例规格适用场景汇总
当前国内提到上云服务器用户首先想到阿里云,可见阿里云在国内的名气如此之大。不过实际购买阿里云服务器的时候会发现有几十种实例规格,而且单从实例规格、名字上看,并不知道每一种是什么,用于什么场景。对于新手往往不知道怎么选择。接下来老魏汇总了阿里云当前所有实例的适用场景介绍给大家,希望有帮助。 选择服务器的时候,根据阿里云官方介绍的实例规格所适合的适用场景选择就可以了。 点我领取阿里云2000元代金券,(阿里云优惠券的作用:购买阿里云产品,最后支付结算的时候,阿里云优惠券可抵扣一部分费用。 以下表格展示了阿里云每个实例规格所适用的场景 实例类型 适用场景 突发性能实例规格族t5 Web应用服务器 轻负载应用、微服务 开发测试压测服务应用 共享型n4 网站和Web应用程序 开发环境、构建服务器、代码存储库、微服务、测试和暂存环境 轻量级企业应用 共享型mn4 网站和Web应用程序 轻量级数据库、缓存 综合应用,轻量级企业服务 通用型实例规格族g6 高网络包收发场景,例如视频弹幕、电信业务转发等 各种类型和规模的企业级应用 网站和应用服务器 游戏服务器 中小型数据库系统、缓存、搜索集群 数据分析...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
-
Docker使用Oracle官方镜像安装(12C,18C,19C)
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池
- CentOS8编译安装MySQL8.0.19
- Docker快速安装Oracle11G,搭建oracle11g学习环境
- SpringBoot2配置默认Tomcat设置,开启更多高级功能
- MySQL8.0.19开启GTID主从同步CentOS8
- CentOS7,8上快速安装Gitea,搭建Git服务器
- Jdk安装(Linux,MacOS,Windows),包含三大操作系统的最全安装
- SpringBoot2编写第一个Controller,响应你的http请求并返回结果
推荐阅读
最新文章
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池
- Docker使用Oracle官方镜像安装(12C,18C,19C)
- CentOS6,CentOS7官方镜像安装Oracle11G
- SpringBoot2整合Redis,开启缓存,提高访问速度
- Jdk安装(Linux,MacOS,Windows),包含三大操作系统的最全安装
- SpringBoot2配置默认Tomcat设置,开启更多高级功能
- SpringBoot2整合MyBatis,连接MySql数据库做增删改查操作
- Hadoop3单机部署,实现最简伪集群
- MySQL8.0.19开启GTID主从同步CentOS8
- SpringBoot2编写第一个Controller,响应你的http请求并返回结果