オレが今見ているHadoopクラスターに関してぼんやりとした感想を書いてみる
オレが今見ているHadoopクラスターはおもに統計値を取得するためのもので、サービスのフロントにどかんと出ているものではない。イントラネット内のものだし内部の人間しかアクセスしないものなのでミッションクリティカルなものではない。
主にHiveを使ってMapReduceジョブは日々ガンガン実行されるので負荷はそれなりに高いし、データ量も多いためHDFS使用率、HDD使用率も高い。そのせいかどうか知らんがHDD障害が多発している。まあ、そんな環境です。
HBaseも動いており、こちらもカジュアルにregionserverがdownします。
以前はhlogのsync周りでdownしていましたが、定期的なflushとcompactionを止めたらdownしなくなりました。そのかわり負荷が高いせいかOutOfMemoryでよくdownします。
サービスのフロントに出ているようなHBaseだったらそこでMapReduceのジョブが実行されることはあまりないでしょうが、バックエンド系のものなのでMapReduceのジョブも実行され、おそらくその辺が原因でregionserverのdownにつながっています。
本来なら原因をちょんと調べるべきなんでしょうが、ちゃんとした調査はまだできてないですね。その代わりregionserverがdownしてたら自動的に起動するような簡単なスクリプトを書いてdaemon起動しています。downしても勝手に復旧してくれるので楽ですw
HBaseのデータをHiveから触るということもやっているのですが、HBaseとHiveのつなぎ部分はまだ枯れてないというかexperimentalな感じで、すんなりいかないですね。そのままだと性能が全然でないのでいくつかパッチを当てる必要もあります。この辺は僕がやったわけではないので詳しくは知りませんw
定期的なジョブはazkabanからHiveServerに投げているのですが、HiveServerがあまり安定していなくてテーブルが存在するのに存在しないとか言われます。retryすると大丈夫なのでretry処理が出来るという意味ではazkabanは良いと思います。ジョブの削除がWebから出来なかったり月次のスケジューリングが出来なかったりとアレな部分はありますが。そういえばazkaban2という旧バージョンを完全にリニューアルしたものも出ているようですが、こちらはどうなんでしょうね。あとHive 0.11で入ったHiveServer2もどうなんだろ。
Hadoopクラスターの用途が統計値を取得するためのものなのでサービスのフロントに出てくるようなものとはワークロードも違いますね。レスポンスタイムよりもスループットを重視する感じですね。なので設定値もお互いをあまり参考にできない気がします。タイムアウトの時間とかね。
まあ、そんな感じですね。データ量の増大にともないノード台数は増えていますね。何台までいくんだろ。。。