「Hadoop Conference Japan 2014」へ行ってきました
休暇中なので「Hadoop Conference Japan 2014」へ遊びに行ってきました。
使ったことない技術の話をいろいろ聞いてみよ〜〜という軽いノリで、14:40のセッションから参加しました。
以下にメモをアップしておきます。
「Taming YARN: how can we tune it?」 小沢さん
- YARNが提供するレイヤーの概要
- ResourceManager、NodeManager、ApplicationManagerの役割
- 設定ファイルに何をどう書くか
- Mesos(http://mesos.apache.org/) TODO: あとで概要みる
- Tez(http://tez.incubator.apache.org/) TODO: あとで概要みる
- RMが落ちたらどうなるか
感想
YARNのアーキテクチャの話がすごく面白かった。
JVMのPermSizeのチューニングの話をしていたのであれっと思ったら、YARNはJava 1.6対応なんですね。
https://github.com/apache/hadoop-common/blob/trunk/hadoop-yarn-project/hadoop-yarn/README
「Spark1.0での動作検証 - Hadoopユーザ・デベロッパから見たSparkへの期待」 土橋さん
最初は、スペシャルゲストの田中聡さん(NTTドコモ)による「社会の頭脳システムの構築と運用」の話。
- 2009年からプラットフォームの運用開始
- 遠隔地にサーバを置いて、いい感じに運用保守した
- 停まったサーバが出ても放置しておいて月1回修理に行けばOK
- ツールは全部OSSを利用
- 遠隔地にサーバを置いて、いい感じに運用保守した
- 課題1: スループットとレイテンシへの要求
- 課題2: Hadoop進化への追従
今後は、インメモリ、ストリーム、バッチ処理をYARNの上でやる感じとのこと。
ここで土橋さんにバトンタッチして、巨大Hadoopクラスタの上でのSPARKのお話。
- なぜSparkに着目したか
- 昔のHadoopはスケーラビリティに限界があるといわれていた
- データ管理がオーバヘッドに
- 大釜のようなクラスタを立てて,その上でデータをシェアしたり分析したりしたい
- YARNが成熟してきたので使いものになるか確認したかった
- 今日はSoark内部の仕組みの話はしない
- SparkにはMesosモードとYARNモードがある
- 今回は後者の話
今回の検証で確認したかったポイント4つの説明。
- 数十TBのデータをSparkに突っ込んでもちゃんと動くかどうか
- おなじみwordcountのプログラムで
- ユーザ定義のオブジェクトをSparkのキャッシュに明示的にのせることができる
- ロジスティック回帰のプログラムで
- シャッフルプロセスのパフォーマンス
- GroupByTestというプログラムで
- multi-stageジョブにSparkを使うとどうなるか
- とあるプロジェクトで(詳細は公表できないらしい)
検証環境の紹介。
- 線形にスケールした
- データローカリティが効いた?
- キャッシュにデータをのせた結果を確認
- 大きなシャッフルを投げた結果
- データサイズが大きくなっても大きな変化はなし。ほぼ線形に推移
- スループットは、NW I/OとおなじくらいディスクI/Oによって制限される
- 大きなデータをシャッフルしようとするとメモリのチューニングに苦労する
- フィジビリティテストに成功?
最後にTipsについて。
- キャッシュメカニズムを効率的に使おう
- シンプルなデータフォーマットでキャッシュにのせよう
- 取り出すときにリッチに変換しよう
- YARNとの組み合わせで考慮すべきことがまだいろいろある
- ここ半年くらいで改善されていくのでは
「Evolution of Impala - Hadoop 上の高速SQLエンジン、最新情報」 嶋内さん
Impara凄く速いから皆使えという話。
- Impala(http://impala.io/)とは
- HDFSやHBase上のデータに対して仮想ビューとしてテーブルを作成できる
- クライアントがSQLリクエストを投げる
- Impaladがフラグメントプランを作る
- QueyCodinatorがデータ読み込み(?)
- Query Exec Engineで計算
- QueryCordinatorに結果を返す
- インメモリでの実行
- 実際に使われるメモリはクエリによる(どれくらいのサイズのテーブルの何割の行を使うのか?)
新しめの機能の紹介。
- LLVMでJITコンパイル
- このおかげで5〜6倍高速化
- コストベースのJOIN最適化を導入
- メタデータの伝搬を助けるcatalogd
- リフレッシュとか明示的に実行する必要はもうない
- テーブルを指定しての実行も可能
- ユーザ定義関数の導入
- アドミッションコントロール
- リソースプールに対してあれこれ設定できる
- 制限は「ソフトリミット」
- YARNとLlama(Low Latency Application MAster)のお話
- Apache Sentry
- テーブル、ビュー、行、列の粒度でアクセス制御ができる
- Parquet
- 圧縮効率がよく、スキャン効率もよい
- c.f. ファイルフォーマットごとにクエリ速度をテストしたグラフ(in スライド)
- Compute Stats
- 統計情報の収集と保存
- EDW(=Enterprise Data Warehouse?)ワークロードにおける評価指標
- レスポンスタイム
- 並列性とクエリスループット
- データサイズ
計測の注意点の話。
- クラスタだけでなく、データセットとクエリも2倍のものを用意して、同じ結果が出るかを確認
- 実際のデータを個々のワークロードで確認してね
- 評価データとしては1TB以上はないとダメ
- 今回は15TBでテストした
あと、今年の今後のリリースについて。
- SQL 2003準拠の関数(LEAD, LAG)の導入
感想
性能を決めるのはどんなクエリを発行するかなので、クエリの書き方やデータの持ち方を考えるのが大事なんだろうなぁと。
「実践機械学習 ―MahoutとSolrを活用したレコメンデーションにおけるイノベーション」 草薙(@nagix)さん
- NS-SHAFTというゲームを開発したのでダウンロードして欲しいとのことw
- レコメンデーションは「かかった時間とお金」対「効果」重要
- 強力だけどシンプルなレコメンデーションが欲しい
- 今日はその例を紹介
- データ(ユーザとアイテムのインタラクション)
- “I want a pony!”
- 他の人がどういう行動をとったかをベースにレコメンドする
- 皆が同じものを買っていたらそれ以上の情報を出せない問題
- 素の共起データの問題: 本当に欲しいのは「例外的な共起」
- 人×アイテムのマトリクスを作る
- アイテム×アイテムマトリクスを作る
- LLR検定をして役に立つインジケータを見つける
- インジケータマトリクスを作る
- 共起バイナリマトリクス
- どんなデータを「例外的な組み合わせ」と見なすか
- MahoutのRowSimilarityJobがLLRを使っている
なぜこれらの検索エンジンを使うかというと、クエリのモデルとレコメンデーションのモデルとが似通っているので、効率的に検索エンジンに表示できる、というアイデアによる。らしい。
ここからサンプルアプリケーションを使って説明。
- 「曲を聴く」という行動をベースにレコメンデーションを表示
- MusicBrainz(https://musicbrainz.org/)というフリーのデータセットを利用
- ログファイルをMahoutで分析してインジケータを作り、検索エンジンに突っ込む
- それをアイテムメタデータと突き合わせる(? スライド参照)
- MapRはNFSで他のシステムと連携できるのが特徴
- ユーザ中心レコメンデーション: リアルタイム計算が必要。非効率で低速
- アイテム中心レコメンデーション: 事前計算可能。応答が速い
- マルチモーダルレコメンデーションとは
- ユーザのサイト上の行動は複数ある
- 入力したクエリ、視聴したビデオ、購入した商品・・・
- これらを結果に反映するのがMMR
- クロスレコメンデーションのほうがユーザにとって有益
- 例)クエリを元にクエリを補完、動画から動画をレコメンド → クエリをもとに動画をレコメンド
- 単なるクエリの部分一致によるレコメンデーションではなく、関連がありそうな多様なレコメンデーションができる
- 重要な問題
- 閲覧範囲: ユーザはトップページしか見ない
- 多様性: いつも同じレコメンデーションだと飽きられる
- 学習速度: それ以上学習しなくなる(飽きられた結果、ユーザ行動に基づく学習がそれ以上できなくなる)
- 解決策として結果のディザリング
- 結果をいじって予期せぬ結果を入れる
- オフライン性能は悪化するが、長期に行うと、何もやらないよりも格段にレコメンデーションの結果が上がる
- なぜディザリングが必要?
感想
結果のディザリングの話が面白かったです。amazon.comのオススメ商品が毎回ちょっとずつ違うのは、そういうわけなのかな。目的に納得でした。
NS-SHAFTやってみました(買ったばかりのiPhoneで初めて遊んだ記念すべきゲームになりました)。なんというか、Terrariaで縦穴に落ちていく時の感じを思い出しましたw