2016-09-24 7 views
6

私はpysparkでpretrained xgboostクラシファイアを使用したいが、クラスタ上のノードにはxgboostモジュールがインストールされていない。私は訓練して放送した分類器をピケッとすることができますが、各クラスタノードでモジュールをロードする必要があるので、これでは十分ではありません。sparkで使用するためのxgboostモジュールの配布方法は?

私はルートがなく、共有ファイルシステムがないため、クラスタノードにはインストールできません。

sparkで使用するためにxgboostクラシファイアを配布するにはどうすればよいですか?


私はxgboostのための卵を持っています。 http://apache-spark-user-list.1001560.n3.nabble.com/Loading-Python-libraries-into-Spark-td7059.htmlhttps://stackoverflow.com/a/24686708/2179021のようなものはありますか?

+0

個々のマシンにSSHアクセスできますか?どのクラスタマネージャを使用していますか? – zero323

+1

@ zero323私たちはYARNを使用していますが、マシンにsshアクセスする必要はありません。私がしなければならないことは、「卵」の放送を含む解決策を見つけることです。 – eleanora

+0

私の正直なアドバイスは、必要なライブラリを提供するか、設定可能な環境(Anacondaインストールなど)を提供するかを責任者に求めることです。ネイティブの依存関係を正しく構築して構成することは、快適性だけでなく、基本的なパフォーマンスについても同様です。違いはかなり重要です。 – zero323

答えて

1

この問題を説明するClouderaの本当に良いblog postがあります。すべてのクレジットはそれらに行きます。

しかし、あなたの質問に簡単に答えてください。いいえ、それはできません。複雑なサードパーティの依存関係は、クラスタの各ノードにインストールして適切に構成する必要があります。単純なモジュール/依存関係の場合、*.egg,*.zipまたは*.pyファイルを作成し、--py-filesフラグが​​のクラスタに提供することができます。

しかし、xgboostは、他のPythonパッケージだけでなく、低いレベルのC++ライブラリ/コンパイラにも大きく依存する数値パッケージです。クラスタにコンパイルされたコードを提供する場合は、ハードウェアのアーキテクチャによって異なるエラーが発生する可能性があります。クラスタは通常、ハードウェアの点で異質であるという事実を付け加えると、そのようなことは非常に悪いことです。

+0

ありがとうございます。ハードウェアが均質で、xgboostの卵を持っていれば、さらに詳しいことはできますか? – eleanora

+1

残念ながら、いいえ。私はそのような方法でそれを使用したことはありません。完全に正直なところ、ライブラリの複雑さのためにおそらくうまくいかないでしょう。卵を使ったアプローチは単純なパッケージでしか機能しないかもしれません。さらに、これを本番環境にしたい場合は、別の方法を見つける必要があります。もしそうでなければ、おそらくクラスタにアクセスしてPythonを自分でインストールすることができます。私は卵のアプローチから遠ざかるだろう。 – bear911

関連する問題