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ローカル擬似クラスタ公式サイト構成を採用しました
uiのデフォルトの8080ポートがpolipoに使われているため、ここではウェブポートを9090に設定します.
次にstormを次の順序で起動します.
localhost:9090を開き、問題がなければstormの管理ページが表示されます.
次にstreamparseのインストールを開始します.仮想環境を使用しているのでsudoは必要ありません.
そして走り始めるdemo:
結局直接間違えて、leinが足りないと教えてくれて、私は呆然とした顔をしていました.Googleは、これがClojureのパッケージ管理ツールであることを知りました.そこで直接lein公式サイトへ
leinのインストールには、スクリプトでダウンロードしてインストールする方法と、PPAを追加する方法の2つがあります.もともとleinもaptを直接インストールしてくれたので、いろいろな歴史的な原因があったので、ほほほ...
怠け者として、スクリプトのダウンロードを優先します.結局速度が異常に遅い...インストールの進捗を見て1日かかるので、思い切って諦めます..
PPAを選択してaptインストールを追加するしかありません:
完了したらsparse runコマンドを走り続けます.結局ダメで、stackoverflowに行ってひっくり返したらconfigを配置する必要があることがわかりました.json.しかしstreamparseのdemoでは言わず、プロジェクトを作成してそのまま走れると言っていたので、私は急に少し穴が開いたような気がしました.の
構成config.jsonは以下の通りです.
次に、次のように実行します.
すぐに顔を殴られてxxx@localhostパスワードを入力するには、sshd_configが構成されていなければ、正しいパスワードを入力しても失敗します.ここでは、前に書いたsshローカルホストの方法を参考にすることができます.
パスワードフリーログインを設定した後、パスワードの欄もやらずに再実行します.
JARファイルをコンパイルするのに時間がかかり、リアルタイムストリームの出力が表示されます.
ただし、これは試運転にすぎません.stormクラスタにトポロジをパブリッシュする場合は、次のように実行します.
pipバージョンが低すぎると言って、また間違ったジャンプをしました...
streamparseは、pythonの仮想環境をノードに構築し、必要なすべてのpythonライブラリをノードにインストールします.スクリプトの実行順序を見ると、仮想環境が生成された後にpipが自動的にアップグレードされます.しかし、なぜ実行に成功しなかったのか分からない.だから私は手動で対応するパスにpipをアップグレードするしかありません.
最後に再実行:
エラーがない場合はstormにトポロジがコミットされていることを示し、uiアドレスを開くと、トポロジの欄にwordcountのトポロジが実行されていることがわかります.
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のトポロジが実行されていることがわかります.