源码:
Apache Spark On Kubernetes
转载请注明来源:
Spark提供快速的分布式计算能力,但其安装、部署和管理相对复杂,因此Spark on Kubernetes应运而生。该项目位于 , 包含 Apache Spark 的一份拷贝,支持直接在Kubernetes cluster上原生地运行Spark作业,从而可以把Spark的共享内存、分布式算法等特性直接部署于kubernetes集群之中,从而简化Spark的部署、运维和动态伸缩过程。
- 如果使用Linuxkit构建Kubernetes的操作系统镜像(参见:,那么可以构建出直接运行Spark的虚拟机镜像,从而可以快速在数据中心部署简洁、安全、可靠的Spark节点。等Kubernetes玩熟了,再来搞这个,目前还不支持的哈!
是什么?
这是一个协同维护的项目,根据提案 开展工作。目标是为 Spark 提供原生的 Kubernetes 支持,帮助完成Spark集群的管理, 像 Spark Standalone, Mesos, 以及 Apache YARN cluster managers一样提供完整的集群管理支持。
开始
- 如何运行代码。
- 如何设置开发环境。
- Spark on Kubernetes的高层架构。
- 代码主要位于 目录。
为什么要fork代码?
为新的集群管理添加原生的整合需要非常大的工作量。如果修改不善, 将给Spark在运行其他集群管理器时带入新的Bug, 拖慢整个Spark项目的进程,或者需要发布热修补补丁,维护额外的发行版本。在Spark的省督工作需要小心翼翼地进行,以避免这些潜在的风险。
同时,来自不同的企业和机构希望原生地运行Spark 到 Kubernetes 的人越来越多,而且希望一起来改进。这一群体需要一个共同的代码库 repository, 共同的 forum, issue 追踪, 持续集成, 一起以开源软件的方式高效地工作。
我们征求了Spark贡献者的意见,关于在Apache infrastructure 之外段时间地工作,以允许这一特征能够尽快实现,从而避免给Spark带来额外的分线。目标是快速把这一特征带入到Apache Spark 开发repository的主线,从而进行后续的持续开发。如果进展顺利, 这将是一个短期的fork版本,而不是长期维护的版本。
我们是谁?
这是来几个不同公司的对这一特征感兴趣的小伙伴共同努力的结果。这一项目中参与活跃的公司包括(按字母顺序):
- Bloomberg
- Haiwen
- Hyperpilot
- Intel
- Palantir
- Pepperdata
- Red Hat
(original README below)
Apache Spark
Spark 是用于大数据的快速而通用的集群计算系统。提供了高阶的API,包括:Scala、Java,、Python和R, 通过优化的引擎支持数据分析的计算图调度,还支持丰富的高级工具,包括 Spark SQL for SQL 、DataFrames、MLlib for machine learning、GraphX for graph processing, 以及Spark Streaming for stream processing。
在线文档
你可以找到最新的 Spark 文档, 包括编程指南, 在 。这里只包含最基本的安装设置说明。
编译 Spark
Spark 使用 进行构建,为了构建Spark和例程,运行:
build/mvn -DskipTests clean package
(也可以下载预先构建好的版本,就不必运行上面的过程。)
运行Maven时使用 -T 选项,可以使用更多的线程来加快编译速度。参见 , 更多的细节参见Spark的官网——。
关于开发的一些提示、信息以及IDE的使用,参见:。
交互 Scala Shell
最简单的启动Spark的方法是通过Scala shell:
./bin/spark-shell
试一下下面的代码,将返回 1000:
scala> sc.parallelize(1 to 1000).count()
交互 Python Shell
此外, 如果喜欢 Python, 可以使用 Python shell:
./bin/pyspark
试一下下面的代码,将返回 1000:
>>> sc.parallelize(range(1000)).count()
示范例程
Spark 的 examples
目录下有不少很好的例程。运行使用 ./bin/run-example <class> [params]
。
例如:
./bin/run-example SparkPi
将运行 Pi 这个例子。
你可以设置 MASTER 环境变量,然后运行例程时就可以将作业提交到集群之中。可以是 mesos:// 或者 spark:// URL, "yarn" 用于 YARN, 以及 "local" 以单线程在本地运行,或者"local[N]" 在本地运行 N 个线程。你可以指明 class,该class在 examples
包中。例如:
MASTER=spark://host:7077 ./bin/run-example SparkPi
如果没有给出参数,大多数例程会打印出帮助信息。
运行测试
运行测试过程需要先 . Spark 构建完成后,使用下面的命令运行测试:
./dev/run-tests
Please see the guidance on how to .
关于Hadoop版本
Spark 使用Hadoop 核心库访问 HDFS和其他Hadoop支持的存储系统。因为不同的Hadoop版本的protocols 有改变,因此必须使用你的Hadoop集群对应的版本来构建 Spark才能够访问相应的存储系统。
请参考 ,里面有关于特定Hadoop分发版本的细节说明,以及包括 构建特定的Hive 和 Hive Thriftserver 分发版的说明。
配置
请参考 。
贡献
请查看 ,你也可以为这个项目作出贡献。