May 11, 2016

『詳解 Apache Spark』出版記念イベントに参加しました

最近はSparkに触れていなかったのですが、日本語の情報も豊富になってきたのを感じました。

自分も書きたい。

ブログネタでやるかなあ。と思った一日でした。

データ分析業界の理想と現実 - Spark普及の歴史を添えて(下田倫大さん)

  • Spark登場時に私は夢とロマンを見ました!

  • 現実は厳しい・・・。

  • ガンガン使おう

  • 2013年: 大規模データ処理といえばHadoopで集計

  • 2014年: Sparkとの出会い, インドで使ってた

  • 第一印象: Python, Rのインターフェースがある!

  • 2015年: ブレインパッド社としてビジネスモデル的にSparkのメリットが大きくない

  • コンサル/SI は新しい技術導入が遅くなりがち

  • ニーズが必要

  • DeltaCubeという自社開発プロダクトで導入

  • 案件が効率化からイノベーションに変化

データマネジメントツールDeltaCubeでのSpark利用(師岡一成さん)

  • 2014年に触り始めた

  • 2015年に本格的に

  • DeltaCube: プライベートDMPのログからセグメントを作成ツール

  • 2014年に開発が始まり、リリースまで2年ぐらいかかった

  • 初期

    • 行動ログを手動で検索して、セグメントを作成

    • データサイズは数TB, presto, impalaを使った

  • 中期(2015年)

    * 機能的にマニアック路線

    • 広告運用の手間がかからないようにしたい

    • 自動でユーザをクラスタリング(DeltaCube)

    • Rtosterで自動ABテスト

    • ETL, MLlib

  • 現在

    • YARNとPrestoの二つはいやだけど、統一できず・・・

    • EMR上にPrestoクラスタを稼働

  • Sparkよ流行ってくれ

Dynamic Resource Allocation in Apache Spark(今井雄太さん, @imai_factory)

  • Sparkとの出会い

    • Amazon KinesisのConsumerとして
  • Spark運用の話

  • ワードカウントの例(scalaで)

  • DAG Scheduler

    • sc.parallelize()でRDDが出来る、分散して保持されるオブジェクト

    • Array⇒ParallelCollectionRDD⇒MapPartitionsRDD⇒ShuffledRDD⇒Array

  • Tasks > Executors

    • Executorsの数をダイナミックに変えてくれる

    • Tasksの応じて、増やしたり、減らしたり

  • Dynamic Resource Allocationのよさ

    • 投げられたJobに対して、動的にExecutorsを変えて、速度を上げる

    • 消さないとリソースが無駄になるので、消そう

Help me! Help me with DNN in Spark!!(石川 有さん)

  • Spark2.0に向けてDNNの拡張を進めるとあったが、見送られた

  • 誰か助けて!

  • MultilayerPerceptronClassifier

    • Spark1.5

    • L-BFGS

    • Sigmoid, Softmaxのみ

  • Regression対応が必要

    • ReLU, 恒等写像

    • L-BFGSではなくSGDに最適化アルゴリズムを変更する必要がある

    • AdaGrad, Adamなどを実装できるように更新処理を再設計

  • 現在のSGDは非効率で精度が悪い

    • Parallelized SGDとして再実装する必要がある
  • Drop-outもできない

  • CNNのような多次元配列の入力をサポートしていない

  • Bayesian Optimizationなどの自動チューニングアルゴリズムを追加するべき

  • 既存のPublic APIを変更するのを嫌う風土

scalatestでSpark StreamingのUnitを書く話(田中裕一さん)

  • 100万人のデータ分析(Sparkを含む)

  • API 300億回/日でもSparkが使える

  • Spark as a Service

  • StreamingのUnitが面倒

    • アプリケーション側で状態を保つため、Unitが組みづらい

    • Streamingは外部との接続が前提なためUnitが書きにくい

    • 複数のmicro-batchの集計結果などの書き方が難しい(window処理など)

    • やったこと

      • Unit側でStream作成、Unitでテストデータ作成⇒Streamへ、処理結果の出力
    • 処理部分と接続部分は切り分けて書く(出力部分の切り分けた方が良い)

    • どうやってStreamを渡すか

  • SparkでTestを書こう

  • 簡単に書けるけど、構造化を意識しないと汚いコードになっちゃうので注意

spark.ml の API で XGBoost を扱いたい!(小宮篤史さん)

  • SmartNewsのエンジニアをしてます

  • XGBoostを知っているひと⇒ 少数

  • Spark上でXGBoostを使ったことあるひと⇒ 会場でほぼいない

  • SparkXGBoost

    • pure Scalaで実装

    • 開発が活発ではない

  • xgboost4j-spark

    • DMLCが提供する公式のSpark integration

    • RDDのみ、DataFrameに非対応

Sparkで始めるお手軽グラフデータ分析(加嵜長門さん)

  • Hadoop/Spark Conference Japan 2016でのアンケート

  • GraphXの利用ユーザが30人!(Spark SQL/ DataFrameは252人)

  • GraphFramesの登場

  • GraphXとDataFramesの統合

  • 1人3冊買えば、続編が出るかも!

  • グラフじゃないとできないの?

    • 多くの場合は他の選択肢がある
  • いろんな視点を持つことが大事

  • 社内営業をする時に、絵で説明できて良いこともある

  • リコメンド

    • ユーザ同士、商品間
  • マーケティング

    • ネットワークビジネス

    • バイラルマーケティング

    • 口コミを使ったマーケティング

      • 影響力の強いユーザの抽出
  • 不正検知

    • 偽装保険金詐欺

      • 少人数で何度も事故にあっているなんてことが・・・
    • クレジットカードの詐欺

      • 住所や電話番号を少人数で使いまわす
  • 会社間のお金の流れ

  • グラフDB

    • Neo4J, Titan

    • 分散処理による高スループット

  • グラフ処理系

    • GraphLab

    • グラフに特化しない汎用的なデータ構造

    • 表形式やベクトルとシームレスに結合できる

  • RDDから1行でグラフを作れる!

さいごに

アフィリエイトを張っておきます。

© gepuro 2013