Hortonworksのイベントに行ってきた

Hadoop and the Modern Data Architecture
に行ってきました。

立派なホテルで良いイベントでした。ありがとうございました。> Hortonworksのみなさま

セッションや会場にいた人との会話について少し書きます。

まず僕が使っているAmbariに関して発表がありました。

それによると、Hueみたいなクエリをsubmitする機能が入る模様。どうもHadoopクラスタへのアクセスをすべてAmbari経由にしたいようだ。うーん、それはどうなんだろ。。。Prestoあるし。個人的にはそれよりもっとクラスタ管理に注力してほしいと思ったり。。。例えばエラー通知をメールじゃなくてHipChatとかSlackにとばせるようにするとか。

Ambariで使っているNagios, Gangilaはdeprecatedになり、メトリクスをHBaseにためてPhenioxでクエリ投げるとか。ここが一番ざわついたがHBaseはローカルモードで動くのでAmbariでインストールするHBaseとの独立性は保たれるとのこと。でもHBase使わなくてもいいんじゃ。。。とは正直思った。PhenioxはHBaseのコプロセッサベースだしまだあんまり安定してないんじゃないかな。

セッションについての話を書くのはこれぐらいにして、Hortonworksの人にSparkについてちょっと聞いてきました。
Enterprise-Ready Apache Hadoop Data Lake and Big Data Management | Hortonworksを見るとHDP2.2にSparkが入るように見えるが、実態としてSparkはHDP2.2には入っていない。
ただ開発リポジトリのtrunkには入っているとのことだったのでHDP 2.2.1とか2.2.2とかで含まれる模様。

Sparkは僕のところでも入れて試そうかと思ったいるのでちょっと気になっているところです。その辺、会場にいた某氏をつかまえていろいろと聞いてみました。

それによると、Sparkはshellが良く出来ていてユーザにとっては良いが、オペレーターに辛いソフトウェアでマルチテナントで動かすのは厳しいのではとのこと。

Sparkはオンメモリで処理するので性能は良いがYARNのコンテナをずっと掴んで他のジョブに悪影響を及ぼすことがある。なのでSparkクラスタ(not YARN)を別途たてて運用するのが良いのではとのこと。
機会学習したいだけならHivemallの方がMapReduceだし安定しているのではという話もあり。

ジョブスケジューリング周りに関して言うと、Sparkは1.2からDynamic Resource Allocationというリソース管理を動的に行う機能が入ったのでこれを使うのも手なのではとのこと。ただこれ、jarを作る必要があったりYARN再起動が必要だったりするので手軽ではない感じですね。。。
YARN 上における分散処理基盤のリソース管理について

やー、なんというか僕の環境みたいにHadoopエンジニアが事実上一人とかだとカジュアル運用したいわけですよ。
設定とか問題が無いなら基本的にいじりたくないし、パフォーマンスチューニング的なこともしたいわけじゃない。
放置プレイで問題無く動いて欲しい。Prestoはそういう面で素晴らしいです。

Hadoop Conference Japanに1000人ぐらいくるんだからHadoopエンジニアいるだろって思ってたけど意外といないんですよ。。。これが。
ユーザは多少いても管理者はいない。ガチな人がいないのはしょうがないけどカジュアル運用できる人ぐらいは欲しい。
データサイエンティストはネットで言われるほど需要が多いわけじゃないと思っているけど逆にHadoopエンジニアは思っていたほど供給が多いわけじゃないという。。。

まあそんな状況なので例えばマルチテナントのためにスケジューラー周りをいじるのとか面倒だと思ってしまう。
これがTreasure Dateとかだとそれがメインの仕事になるだろうから良いと思うけど、こちらはそうではないので手間が少ない対応で済ませているのが現状です。

例えば僕は2つのHadoopクラスタを見ていてどっちもHDP2.1です。
片方は社内のエンジニアがshibをガンガン叩く環境で、サービス固有の処理はサービス開発者に全部任せるもの。すごく簡単にいうと社内版TD。
こっちも重いhiveクエリが来て他のジョブに悪影響を及ぼしたことがあるのでshibに一定時間たったら自動的にkillするような機能を入れてもらいました。

もう一方はチーム内で使っているクラスタで他からクエリを投げられることは無い変わりに自分達でサービス固有の処理もやります。
こっちでも全パーティションをfull scanするようなクエリがながれて遅くなったことがあるのでmap数をチェックして一定以上だったらHipChatに通知するようなスクリプトを書きましたが、結構機能してます。

完璧ではないし、ベターとも言えないけど、スピーディーに対応すればバリュー出すことはあります。

3/10火曜日の話はそんぐらいです。