Apache Spark on K8s的安全性和性能优化
前言
Apache Spark是目前最为流行的大数据计算框架,与Hadoop相比,它是替换MapReduce组件的不二选择,越来越多的企业正在从传统的MapReduce作业调度迁移到Spark上来,Spark的生态圈支持者越来越多,当然它出众的内部API设计,让它也非常容易和现有既成事实的Hadoop组件(YARN/HDFS)集成。
容器技术的兴起,各种分布式的容器编排技术也应运而生,其中的佼佼者包括Apache Mesos和Google发起的Kubernetes,虽然Mesos系出名门(UC Berkely),但是K8s最近1-2年逐渐有拉大领先差距的趋势。
大数据计算框架,存储框架和云计算容器技术,这两者在数据中心的技术栈中,早期都是各自独立发展,并无太大关联关系,伴随各自技术生态圈日益成熟,几个大的技术框架各自领地划分也非常清楚,大数据计算服务与其他云计算服务并无二致,需要统一的资源调度与协调框架,让它的部署更加方便,资源利用率更加高效;从Mesos或者K8S的角度,作为致力于成为数据中心的OS(操作系统)的资源调度框架,放弃掉数据中心最大的应用场景之一的大数据计算服务,貌似也说不过去,于是,这两者慢慢也走在了一起。这篇文章,我们来探讨它们的重要代表,Apache Spark和K8s,当它们走在一起的时候,会碰到什么样的问题,以及社区的最新进展。
Apache Spark的分布式调度框架
回顾历史,Spark的资源调度器有这么几个实现:
- Local模式,主要用于Spark应用程序开发调试使用,毕竟是单机单进程,设置断点,单步跟踪都十分方便;
 - Standalone模式,独占模式,启动应用程序时告诉调度器需要多少资源(多少CPU线程,多少内存),在应用程序的完整生命周期内,独享资源,哪怕资源闲置也无法分配给其他用户使用;
 - Yarn模式,Yarn模式本质功能和Standalone没有太大差别,只不过YARN是Hadoop生态系统中的重要组件,有着更好的多租户的概念,且有很多其他组件对于YARN的支持很完备,Spark为了和其他Hadoop生态组件共存,支持YARN模式也是大势所趋;好在YARN发展出了Dynamic Resource Allocation(动态资源分配),让类似Spark这种大数据计算框架,在部分计算任务结束时就能提前释放资源,让给同一集群中的其它用户或者程序使用,极大提高了系统资源利用率。
 - Mesos模式,由于和Spark师出同门,Spark在很早期就已经支持它了,当然Mesos在动态资源分配上也做得比YARN要早,并且支持容器技术,当初的理念是很先进的。
 - K8s模式,确实Mesos当初的理念是很先进的,但是架不住Google力推Kubernetes,K8s在容器编排和软件生态建设上,充分发挥了google工程师团队强大的工程能力,Mesos能提供的功能,基本K8s都能给。
 
为什么容器技术(和K8s)对于Spark很重要?
- 在共享云计算平台多租户的应用场景下,每个用户都希望有独立的,隔离的应用环境,减少彼此调用都干扰,比如做Python调用时,不同用户对于Python的版本可能都会有不同要求。容器技术可以为不同用户和应用构建完全隔离,独立,可简单维护的运行环境。这是Hadoop时代的YARN,利用虚拟的资源分配技术所满足不了的。
 - YARN是大数据资源调度框架,而数据中心软件系统往往还包括数据库服务,web服务,消息服务等等其它应用程序,让这些完全不相干的应用友好共存,最大化资源利用率,是数据中心维护者的最大心愿,K8s碰巧又是可以完成这一使命的有力候选人。可以参见 《京东如何基于容器技术打造高性能及效率的大数据平台》
 
Spark on K8S面临的问题和调整
作为最为流行的大数据计算框架Apache Spark,与Kubernetes的集成是成为当前比较热门的话题,这个工作目前是有Google的工程师在力推。除了计算需求以外,大数据还会有大量的数据存储在HDFS之上,当Kubernetes可以轻易调度Apache Spark,为它提供一个安全可靠的运行隔离环境时,数据在多用户之间的安全性又变得非常棘手,本文正是探讨了两个话题:如何利用Kerboros这样的认证体系,打通HDFS和Spark的作业执行的权限控制;出于性能的考虑,在Spark的Executor Pod如何仍然保持数据本地性调度优化。
具体细节可以参见示说网上的ppt文档: apache_spark_on_k8s_and_hdfs_security
Apache Spark on K8s的安全性和性能优化的更多相关文章
- Tomcat 8.5 基于 Apache Portable Runtime(APR)库性能优化
		
