用于启动apache spark集群的命令行工具。
Flintrock的Python项目详细描述
Flintrock是一个命令行工具,用于启动apache spark集群。
虽然Flintrock还没有发布1.0版本,但它相当稳定。当Flintrock通过1.0版本达到正式的稳定性时,可以期待一些小的但仍然是向后不兼容的更改。
在网络上打转
Flintrock在网上的一些讲座、指南和报纸中都有介绍。
-
谈话:
Guides:
用法
这里有一个在ec2上启动集群的快速方法,假设您已经设置了aws帐户。Flintrock最适合Amazon Linux。您可以从这里获得最新的ami id
啊!如果您将这些选项持久保存到文件中,则可以更简洁地执行相同的操作:
啊!使用完群集后,不要忘记使用以下命令销毁它:
啊!使用Flintrock可以做的其他事情包括:
啊!要查看Flintrock还能做什么,或查看特定命令的详细帮助,请尝试:
啊! 还不止这些。Flintrock还有一些您可能会感兴趣的功能。访问S3上的数据
我们建议您通过以下方式从Flintrock集群访问S3上的数据 这些步骤:
- 设置IAM角色
这允许根据请求访问s3。引用此角色时你发射
使用
--ec2 instance profile name
选项(或其 相当于您的config.yaml
文件。 - 使用
s3A://
前缀引用spark代码中的s3路径。s3A://
是 向后兼容s3n://
并替换s3n://
和s3://
。 hadoop项目建议使用s3A:///code> 因为它是主动开发的,支持更大的文件,并且提供 更好的性能。
- 确保Flintrock配置为使用Hadoop/HDFS2.7+。早期的
hadoop版本没有可靠的
s3A://
实现。 Flintrock的默认版本是Hadoop2.8.5,所以不需要做任何事情 如果您使用的是普通配置,请点击此处。 - 使用hadoop aws包调用spark以启用
s3A://
。例如:spark-submit --packages org.apache.hadoop:hadoop-aws:2.7.6 my-app.py pyspark --packages org.apache.hadoop:hadoop-aws:2.7.6
如果您在使用该软件包时遇到问题,请参阅hadoop aws疑难解答。 指南 并尝试调整版本。根据经验,您应该匹配版本 从hadoop aws到spark所针对的hadoop版本(即 通常是hadoop 2.7),即使您要部署到的hadoop版本 您的Flintrock群集不同。
使用这种方法,您不需要复制aws凭证
或者把它们传给你的星火计划。只要分配了iam角色
允许它,spark将能够通过
引用适当的路径(例如s3A://bucket/path/to/file
)。
安装
在使用Flintrock之前,请快速查看 版权 请注意并许可证 并确保您对他们的条款满意。
Flintrock需要Python3.4或更高版本,除非您正在使用 我们的独立软件包的。弗林特洛克已经彻底测试过了 只在OSX上运行,但它应该在所有POSIX系统上运行。 有动机的贡献者应该能够 Windows支持 也不会有太多麻烦。
发布版本
要获得Flintrock的最新版本,只需运行pip
pip3 install flintrock
这将安装Flintrock并将其放置在您的路径上。你现在该走了!
您可能需要开始使用以下两个命令:
flintrock --help flintrock configure
独立版本(不需要python!)
如果没有最新版本的python,或者根本没有安装python, 你还可以用燧石。我们在github上发布独立的flintrock包 版本
在我们的最新版本中找到您的操作系统的独立软件包,
将其解压缩到您选择的位置,并在其中运行Flintrock
可执行文件。
例如:
flintrock_version="0.8.0" curl --location --remote-name "https://github.com/nchammas/flintrock/releases/download/v$flintrock_version/Flintrock-$flintrock_version-standalone-OSX-x86_64.zip" unzip -q -d flintrock "Flintrock-$flintrock_version-standalone-OSX-x86_64.zip"cd flintrock/ # You're good to go! ./flintrock --help
您可能需要将Flintrock可执行文件的位置添加到路径中,以便可以从任何目录调用它。
社区支持的发行版
Flintrock也可以通过以下包管理器获得:
- 自制:
brew安装Flintrock
这些包不受核心贡献者的支持,可能已过时。如果您在使用这些发行版安装Flintrock时遇到困难,请直接联系相关社区。
开发版本
如果您喜欢生活在边缘,请安装Flintrock的开发版本:
flintrock launch test-cluster \ --num-slaves 1\ --spark-version 2.4.0 \ --ec2-key-name key_name \ --ec2-identity-file /path/to/key.pem \ --ec2-ami ami-0b8d0d6ac70e5750c \ --ec2-user ec2-user0
如果您想贡献,按照我们的贡献指南中关于如何安装Flintrock的说明进行操作。
用例
实验
如果你想玩转spark,开发原型应用程序,运行一次性任务,或者只是做个实验,那么使用flintrock是获得一个工作的spark集群的最快方法。
性能测试
Flintrock公开了其底层提供程序的许多选项(例如EC2上的EBS优化卷),这使得创建一个性能可预测的集群变得非常容易,以便进行Spark性能测试。
自动化管道
大多数人会在命令行中交互地使用flintrock,但是flintrock也被设计成自动管道的一部分。Flintrock的退出代码是经过精心选择的;它提供了禁用交互式提示的选项;在适当的时候,它会以yaml格式打印输出,这对人和机器都是友好的。
反使用案例
有些事情Flintrock特别指出不支持。
管理永久性基础设施
Flintrock不是用来管理长寿命的集群,也不是用来管理作为某些环境永久组成部分的任何基础设施。
首先,Flintrock不能保证使用一个版本的Flintrock启动的集群可以由另一个版本的Flintrock管理,也不考虑任何长期的用例。
如果您正在寻找管理永久性基础设施的方法,请查看以下工具:terraform、ansible、saltstack,或者ubuntu jujuju。如果您正在寻找其他人来为您主持和管理Spark,您可能会发现类似于databricks的服务非常有用。亚马逊还提供了emr上的spark服务。
Flintrock旨在推出Spark群集,其中包括HDF、Mesos和Yarn等密切相关的服务。 Flintrock不用于启动外部数据源(如Cassandra)或其他与Spark不紧密集成的服务(如Tez)。 如果您正在寻找从hadoop生态系统启动其他服务的简单方法,请查看apache bigtop项目。 Flintrock将始终利用Spark和相关服务的新特性,使启动集群的过程更快、更简单、更易于维护。如果这意味着放弃对发布旧版本服务的支持,那么我们通常会进行权衡。 Flintrock有一个干净的命令行界面。 Flintrock允许您将所需的配置持久化到一个yaml文件中,这样您就不必在命令行中一遍又一遍地输入相同的选项。 要设置和编辑默认配置文件,请运行以下命令: 您还可以使用 有了这样的配置文件,现在就可以使用以下命令启动集群: 如果你愿意,你可以甚至可以在命令行中覆盖配置文件中的各个选项: 弗林特洛克跑得真快。与SPARK-EC2相比,它能够以多快的速度在EC2上启动完全运行的集群。
SPARK-EC2的发布时间来源于SPARK-5189
请注意,aws的性能是高度可变的,因此您不会得到一致的结果。它们显示了每个工具的最佳案例场景,而不是典型案例。对于Flintrock来说,典型的发射时间要长一两分钟。 Flintrock自动配置集群上的任何可用的临时存储,并使其可用于已安装的服务,如HDF和Spark。此存储空间速度快,非常适合作为这些服务的临时存储空间。 Flintrock提供了一套自动化的端到端测试。这些测试帮助我们满怀信心地开发Flintrock,并保证一定的质量水平。 Flintrock公开了低级提供者选项(例如,使用实例启动的关闭行为" rel="nofollow">来控制集群的详细信息如果您需要,可以设置。 Flintrock是建立和测试香草亚马逊Linux和CentOS。您可以使用从这些发行版中创建的自定义计算机映像轻松启动Flintrock群集。 支持任何东西的多个版本都很困难。测试需要覆盖更多的表面积,从长期来看,用错误修复和解决方案来支持非当前的东西的维护负担确实会增加。 有些项目支持跨多个语言或api版本的内容。例如,SCAPK支持Java 7和8,Python 2.6 +和3 +。这些项目背后的人是神。为了用户的利益和方便,它们承担着巨大的维护负担。 我们在弗林特洛克项目的能力要谦虚得多。当我们仅限于支持一组小型但广泛适用的配置时,我们最有能力长期为项目服务。 注:此处的解释是从Flintrock的原始作者Nicholas Chammas的角度提供的。 我是通过使用spark-ec2开始使用spark的。这是我发现火花如此容易接近。在解决"真正的"问题之前,我不需要花时间预先完成一些设置指南。相反,通过一个简单的spark-ec2命令,我能够启动一个大型的工作集群,并直接开始工作。 当我成为spark-ec2的重度用户时,一些限制变得非常突出,并且变得越来越痛苦。他们给了我这个项目的动力。 在这些限制中,最令人沮丧的是: 我创建Flintrock是为了解决所有这些缺点,它做到了。 几个月前,我开始在Flintrock工作,emr增加了对Spark的支持。很有可能,如果我考虑比我晚一年建造弗林特洛克,我会决定不建造它。 现在Flintrock已经存在,许多用户都很欣赏与EMR相比运行Flintrock集群的更低成本,以及Flintrock更简单的界面。就我而言,我喜欢在空闲时间和弗林特洛克一起工作。 有人问我是否考虑在Ansible、Terraform、Docker或其他什么东西上建造Flintrock。当弗林特洛克只是我脑子里的一个想法时,我研究了其中的一些东西,并决定不使用它们,原因有两个: 这些不一定是"白手起家"的正确理由,但它们是我的理由。如果您已经习惯了任何流行的编排工具,您可能会发现使用它们比在工具链中添加新的独立工具更有吸引力。 Flintrock logo启动非Spark相关服务
推出过时的服务
功能
抛光的cli
flintrock launch test-cluster \
--num-slaves 1\
--spark-version 2.4.0 \
--ec2-key-name key_name \
--ec2-identity-file /path/to/key.pem \
--ec2-ami ami-0b8d0d6ac70e5750c \
--ec2-user ec2-user
1
可配置的cli默认值
flintrock launch test-cluster \
--num-slaves 1\
--spark-version 2.4.0 \
--ec2-key-name key_name \
--ec2-identity-file /path/to/key.pem \
--ec2-ami ami-0b8d0d6ac70e5750c \
--ec2-user ec2-user
2
--config
选项将Flintrock指向非默认配置文件。示例
config.yaml
flintrock launch test-cluster \
--num-slaves 1\
--spark-version 2.4.0 \
--ec2-key-name key_name \
--ec2-identity-file /path/to/key.pem \
--ec2-ami ami-0b8d0d6ac70e5750c \
--ec2-user ec2-user
3
flintrock launch test-cluster \
--num-slaves 1\
--spark-version 2.4.0 \
--ec2-key-name key_name \
--ec2-identity-file /path/to/key.pem \
--ec2-ami ami-0b8d0d6ac70e5750c \
--ec2-user ec2-user
4
flintrock launch test-cluster \
--num-slaves 1\
--spark-version 2.4.0 \
--ec2-key-name key_name \
--ec2-identity-file /path/to/key.pem \
--ec2-ami ami-0b8d0d6ac70e5750c \
--ec2-user ec2-user
5
快速启动
设置
m3.large
结果
<表><广告> < /广告><正文>群集大小
Flintrock启动时间 SPARK-EC2启动时间
1个从机 200万秒 8米44秒 50个从机 2米30秒 37m 30秒 100个从机 2米42秒 1小时06分05秒 高级存储设置
测试
低级提供商选项
没有自定义计算机映像依赖项
反功能
支持过时版本的python、ec2api等。
动机
既然我们有电子病历,为什么还要建弗林特洛克?
你为什么不在编曲工具的基础上建立Flintrock?
关于Flintrock徽标