python stormピット記を遊ぶ

3344 ワード

stormの勉強を始めるつもりです.stormは最も有名なリアルタイムストリーム処理で、sparkにはspark streamingもありますが、出るのが遅く、行く穴がstormより多いので、stormが優先です.
stormはコアがClojureで記述されており、トポロジーを記述するために任意の言語をサポートできると主張されています.
pythonしかできないので、pythonから対応するライブラリファイルを選択しなければなりません.
Pythonには現在、pyleusとstreamparseの2つのライブラリがあります.前者はgithubで2年間更新されずstorm 0.9にのみサポートされている.後者はずっと更新されているので、最新のstrom 1.1.0には多くの選択肢がありません.
stormローカル擬似クラスタ公式サイト構成を採用しました
storm.zookeeper.servers:
     - "127.0.0.1"

nimbus.seeds: ["127.0.0.1"]
ui.port: 9090

nimbus.host: "localhost"
supervisor.slots.ports:
    - 6700
    - 6701
    - 6702
    - 6703

uiのデフォルトの8080ポートがpolipoに使われているため、ここではウェブポートを9090に設定します.
次にstormを次の順序で起動します.
cd /xxx/yyy/apache-storm-1.1.0/bin
./storm nimbus &
./storm supervisor &
./storm ui &

localhost:9090を開き、問題がなければstormの管理ページが表示されます.
次にstreamparseのインストールを開始します.仮想環境を使用しているのでsudoは必要ありません.
pip install streamparse

そして走り始めるdemo:
sparse quickstart wordcount
cd wordcount
sparse run

結局直接間違えて、leinが足りないと教えてくれて、私は呆然とした顔をしていました.Googleは、これがClojureのパッケージ管理ツールであることを知りました.そこで直接lein公式サイトへ
leinのインストールには、スクリプトでダウンロードしてインストールする方法と、PPAを追加する方法の2つがあります.もともとleinもaptを直接インストールしてくれたので、いろいろな歴史的な原因があったので、ほほほ...
怠け者として、スクリプトのダウンロードを優先します.結局速度が異常に遅い...インストールの進捗を見て1日かかるので、思い切って諦めます..
PPAを選択してaptインストールを追加するしかありません:
sudo add-apt-repository ppa:mikegedelman/leiningen-git-stable
sudo apt-get update
sudo apt-get install lein

完了したらsparse runコマンドを走り続けます.結局ダメで、stackoverflowに行ってひっくり返したらconfigを配置する必要があることがわかりました.json.しかしstreamparseのdemoでは言わず、プロジェクトを作成してそのまま走れると言っていたので、私は急に少し穴が開いたような気がしました.の
構成config.jsonは以下の通りです.
{
    "serializer": "json",
    "topology_specs": "topologies/",
    "virtualenv_specs": "virtualenvs/",
    "envs": {
        "prod": {
            "user": "user_xxx",
            "ssh_password": "password",
            "nimbus": "localhost",
            "workers": ["localhost"],
            "log": {
                "path": "",
                "max_bytes": 1000000,
                "backup_count": 10,
                "level": "info"
            },
            "virtualenv_root": "/path_xx/virtualenvs"
        }
    }
}

次に、次のように実行します.
sparse run

すぐに顔を殴られてxxx@localhostパスワードを入力するには、sshd_configが構成されていなければ、正しいパスワードを入力しても失敗します.ここでは、前に書いたsshローカルホストの方法を参考にすることができます.
パスワードフリーログインを設定した後、パスワードの欄もやらずに再実行します.
JARファイルをコンパイルするのに時間がかかり、リアルタイムストリームの出力が表示されます.
ただし、これは試運転にすぎません.stormクラスタにトポロジをパブリッシュする場合は、次のように実行します.
sparse submit

pipバージョンが低すぎると言って、また間違ったジャンプをしました...
streamparseは、pythonの仮想環境をノードに構築し、必要なすべてのpythonライブラリをノードにインストールします.スクリプトの実行順序を見ると、仮想環境が生成された後にpipが自動的にアップグレードされます.しかし、なぜ実行に成功しなかったのか分からない.だから私は手動で対応するパスにpipをアップグレードするしかありません.
cd /path_xx/virtualenvs/wordcount/bin
source activate
pip install --upgrade pip
deactivate

最後に再実行:
sparse submit

エラーがない場合はstormにトポロジがコミットされていることを示し、uiアドレスを開くと、トポロジの欄にwordcountのトポロジが実行されていることがわかります.