跳转到主要内容

使用 Storm 与 Python 集成的标准库和部署工具

项目描述

Pyleus 是一个 Python 2.6+ 框架,用于开发和使用 Apache Storm 顶层架构。

请访问我们的 文档

master

develop

master-status

develop-status

关于

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 (18.0 MB 查看散列)

上传时间

由以下机构支持

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF 赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误记录 StatusPage StatusPage 状态页面