2016/12/21(水)に市ヶ谷のオプトカフェで開催されたイベントのレポートです。
新年あけましておめでとうございます! ocadarumaと申します。
みなさんは年末年始いかがお過ごしでしたか?私はGravity Dazeにハマってひどい生活リズムでした...(2がもうすぐ出ますね)
今年はまずBigQueryとSQL、あとコンテナをやっていこうと思っております。
また、2/25(土)に行われるScalaカンファレンス「Scalamatsuri 2017」にて、「ScalikeJDBC入門」で登壇いたします。他にも興味深いセッションが目白押しですので、Scalaユーザの方はぜひ足を運んでみてください。(まだ2次チケット販売中です)
さて、自己紹介が長くなりましたが、今回のtech-magazineでは、昨年末12/21に行われた市ヶ谷Geek★Night「ChristmaSpark~マサカリでツリーをかざろう~」のレポートをお届けします。
また#ichigayageekハッシュタグのツイートをトゥギャりましたのでこちらもよければご覧ください。
市ヶ谷Geek★Nightとは
オプトでは、エンジニア向けイベントとして、一年ほど前から「市ヶ谷Geek★Night」を定期的に開催しています。 おもしろくてタメになるイベントを目指し、エンジニア中心に運用されているイベントです。
過去開催回はこちらになります。
#11 ChristmaSpark~マサカリでツリーをかざろう~ について
今回の市ヶ谷Geek★Nightでは、オプトで採用事例が増えてきたこともあり、オープンソースの分散処理フレームワークApache Sparkをテーマに選びました。
株式会社リクルートテクノロジーズから佐伯さん、Hortonworksから蒋さん、またオプトからは柴田が登壇し、Sparkを実プロダクトで運用する上でのノウハウや、内部のアーキテクチャといったDeepな話題について発表してくれました。
セッション
では各セッションの概要をご紹介します。詳しくは資料のリンクを貼っておりますので、そちらをご覧ください。
株式会社オプト 柴田 幸輝 「Spark MLlibでリコメンドエンジンを作った話」
弊社のダイナミック・クリエイティブツール「unis」のリコメンドエンジン「uniquery」の開発にまつわる発表です。
uniqueryで利用しているAmazon EMRの基本的な紹介/注意点から始まり、Sparkで機械学習を行う際のハマリどころやパフォーマンスチューニングについての内容でした。
モデルを出力するためにDriver Nodeにデータを集約することでOoMになったり、明示的にpartitioningしないとskewが起きるといった問題に対してのトラブルシュートが盛りだくさんでした。
また、低レイテンシが求められる部分については結局pure Javaで書き直したという泣ける話もありました。(Spark以外の部分ですが)
株式会社リクルートテクノロジーズ 佐伯 嘉康さん 「Apache Sparkにおけるメモリ - アプリケーションを落とさないメモリ設計手法 -」
Sparkはインメモリ主体の分散処理フレームワークで、効率よく使うためにはSpark内部でのメモリモデルについて詳しく知っておく必要があります。
佐伯さんの発表では、Sparkのオプションによるメモリ周りの制御や、メモリ使用量の見積もり方法などの詳細な情報が満載でした。(RDDをpersistする際のStorage Levelなどは皆さんよく使ってると思います)
弊社プロダクトのexecutorのJVMオプションについては、すぐにでも見直したくなりました。
Hortonworks 蒋 逸峰さん 「Apache Spark: Enterprise Security for Production Deployments」
なかなか聞く機会がない、Sparkの認証/セキュリティ周りについての発表でした。
Enterprise分野ではクラスタの認証を既存のLDAP/ADと統合する必要があったりするようで、Web業界でよくあるノウハウとはかなり分野が異なる知識を要求される印象です。(お恥ずかしながら私は一部あまりついていけず。。)
認証を適切に設定しないと、どのようなまずい操作ができてしまうかについてのデモを交えつつ、貴重な知見を共有くださいました。
懇親会/LT
セッションの後はLTを交えた懇親会が行われました。
今回はオードブルと、SparkにちなんでSparkling Wineを用意しました!(おしゃれ〜)
LT1人目 mogprojectさん 「Spark GraphXで始めるグラフ解析」
Sparkでグラフ構造を扱うために標準で用意されている「GraphX」について紹介くださいました。(会場では、GraphXの利用経験者として数人手が上がっていました)
柴田の発表と同じく、こちらでも結局「パフォーマンスの問題でC++で書き直した」というオチがございました。
LT2人目 Chie Hayashidaさん
Hayashidaさんは、元Excel戦士だったところから学習を積み重ね、現在はSpark/Zeppelinにコントリビュートされているという強者です。
Hadoop/Sparkのスペシャリストになるまでの経緯や、学習を進める方法について発表いただきました。
私もGoogleのPaperなど積極的に読んでいかなければ、と刺激を受けました。。
LT3人目 Ryuji Tamagawaさん 「FindSpark Pythonの環境からSparkを簡単に使う方法」
O'Reillyの書籍の邦訳を多く行っていらっしゃいるTamagawaさんより、findSparkというPythonパッケージについての発表です。(かなりのエンジニアがTamagawaさんに一度はお世話になっているのではないでしょうか?あと、今年はSRE本が出るらしいですよ!超期待!)
IPythonなどからSparkを使おうとすると結構設定が面倒なのですが、findSparkを使えば、SPARK_HOME
を設定するだけで簡単にSparkに接続できます。これは便利そうです。
LT4人目 ovrmrwさん 「IBM Data Science ExperienceでSparkを始めてみた。」
前回のGeek★NightでもLTいただきましたovrmrwさんより、IBM Data Science Experienceというデータ分析用クラウドサービスの紹介でした。
IBM Bluemixの各サービスとも連携できて、マネージドな分析環境としては結構敷居が低そうな印象です(Bluemix自体の癖が強いというのはありますが。。)
無料でSparkクラスタを使えるのもなにげにすごい。
まとめ
LT含めて、Sparkの運用の話に限らず様々な知見にあふれた会になったと思います。(副題「マサカリでツリーをかざろう」に反してマサカリはありませんでしたが)
Apache Sparkは現在の分散処理シーンではかなりベーシックとなってきていますし、今後はさらに尖ったテーマを選んでみても面白そうと考えております。
次回についてはテーマ/日程等決まり次第connpassにて告知いたしますので、チェックいただければ幸いです。
今年もオプト/市ヶ谷Geek★Nightをよろしくお願いいたします!