Tomcat可以使用Apache Portable Runtime来提供卓越的性能及可扩展性,更好地与本地服务器技术的集成.Apache Portable Runtime是一个高度可移植的库,位于Ap ...
 - Apache Spark 2.2中基于成本的优化器(CBO)(转载)
		
Apache Spark 2.2最近引入了高级的基于成本的优化器框架用于收集并均衡不同的列数据的统计工作 (例如., 基(cardinality).唯一值的数量.空值.最大最小值.平均/最大长度,等等 ...
 - 46、Spark SQL工作原理剖析以及性能优化
		
一.工作原理剖析 1.图解 二.性能优化 1.设置Shuffle过程中的并行度:spark.sql.shuffle.partitions(SQLContext.setConf()) 2.在Hive数据 ...
 - 使用Apache Spark 对 mysql 调优 查询速度提升10倍以上
		
在这篇文章中我们将讨论如何利用 Apache Spark 来提升 MySQL 的查询性能. 介绍 在我的前一篇文章Apache Spark with MySQL 中介绍了如何利用 Apache Spa ...
 - 【转载】Apache Spark Jobs 性能调优(二)
		
调试资源分配 Spark 的用户邮件邮件列表中经常会出现 "我有一个500个节点的集群,为什么但是我的应用一次只有两个 task 在执行",鉴于 Spark 控制资源使用的参数 ...
 - 【转载】Apache Spark Jobs 性能调优(一)
		
当你开始编写 Apache Spark 代码或者浏览公开的 API 的时候,你会遇到各种各样术语,比如 transformation,action,RDD 等等. 了解到这些是编写 Spark 代码的 ...
 - Apache Spark Jobs 性能调优
		
当你开始编写 Apache Spark 代码或者浏览公开的 API 的时候,你会遇到各种各样术语,比如transformation,action,RDD(resilient distributed d ...
 - Apache Spark 2.2.0 中文文档 - 概述 | ApacheCN
		
Spark 概述 Apache Spark 是一个快速的, 多用途的集群计算系统. 它提供了 Java, Scala, Python 和 R 的高级 API,以及一个支持通用的执行图计算的优化过的引擎 ...
 - Apache Spark源码剖析
		
Apache Spark源码剖析(全面系统介绍Spark源码,提供分析源码的实用技巧和合理的阅读顺序,充分了解Spark的设计思想和运行机理) 许鹏 著 ISBN 978-7-121-25420- ...
 
随机推荐
- python itchat 微信开发
			
使用itchat可以简单操作微信,进行好友和群消息的发送 安装: pip install itchat 使用: import itchat, time # 登录 itchat.auto_login(h ...
 - python requests实现windows身份验证登录
			
1.安装ntlm https://github.com/requests/requests-ntlm pip install requests_ntlm 2.使用 import requests f ...
 - Oracle GoldenGate 详解
			
一.Oracle GoldenGate介绍 GoldenGate软件是一种基于日志的结构化数据复制软件.GoldenGate 能够实现大量交易数据的实时捕捉.变换和投递,实现源数据库与目标数据库的数据 ...
 - 【Leetcode】【Medium】Gray Code
			
The gray code is a binary numeral system where two successive values differ in only one bit. Given a ...
 - 安装nginx及依赖包
			
#!/bin/bash #auto zhangjia #date 20171007#安装SSL##################################################### ...
 - vs2017 git到oschina 方法
			
vs2017中git基本使用方法: 1.开发环境vs2017,git服务器使用git.oschina.net 2.打开vs2017 创建项目 如果已有项目则: 3.完成后在文件前面会有小锁的图标,说明 ...
 - 从0开始学CentOS7(1)
			
首先,先来几句简介吧.. java开发一枚,总觉得自己的技术提升缓慢... 最近看到同事有在论坛发发自己的心得什么的...我脑中晃出的灵光就是:好记性不如烂笔头,试试吧~ 好了,正式开始了..cent ...
 - 通过nginx 499 来判断服务端超时数量
			
这个其实不能算一篇文章,因为内容太少了,就当记点笔记吧. (1)什么是 nginx 499 499 其实是 nginx 下特有的 http 状态码,代表客户端主动断开了连接,导致服务器无法返回 htt ...
 - Vue中引入jquery方法  vue-cli webpack 引入jquery
			
在vue-cli 生成的工程中引入了jquery(模板用的webpack) 首先在package.json里的dependencies加入"jquery" : "^2.2 ...
 - scp出现ssh port 22: Connection refused 问题解决具体步骤
			
[root(0)@sys11 09:20:29 /home/work/Code_release/bj]# scp ./release.sh root@192.168.161.151:/Users/a ...