使用 Storm 与 Python 集成的标准库和部署工具
项目描述
Pyleus 是一个 Python 2.6+ 框架,用于开发和使用 Apache Storm 顶层架构。
请访问我们的 文档。
master |
develop |
---|---|
关于
Pyleus 是一个用于在 Python 中构建 Apache Storm 顶层架构的框架。
使用 Pyleus,您可以
使用简单的 YAML 文件定义顶层架构
使用 requirements.txt 文件进行依赖管理
利用 Pyleus 基于 MessagePack 的序列化器加速运行
直接从 YAML 文件传递选项到您的组件
仅通过 YAML 修改即可使用 Storm 内置的 Kafka spout
安装
从 PyPI
$ pip install pyleus
注意
您 不需要 在您的 Storm 集群上安装 pyleus。这很酷,不是吗?
但是,如果您打算在配置文件中使用 system_site_packages: true,您应该意识到您的 Storm 节点的环境需要与构建拓扑的机器上的环境相匹配。这意味着在这种情况下,您实际上 必须 在您的 Storm 集群上安装 pyleus。
试试看!
$ git clone https://github.com/Yelp/pyleus.git
$ pyleus build pyleus/examples/exclamation_topology/pyleus_topology.yaml
$ pyleus local exclamation_topology.jar
或者,使用以下方式提交到 Storm 集群
$ pyleus submit -n NIMBUS_HOST exclamation_topology.jar
示例 目录包含几个注释的 Pyleus 顶层架构,旨在尽可能多地涵盖 Pyleus 的功能。
Pyleus 命令行界面
构建顶层架构
$ pyleus build /path/to/pyleus_topology.yaml
本地运行顶层架构
$ pyleus local /path/to/topology.jar
向Storm集群提交拓扑
$ pyleus submit [-n NIMBUS_HOST] /path/to/topology.jar
列出运行在Storm集群上的所有拓扑
$ pyleus list [-n NIMBUS_HOST]
终止运行在Storm集群上的拓扑
$ pyleus kill [-n NIMBUS_HOST] TOPOLOGY_NAME
尝试使用 pyleus -h 查看所有可用命令或使用 pyleus CMD -h 获取特定命令的帮助。
编写您的第一个拓扑
请参阅文档以获取更详细的教程。
组织您的文件
这是简单拓扑的目录树示例
my_first_topology/
|-- my_first_topology/
| |-- __init__.py
| |-- dummy_bolt.py
| |-- dummy_spout.py
|-- pyleus_topology.yaml
|-- requirements.txt
定义拓扑布局
一个简单的 pyleus_topology.yaml 应该看起来像下面这样
name: my_first_topology
topology:
- spout:
name: my-first-spout
module: my_first_topology.dummy_spout
- bolt:
name: my-first-bolt
module: my_first_topology.dummy_bolt
groupings:
- shuffle_grouping: my-first-spout
这定义了一个拓扑,其中单个bolt订阅单个spout的输出流。就这么简单。
编写您的第一个spout
这是实现 dummy_spout.py 的代码
from pyleus.storm import Spout
class DummySpout(Spout):
OUTPUT_FIELDS = ['sentence', 'name']
def next_tuple(self):
self.emit(("This is a sentence.", "spout",))
if __name__ == '__main__':
DummySpout().run()
编写您的第一个bolt
现在让我们看看 dummy_bolt.py
from pyleus.storm import SimpleBolt
class DummyBolt(SimpleBolt):
OUTPUT_FIELDS = ['sentence']
def process_tuple(self, tup):
sentence, name = tup.values
new_sentence = "{0} says, \"{1}\"".format(name, sentence)
self.emit((new_sentence,), anchors=[tup])
if __name__ == '__main__':
DummyBolt().run()
运行您的拓扑
在本地机器上运行拓扑以进行调试
pyleus build my_first_topology/pyleus_topology.yaml
pyleus local --debug my_first_topology.jar
完成后,按 C-C。
配置文件
您可以在家目录中放置一个 .pyleus.conf 文件来设置许多配置选项的默认值
[storm]
nimbus_host: 10.11.12.13
jvm_opts: -Djava.io.tmpdir=/home/myuser/tmp
[build]
pypi_index_url: http://pypi.ninjacorp.com/simple/
参考
许可协议
Pyleus 采用 Apache License 2.0 许可:https://apache.ac.cn/licenses/LICENSE-2.0
项目详情
pyleus-0.3.0.tar.gz 的散列
算法 | 散列摘要 | |
---|---|---|
SHA256 | 16542c5eb4cf4174ee46148d6cf89b7cff911f79de9ccc9c32bc0e07e4c30794 |
|
MD5 | 68ccfb6839e7f11154fc9b25e6c4f94f |
|
BLAKE2b-256 | 3927516fb9ee0ebb3e607620275d44af6ebf79fab3482b09c8605530a98819c8 |