Apache Spark 2.3 加入支持Native Kubernetes及新特性文档下载
问题导读 1.什么是Kubernetes? 2.在Kubernetes集群尝试新功能,该如何实现? 3.观看群集上创建的Spark资源,该如何操作? 在开始之前我们需要知道 什么是Kubernetes Kubernetes(通常写成“k8s”)是最开始由google设计开发最后贡献给Cloud Native Computing Foundation的开源容器集群管理项目。它的设计目标是在主机集群之间提供一个能够自动化部署、可拓展、应用容器可运营的平台。Kubernetes通常结合docker容器工具工作,并且整合多个运行着docker容器的主机集群。 介绍 开源社区在过去一年中一直致力于为Kubernetes的数据处理,数据分析和机器学习工作负载提供支持。 Kubernetes中的新扩展功能(如自定义资源和自定义控制器)可用于创建与各个应用程序和框架的深度集成。 传统上,数据处理工作负载已经在像YARN / Hadoop堆栈这样的专用设置中运行。 但是,统一Kubernetes上所有工作负载的控制层可以简化群集管理并提高资源利用率。
带有原生Kubernetes支持的Apache Spark 2.3结合了两个着名的开源项目中, large-scale 数据处理框架; 和Kubernetes。 Apache Spark是数据科学家必不可少的工具,为从大规模数据转换到分析到机器学习的各种应用提供强大的平台。 数据科学家们一致采用容器,通过实现诸如依赖性打包和创建可重现的构件等好处来改进其工作流程。 考虑到Kubernetes是管理集装箱环境的事实标准,在Spark中支持Kubernetes API是非常合适的。 具体而言,Kubernetes中的本地Spark应用程序充当自定义控制器,该应用程序创建Kubernetes资源以响应Spark调度程序发出的请求。 与在Kubernetes中以独立模式部署Apache Spark相反,本地方法提供了对Spark应用程序的精细管理,提高了弹性,并与日志记录和监视解决方案无缝集成。 该社区还在探索高级用例,如管理流式工作负载和利用Istio等服务网格。 要在Kubernetes集群上自己尝试,只需下载官方Apache Spark 2.3发行版的二进制文件即可。 例如,下面我们描述运行一个简单的Spark应用程序来计算三个Spark执行程序之间的数学常量Pi,每个执行程序在一个单独的窗格中运行。 请注意,这需要运行Kubernetes 1.7或更高版本的集群,配置为访问它的kubectl客户端,以及缺省命名空间和服务帐户所需的RBAC规则。
[Bash shell] 纯文本查看 复制代码
?
$ kubectl cluster-info
Kubernetes master is running at https://xx.yy.zz.ww
$ bin/spark-submit
--master k8s://https://xx.yy.zz.ww
--deploy-mode cluster
--name spark-pi
--class org.apache.spark.examples.SparkPi
--conf spark.executor.instances=5
--conf spark.kubernetes.container.image=<spark-image>
--conf spark.kubernetes.driver.pod.name=spark-pi-driver
local:///opt/spark/examples/jars/spark-examples_2.11-2.3.0.jar
要观看群集上创建的Spark资源,可以在单独的终端窗口中使用以下kubectl命令。
[Bash shell] 纯文本查看 复制代码
?
$ kubectl get pods -l 'spark-role in (driver, executor)' -w
NAME READY STATUS RESTARTS AGE
spark-pi-driver 1/1 Running 0 14s
spark-pi-da1968a859653d6bab93f8e6503935f2-exec-1 0/1 Pending 0 0s
...
结果可以在作业执行期间通过运行流式传输:
[Bash shell] 纯文本查看 复制代码
?
$ kubectl logs -f spark-pi-driver
当应用程序完成时,您应该在驱动程序日志中看到Pi的计算值。 在Spark 2.3中,我们首先支持用Java和Scala编写的Spark应用程序,并支持从各种数据源(包括HTTP,GCS,HDFS等)进行资源本地化。 我们还密切关注Spark执行者的失败和恢复语义,为未来的发展打下坚实的基础。 立即开始使用开源文档(https://spark.apache.org/docs/latest/running-on-kubernetes.html)。 参与 在不久的将来有很多令人兴奋的工作要做。我们正在积极研究诸如动态资源分配,依赖关系的群集分段,对PySpark&SparkR的支持,对Kerberized HDFS集群的支持以及客户端模式和流行笔记本的交互式执行环境等功能。对于爱上Kubernetes以声明方式管理应用程序的方式的人们,我们也一直致力于Kubernetes Operator的spark-submit,它允许用户声明式地指定和提交Spark应用程序。 我们刚刚开始!我们希望您能参与并帮助我们进一步发展项目。 加入spark-dev和spark-user邮件列表[https://spark.apache.org/community.html]。 在Kubernetes组件下的Apache Spark JIRA[https://issues.apache.org/jira/issues/?jql=project+%3D+SPARK+AND+component+%3D+Kubernetes]中提出问题。 周三早上10点参加我们的SIG会议[https://github.com/kubernetes/community/tree/master/sig-big-data]。 非常感谢Apache Spark和Kubernetes的贡献者分布在多个组织(Google,Databricks,Red Hat,Palantir,Bloomberg,Cloudera,PepperData,Datalayer,HyperPilot等),他们花费了数百小时来完成这项工作。我们期待看到更多的人为该项目做出贡献并帮助其进一步发展。
- Bash 脚本:正则表达式基础篇
- 补丁管理:不要以持续运行时间为自豪
- 微信小程序再次深夜放大招!竟然可以玩起直播来了?
- 上海设专项资金支持人工智能创新发展
- 监管下发145号文摸底互联网平台与交易所合作
- 条码支付确立规范引导金融创新趋利避害
- 百度Apollo自动驾驶组“国家队”,全线产品将在CES首度亮相
- Sass 基础(三)
- 2018年——霍金怎么样谈未来人工智能,地球还有多少时间
- Linux探秘之用户态与内核态
- 微信小游戏重磅上线,H5游戏和页游迎来新天地?
- 名为“闪电比特币”Lightning Bitcoin,LBTC的新型比特币硬叉被释放
- IDHub亮相区块链行业巅峰盛宴 分享网络生活的“进化论”
- 总结:如何加速你的 WordPress 站点?
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 开发一个简单的 Vue 弹窗组件
- R语言模拟人类生活预期寿命动态可视化动画图gif
- Vue 动态添加路由及生成菜单
- R语言泊松回归对保险定价建模中的应用:风险敞口作为可能的解释变量
- Vue 页面权限控制和登陆验证
- Codeforces Round #502 (in memory of Leopoldo Taravilse, Div. 1 + Div. 2)C. The Phone Number
- Codeforces Beta Round #3 C. Tic-tac-toe
- [记录] 数据库中,根据经纬度,查询距离最近的地点
- PAT (Basic Level) Practice (中文)1010 一元多项式求导 (25 分)
- R语言随机森林模型中具有相关特征的变量重要性
- PAT (Basic Level) Practice (中文)1009 说反话 (20 分)
- Codeforces Beta Round #8 A. Train and Peter
- Codeforces Round #559 (Div. 2)B. Expansion coefficient of the array
- Codeforces Beta Round #72 (Div. 1 Only)B. Doctor
- pygame游戏常用方法