• 前言

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的安全性和性能优化的更多相关文章

  1. Tomcat 8.5 基于 Apache Portable Runtime(APR)库性能优化

    Tomcat可以使用Apache Portable Runtime来提供卓越的性能及可扩展性,更好地与本地服务器技术的集成.Apache Portable Runtime是一个高度可移植的库,位于Ap ...

  2. Apache Spark 2.2中基于成本的优化器(CBO)(转载)

    Apache Spark 2.2最近引入了高级的基于成本的优化器框架用于收集并均衡不同的列数据的统计工作 (例如., 基(cardinality).唯一值的数量.空值.最大最小值.平均/最大长度,等等 ...

  3. 46、Spark SQL工作原理剖析以及性能优化

    一.工作原理剖析 1.图解 二.性能优化 1.设置Shuffle过程中的并行度:spark.sql.shuffle.partitions(SQLContext.setConf()) 2.在Hive数据 ...

  4. 使用Apache Spark 对 mysql 调优 查询速度提升10倍以上

    在这篇文章中我们将讨论如何利用 Apache Spark 来提升 MySQL 的查询性能. 介绍 在我的前一篇文章Apache Spark with MySQL 中介绍了如何利用 Apache Spa ...

  5. 【转载】Apache Spark Jobs 性能调优(二)

    调试资源分配   Spark 的用户邮件邮件列表中经常会出现 "我有一个500个节点的集群,为什么但是我的应用一次只有两个 task 在执行",鉴于 Spark 控制资源使用的参数 ...

  6. 【转载】Apache Spark Jobs 性能调优(一)

    当你开始编写 Apache Spark 代码或者浏览公开的 API 的时候,你会遇到各种各样术语,比如 transformation,action,RDD 等等. 了解到这些是编写 Spark 代码的 ...

  7. Apache Spark Jobs 性能调优

    当你开始编写 Apache Spark 代码或者浏览公开的 API 的时候,你会遇到各种各样术语,比如transformation,action,RDD(resilient distributed d ...

  8. Apache Spark 2.2.0 中文文档 - 概述 | ApacheCN

    Spark 概述 Apache Spark 是一个快速的, 多用途的集群计算系统. 它提供了 Java, Scala, Python 和 R 的高级 API,以及一个支持通用的执行图计算的优化过的引擎 ...

  9. Apache Spark源码剖析

    Apache Spark源码剖析(全面系统介绍Spark源码,提供分析源码的实用技巧和合理的阅读顺序,充分了解Spark的设计思想和运行机理) 许鹏 著   ISBN 978-7-121-25420- ...

随机推荐

  1. windows下安装jekyll

    jekyll在其官方网站上说并不建议在windows操作系统安装,可是我们已经在windows环境下操作比较习惯了,而安装linux或mac的成本又比较高.因此,虽然在windows安装jekyll的 ...

  2. 修改mysql允许主机访问的权限

    开启mysql的远程访问权限 默认mysql的用户是没有远程访问的权限的,因此当程序跟数据库不在同一台服务器上时,我们需要开启mysql的远程访问权限. 主流的有两种方法,改表法和授权法. 相对而言, ...

  3. linux和aix内核参数检查

    安装oracle软件时需要设置操作系统级别的用户限制,后期检查可以使用如下命令,方便问题的排查工作 linux: tail -15 /etc/security/limits.conf tail -30 ...

  4. 手工执行sql tuning advisor和sql access advisor

    sql tuning advisor:创建任务DECLARE my_task_name VARCHAR2(30); my_sqltext CLOB; BEGIN my_sqltext := 'SELE ...

  5. 一个U盘黑掉你:TEENSY实战

    从传统意义讲,当你在电脑中插入一张CD/DVD光盘,或者插入一个USB设备时,可以通过自动播放来运行一个包含恶意的文件,不过自动播放功能被关闭时,autorun.inf文件就无法自动执行你的文件了.然 ...

  6. MongoDB插入文档

    db.collection.insertOne() 插入单个文档.db.collection.insertMany() 插入多个文档.db.collection.insert() 插入单/多个文档.  ...

  7. 连接IBM MQ原因码报2035的错误解决办法

    我们的系统使用了ibm mq,用户用来向国家局上报文件和接收文件,前几天用户说上报一直不成功.由于 开发这块程序的人已经辞职了,我觉定在我的机器部署一套,研究一下.我的思路: 在我的机器上安装mq,建 ...

  8. 对于view的深入理解,续篇(一)重写ViewGroup的onDraw

    在上一篇文章中,不仅熟悉了动态设定布局的方法,而且也对view的绘制流程有所了解.于是我继续做了下面几个实验,发现了一个问题.如果对view的绘制流程不是很明白,可以看看我的上一篇文章的介绍,点击下面 ...

  9. [转]CUDA在Windows下的软件开发环境搭建

    引自:http://www.makaidong.com/yaoyuanzhi/archive/2010/11/13/1876215.html 本文我们以visual studio 2005 为例演示c ...

  10. 【luogu P1666 前缀单词】 题解

    题目链接:https://www.luogu.org/problemnew/show/P1666 10.13考试题 当时没想出来,觉得是要用trie做,在trie上跑一个树形dp 结果是写了个子集枚举 ...