hadoop-logo
ようこそ Tech blogへ!
「これからHadoopを勉強しよう」という方はまず下記のページから

サイトの移行に伴って画像が表示されないなどの不具合が生じています

Hadoopを10分で試す(7)再びHueからHiveとImpalaを使う

**この記事の内容は若干古くなっています。まとめページもご覧下さい**
このブログシリーズの最後の記事は Cloudera Impalaです。
Cloudera Impala はSQLライクな言語を使用して、Hadoop(HDFS)やHBase上のデータをクエリすることが出来ます。Apache Hiveのデータとメタストアを共通で使用できるという特徴があります。蓄積したデータを加工せず、そのまま利用できるのはメリットが高いですね。
Impalaは低レイテンシな結果を得ることを目的に設計されているので、データの解析やインタラクティブな処理に適しています。
今回の仮想化環境は1ノードと寂しいですが、現実には複数ノード、かつ潤沢にメモリを積んだ環境で実行すべきです。MapReduceとは異なり中間データをディスクに書き込まないため、メモリを多く搭載することが良いパフォーマンスに繋がります。

さて本題です。Clouderaのブログに従ってテーブルをセットアップし、Impalaでクエリを実行しましょう。
まず、Hueの画面の左上のアイコンをクリックし、サンプルをインストールしろと書かれています。素直にクリックしてみます。
ところが、日本語環境で実行するとサーバーエラー(500)と表示されてしまいます。
hue quickstart error
Jiraに登録しなきゃ、、、と思いつつも、今回はFirefoxを英語環境に設定して逃げます(汗
hue quickstart on english
ウィザードでNextを押して次に進みます。
hue wizard 2
左側の矢印?を押して、BeeswaxとCloudera Impala (TM) Query UIのサンプルをインストールします。(ここで矢印でインストールするUIはわかりにくい気が、、、)
wizard2
ウィザードで次に進んでも良いでしょうし、そのままHomeに戻っても構いません。
日本語環境に戻してアイコンからMetastore Managerを選択すると、先日のブログと同じように sample_07, sample_08のクエリが出来るようになっています。
sample_database

サンプルクエリの実行

この仮想マシンには、zipコードとtpcdsベンチマークをセットアップするためのスクリプトがあります。(インターネットアクセスが必要)下記を実行してセットアップします。
$ ~/datasets/zipcode-setup.sh
$ ~/datasets/tpcds-setup.sh
$ impala-shell -q ‘refresh’
※2番目のtpcds-setup.shの実行には時間がかかります
メタストアマネージャーにも正しくテーブルが表示されています。
metastore manager
これで完了です。
以下のクエリを Hive , Imapala それぞれで実行したり、その他の関心のあるクエリを実行して比較してみて下さい。

select * from zipcode_incomes where zip='59101';


select
i_item_id,
s_state,
avg(ss_quantity) agg1,
avg(ss_list_price) agg2,
avg(ss_coupon_amt) agg3,
avg(ss_sales_price) agg4
FROM store_sales
JOIN date_dim on (store_sales.ss_sold_date_sk = date_dim.d_date_sk)
JOIN item on (store_sales.ss_item_sk = item.i_item_sk)
JOIN customer_demographics on (store_sales.ss_cdemo_sk = customer_demographics.cd_demo_sk)
JOIN store on (store_sales.ss_store_sk = store.s_store_sk)
where
cd_gender = 'M' and
cd_marital_status = 'S' and
cd_education_status = 'College' and
d_year = 2002 and
s_state in ('TN','SD', 'SD', 'SD', 'SD', 'SD')
group by
i_item_id,
s_state
order by
i_item_id,
s_state
limit 100;

うぉっ、2番目のTPC-DSのクエリ、Impala爆速。。。
次回は、、、まだ未定です 🙂