Hadoop開発者/管理者トレーニングに参加してきました。

前置き

少し時間が立ってしまいましたが、Hadoop開発者/管理者向けトレーニングに参加してきましたのでその感想をつらつらと書きたいと思います。

なお、Hadoop開発者/管理者向けトレーニングというのは、Clouderaという会社が実施しているセミナーです。 Clouderaは、社員には相当数のHadoopコミッタが在籍していて、Hadoopのサポート・コンサルティングを行なっている会社です。

 

正直、自分がお金を出したわけでもありませんし、仕事の中で勉強できるというありえないぐらい恵まれた時間だったので、受けることができて良かったなぁとしか思っていません。 (その分、会社にはちゃんと還元しないとと思っていますし、それだけのものを得られるようにと、可能な限り真剣に講義を受けたつもりですが……) そのため、かなり好意的な感想になっていると自覚していますので、冷静に受講するかどうかを検討したい人はその分を割り引いて読んでいただければと思います。

トレーニングで何ができるようになるか

トレーニングの中身で実際どのような内容を勉強するかについては、下記のリンクから確認できますので詳細はそちらをご覧頂きたいと思いますが、さらっと説明します。

開発者向けトレーニング 管理者向けトレーニング

開発者向けトレーニングでは、Mapper, Reducer, Combiner, Partitionerといった基本プログラムの書き方から、自作Writable, 自作InputFormatの書き方まで学びます。 変わったところでは、MapReduceを使った幅優先探索の手法や、セカンダリソート、2種類のデータの結合(SQLでいうJOIN)をMapReduceで実装する方法なんかまでカリキュラムに入っています。 (結局JOINするならJavaで書くと大変だから、Hive使いましょう…だったりしますが…)

管理者向けトレーニングでは、推奨ハードウェア構成や、チューニングが必要なパラメータであったり、Hadoopで利用可能なジョブスケジューラの説明とその利用シーンなど、主に運用面での注意点・ノウハウを学ぶことができます。

 

個人的な意見ですが、「Hadoopを使えば何ができるか?」を知りたい人は開発者向けトレーニングを、「Hadoopを実運用で使っていくにあたって知っておかなければならないこと」を知りたい人は管理者向けトレーニングを受講するのが良いのかなと思います。

ですので、まだ検討段階で、会社で使うかも?というぐらいの人は、現在システム管理者やプロジェクトマネージャの方でも、まず開発者向けトレーニングを受講して、Hadoopが得意なこと、得意じゃないことを把握するのがいいんじゃないかなと思いました。

トレーニングの流れ

トレーニングは、上記の内容について、2時間程度の説明を聞いてから、30分〜1時間程度の演習実施(実際にプログラムを書いたり、パッケージをインストールして設定したり)を3~4日間ひたすら繰り返す、という流れです。

開発者トレーニングの前提条件にはプログラミング経験者が対象と書かれていますが、プログラミングの演習問題は解答も一緒に配られるので、プログラミングに自信がなくても大丈夫です。例えば新人研修の中で取り入れたとしても、問題なくついていけるんじゃないかなーと思います。また、Hadoopの経験もゼロでOKです。実際、受講した人の半分ぐらいは初めてHadoopを触ったという方だったように思います。

受講してよかったこと、残念だったこと

個人的にこのトレーニングを受けてよかったと思うところを箇条書きにしておきます。

  1. 講師の説明がわかりやすく、理解できるまで教えてくれる。 Clouderaはつい先日(4月26日)に日本法人ができたばかりの会社ですが、講師の方は他社でも元々トレーナーをされていた方で、トレーニング経験豊富なせいか、予備校講師の説明を受けているような感じでわかりやすかったです。 (2日目まで気付かなかったのですが、自分はこの方の講義を受けるのは2回目でした。)

また、ちゃんと理解できるまで先に進まず丁寧に教えてくれます。その時間も含めてカリキュラムが計算されているようで、時間がないので説明を飛ばしたりというようなこともありませんでした。

 

  1. 少しでも疑問に思ったことは、どんどん質問ができる。 自分が受けた開発者向けトレーニングの時は特にそうだったかと思うのですが、受講者はちょっと気になったことでも、どんどん質問していました。例えばnamenodeがeditsファイルに書き込む際は1エントリごとにディスクとシンクしているの?とか、とかdatanode間のプロトコルやポートの一覧は?とか、SqoopのコネクタMySQLだとJDBC接続しかなさそうだけど遅いの?(いや、MySQL用にちゃんとチューニングされてます)とか。 講師の方がその場ですぐ答えるのが難しい場合は、トレーニング終了までに調べて教えてもらえます。

 

  1. まとまった時間をとって一つの技術について勉強するのは効率が良い。 なかなか業務内で一つの技術を勉強するまとまった時間というのは取れないものなので、トレーニングなどでじっくり勉強できる時間が持てるというのは良いと思います。

 

  1. ハンズオン演習で触りだけでも触れておくと、後で導入する時がスムーズ 例えばFlumeのセットアップをその後仕事場で行う必要があったのですが、Getting Startedを終えているので、とっかかりの1,2時間はかかる調査を省略できました。

 

一応、残念なところも書いておきます。

  1. 演習の時間も実際はそれほどないため、トライアンドエラーやトラブルシューティングによるノウハウはあまりたまらないかなーと思います。そのあたりは、結局トレーニングでは解消が難しく、業務を通して実際に使っていかないとわからないところかもしれないですね。

 

  1. トレーニング費用は高いので、個人での受講は難しいところ。。。実際4日間朝から晩までなので、他のトレーニングと同様妥当な額かもしれませんが、会社で受ける場合は4間も研修に出してくれるような時間的余裕があるかという問題もありますね。。

まとめ

最後にまとめです。 講義内容のレベル的には、オライリーから出ているTom Whiteさんの象本を熟読してバリバリHadoopを使っているという人には少し物足りないかなと思います。

ですが、既にHadoopを使い始めている人には基礎固めとして、これからHadoopを使い始める人にはとっかかりとして、金銭的、時間的な問題をクリアできるようであれば積極的に活用するといいんじゃないかな、と思いました。