Sparkの外部フレームワークは


引用:Sparkコミュニティは多くのフレームワークとライブラリを提供しています.その規模も数も増え続けている.ここでは、Sparkコアソースライブラリに含まれないさまざまな外部フレームワークについて説明します.Sparkが解決しようとする問題は広く、多くの異なる分野を越えており、これらのフレームワークを使用することで、初期開発コストを削減し、開発者の既存の知識を十分に利用することができます.  本明細書では、「Spark:ビッグデータクラスタ計算の生産実践」から選択する.
Spark Package
Sparkライブラリを使用するには、まず理解しなければならないことはSpark packageです.Sparkのパッケージマネージャに似ています.Sparkクラスタにjobをコミットすると、Spark packageを保存するサイトにpackageをダウンロードすることができます.すべてのパッケージはこのサイトに保存されています.    http://spark-packages.org/  Spark packageを使用する場合は、spark-submitコマンドまたはspark-shellコマンドでパッケージオプションを追加できます.
$ $Spark_HOME/bin/Spark-shell \
    -packages com.databricks:Spark-avro_2.10:2.0.1

-packagesオプションを使用すると、Spark packageは指定したパスの下に自動的にJARパッケージを追加します.Sparkクラスタでコミュニティのライブラリを使用するだけでなく、自分のライブラリを公開することもできます.Spark packageをこの管理サービスに公開するには、次のルールを遵守する必要があります.
ソースコードはGithubに置かなければなりません.
コードライブラリの名前はパッケージ名と同じでなければなりません.
コード・ライブラリのプライマリ・ブランチにはREADME.mdファイルが必要であり、ルート・ディレクトリの下にはLICENSEファイルが必要です.
言い換えれば、自分のpackageをコンパイルする必要はありません.Spark Packagesのテンプレートを使用しても、コンパイル、パブリケーション、バージョンの更新はこのサービスで完了します.sbtプラグインsbt-spark-package(https://github.com/databricks/sbt-spark-packages)packageの生成にも役立ちます.このプラグインをプロジェクトに含める場合は、sbtプロジェクトのproject/plugins.sbtファイルに次のコードを必ず書き込んでください.
resolvers += "bintray-Spark-packages" at "https://dl.bintray.com/
Spark-packages/maven/"
    addSbtPlugin("org.Spark-packages" % "sbt-Spark-packages" % "0.2.3")

Sparkパッケージを公開するには、build.sbtに書き込む必要があります.
spName——packageの名前.
SparkValerson-packageに依存するSparkバージョン.
SparkComponents-packageに依存するSparkコンポーネントのリスト(SQL、MLlibなど).
spShortDescription-packageの一言説明.
spDescription--packageについての完全な説明.
spHomePage——packageのWebページを記述するためのURL.
上記6つは、パッケージを公開する前に提供する必要がある情報です.パッケージのコードライブラリのメインブランチに必ずパブリッシュしてください.Spark packageの管理サイト(https://spark-packages.org/)のWeb UIでこの作業を完了します.  Spark packageサイトにGithubアカウントを登録すると、「name」ドロップダウンメニューからコードライブラリを選択できます.  上記の簡単な説明とホームページはbuild.sbtの説明とホームページのURLと一致することが望ましい.パッケージを提出すると、検証プロセスが始まります.このプロセスは通常数分かかります.検証が完了すると、検証が成功したかどうかを示すメールが届きます.成功すれば、前に説明した–packageオプションでpackageをダウンロードできます.2015年11月現在、Spark packageサイトには153のpackageがある.次のセクションでは、Spark package形式をサポートするライブラリについて説明します.つまり、Spark package形式で配布されます.
XGBoost
XGBoostは分散フレームワーク専用の最適化ライブラリです.このフレームワークはDMLC(Distributed Machine Learning Community,分散機器学習コミュニティ)によって開発された.その名の通りDMLCプロジェクトには多くのマシンラーニングライブラリがあり、HadoopやSparkなどの既存のリソースに高い拡張性を持っています.XGBoostはGradient Boosting(勾配上昇)アルゴリズムに基づいている.決定木昇格アルゴリズム(Tree Boosting)は、決定木と昇格アルゴリズムを組み合わせた分類のための統合学習(ensemble learning)アルゴリズムであり、軽量で高速な分類アルゴリズムである.ツリー統合およびツリーアップグレードアルゴリズムについては、ここでは説明しません.これらは単純で効率的なアルゴリズムです.https://xgboost.readthedocs.org/en/latest/model.html.  XGBoostは現在Sparkと統合できないが、XGBoostの名声によりSparkコミュニティはXGBoostのSpark packageを開発した.http://Spark-packages.org/package/rotationsymmetry/Sparkxgboost/.  XGBoostコア開発チームはこのパッケージをサポートしていませんが、sparkxgboostパッケージを使用してSpark上のXGBoostの実装を体験することができます.
spark-jobserver
jobを提出するプロセスは改善する必要があります.非エンジニアにとって、この仕事は少し難しいからです.コマンドラインや他のUNIXコマンドでSpark jobをコミットする方法を理解する必要があります.Sparkプロジェクトは現在CLIを使用してjobを提出しています.spark-jobserverは、Sparkクラスタにコミットされたjobを管理するRESTful APIを提供する.したがって、Sparkは、エンタープライズ内の環境でサービスとして起動できることを意味します.最も簡単なspark-observerを使用する方法は、準備するDockerコンテナを起動することです.ノートにDocker環境がある場合は、次のコマンドを入力します.
$ docker run -d -p 8090:8090\
    velvia/spark-jobserver:0.5.2-SNAPSHOT

このコマンドを実行すると、spark-jobserverのDockerミラーがダウンロードされ、Dockerでspark-jobserverがデーモンとして起動します.8090ポートでこのサーバのステータスを表示できます.起動後、下図に示すWeb UIが表示されます.  このインタフェースは簡単ですが、jobを管理するのに十分な情報を提供しています.jobサーバのバックグラウンドには、このDockerコンテナ構成の下で4つのスレッドが実行されるローカルexecutorを持つSparkクラスタがあります.しかし、あなたの生産環境では、このような構成が十分ではない可能性があります.今、あなたのjobがREST APIを通じて送信されたと仮定します.spark-jobserverプロジェクトディレクトリの下に有名な単語カウント例があります.この例のソースコードをダウンロードし、sbtコマンドでコンパイルします.ノートにsbtがない場合は、参照してください.http://www.scala-sbt.org/.
$ git clone \
    https://github.com/spark-jobserver/Spark-jobserver.git
$ cd spark-jobserver
$ sbt job-server-tests/package
# You can build test package as a jar format under
# job-server-tests/target/scala-2.10/job-server-
# tests2_2.10-0.6.1-SNAPSHOT.jar, though version number
# might be a little bit different

次のようにjobを実行します.  (1)アプリケーションのJARファイルをアップロードする.  (2)spark-jobserver上で実行されるプライマリクラスを選択する.  jobをコミットするたびにSparkアプリケーションを作成したり、他の人と共有したりする必要はありません.spark-jobserverは、次のオブジェクトを永続化します.
job状態job構成JAR
したがって、これらの情報を設定すると、再アップロードする必要はありません.重要なのは、spark-jobserverを通じて同僚とあなたのアプリケーションのコードを共有することができます.curlコマンドでアップロードできます.
$ curl --data-binary @job-server-test/target/scala-2.10/job-server-
tests_2.10.0.6.1-SNAPSHOT.jar \
    http://<Your Docker Host IP>:8090/jars/test
$ curl 'http://<Your Docker Host IP>:8090/jars'
    {
      "tests" : "2015-11-12T02:26:50.069-05:00"
    }

上記の情報を受け取ったら、JARをアップロードすることができます.今、入力データでアプリケーションを起動する時です.
$ curl -d "input.string = takeshi nobita dora suneo suneo nobita" ' http://<Your Docker Host IP>:8090/jobs?appName=test&classPath=spark. jobserver.WordCountExample'
$ curl 'http://<Your Docker Host IP>:8090/jobs'
    {
     "duration": "0.448 secs", 
     "classPath": "spark.jobserver.WordCountExample", 
     "startTime": "2015-11-12T03:01:12.362-05:00",
     "context": "0a518c58-spark.jobserver.WordCountExample",
     "status": "FINISHED",
     "jobId": "aed9a387-5319-4d8e-ac3d-0f1ce9d4b1a1"
    }

君のjobは成功しなければならない.得られた結果もREST APIでダウンロードできます.
$ curl http://<Your Docker Host IP>:8090/jobs/aed9a387-5319-4d8e-
ac3d-0f1ce9d4b1a1
    {
    "status": "OK",
    "result": {
    "takeshi": 1,
    "nobita": 2,
    "suneo": 2,
    "dora": 1
        }
    }

これがspark-jobserverを使用するプロセスです.このライブラリはまだ開発中ですが、オープンソースプロジェクトであるため、すぐに実際のシーンに適用される可能性があります.日常データを処理するために内部で使用する場合は、spark-jobserverは良いオプションです.  本文は《Spark:ビッグデータクラスタ計算の生産実践》から選択して、このリンクをクリックして博文視点の公式サイトでこの本を見ることができます.                        
より多くの素晴らしい文章をタイムリーに入手するには、微信で「ブログの視点」を検索したり、下のQRコードをスキャンしたりして注目することができます.