息子(二歳)が訊いてきた。
息「どうして空は青いの?」
これは俺もなんでかなと思って調べた事がある。よしきた任せろ!
Hive on Spark をセットアップしてみようと思ったが、上手くいかなかった。生(MapReduce) Hive で良いかと思ってたが、hive を使っていると相変わらず、hive 2 を使うなら on Spark か Tez を使え。嫌なら Hive 1 にしとけ、と警告が出てくる。じゃあ Hive on Tez を使うか、という事で Tez をインストールする。
まず、Hive on Spark が動かない原因について。 Hive から Spark のタスクを起動しようとするときに、JavaSparkListener クラスが無いという例外が発生する。 Hive のバグレポートにも挙がっているが、現在の Spark では SparkListener クラスを使うようになっていて、JavaSparkListener は Spark 2.0 では deprecated どころか、削除されてしまったらしく、これを使っている現行 Hive 2.1.1 では Spark 2 が使えない。Hive のソースリポジトリの trunk だと、既に SparkListener を使うようになっていたので、checkout してビルドしてみようとも思ったが、metastore のスキーマバージョンが変わったりするし、spark は開発が活発過ぎて、尖った変更がさらっと入ったりする。それがまあ魅力でもあったりする訳だが、この先も互換性が取れなって苦戦するケースがあり得そうだし、ということで、ここでは Tez を使うことにした。Hive on Spark 2 は、Hive 2.2 がリリースされたら、また試してみる事にしよう。
Spark をインストールする。
Hadoop はインストール済み、という前提
Ubuntu には eclipse がパッケージで用意されているが、バージョンを見てみると 3.8.1 だった。Indigo あたりになるのだとすると、流石にちょっと古すぎる。Neon をダウンロードしてインストールしたほうが良さそうだ。
eclipse はホームディレクトリに eclipse ディレクトリを作って、そこに tar xvzf するだけ。あとは、Ubuntu のランチャアイコンを用意すれば、一々端末を起動しなくて済む。