2018年のHue
Hue (Hadoop User Experience) は Hadoop エコシステムのユーザーインターフェースを提供するオープンソースのソフトウェアです。
最近の Hueのプロジェクトページによると「Hue is an open source Workbench for developing and accessing Data Apps.」と書かれています。データアプリケーションを開発、アクセスする方向けのワークベンチというポジションを目指しているようです。
以前より Hue の啓蒙活動をしており、過去のブログにもいくつかの記事を書いています。Hueって何?という方は以下をご覧ください。
- Hue 日本語版サイト http://jp.gethue.com
- HUEについてのまとめ 2016年版
- Hue 4.0 (slideshare)
- 2017 Hue Meetup Tokyo の資料
Hue 4.xで変わったところ
Hue は ver4 から画面構成が大きく変更されました。この変更はユーザーからのフィードバックを受けて行われたようで、利用者があまり画面を切り替えずにデータにアクセスできることを目指しています。
例えば、HiveやImpalaでクエリを書いている途中、アナリストはHDFSやS3、ADLS上にあるCSVファイルの内容を確認したいことがあります。または、クエリの実行中にMapReduceジョブの状況を見たり、Impalaのクエリのプロファイルを確認したい場合があります。これら作業の動線はどう変わったのでしょうか?
Hue3.xでのデータアクセス
Hue 3.x では、クエリエディタでHiveやImpalaのクエリを開発/実行中に他の作業を行う場合、画面を切り替えて作業を行う必要がありました。
例1:Hue 3.12のクエリエディタ
途中でファイルの内容を確認する場合、ブラウザに切り替えて内容を表示したり、
例2:HDFSブラウザ
さらにMapReduceのステータスを見るには、ジョブブラウザに切り替えが必要になります。
例3:ジョブブラウザ
Hue 3.x ではクエリエディタ、ファイルブラウザ、ジョブブラウザといったアプリケーションがそれぞれ独立した画面になっていましたが、Hue 4.x では作業中にファイルの内容を確認したり、あるいはHiveのジョブの状況のチェックや、Impalaのクエリ状況が確認できるようになっています。
Hue 4.x でのデータアクセス
例1:クエリを記述中にHDFS上のCSVファイルの内容を確認
例2:Hiveのクエリを実行中にMapReduceジョブの状況を確認
例3:Impalaでクエリを実行後、実行計画やサマリを確認
例4:クエリを記述中に関数の構文を確認、またはデータ型のリファレンスを表示
もちろんこれらは別のウィンドウを開いておけば実現できる機能ですが、画面を切り替えなくて良いのは痒い所に手が届く感じでかなり便利です。
Hueを始めてみよう
CDH6.1に同梱されているHueの最新版(4.3)をベースにしてHueの使い方を紹介します。なお、Hueのチュートリアルはドキュメント化されています。が、日本語になっていないことと、一部不親切な記述があるためご注意ください。
Hueのチュートリアル
- 利用するコンポーネント:Hue, Impala, (Hive Metastore), HDFS
- 利用するオープンデータ: Bay Area Bike Share の one year of bike trips
1. オープンデータのダウンロード
いずれかの手段でオープンデータ(one year of bike trips) のzipファイルをダウンロードします
2. ファイルブラウザ
Hueにログインし、左上のメニューから「ブラウザ -> ファイル」を選択してFile Browserを開きます。
3. データのアップロード
左側メニューの一番下にドラッグ&ドロップしても良いのですが、ログインしているユーザーのホームディレクトリにアップロードされてしまいます。よって今回は /tmp/testdir ディレクトリを作成し、そのディレクトリを表示した状態でドラック&ドロップによりアップロードしました。
4. zipファイルからデータの抽出
アップロードしたファイルは zip 形式になっています。Hueは zip ファイルを展開する機能があるので、チェックボックスにチェックを入れて「抽出」ボタンを押します。
zipファイルをHDFS上に抽出するジョブが実行されました。
抽出が終わると次のように表示されます。
2つのフォルダが作成されています。
5. テーブルブラウザ
左側のメニューから「テーブル」を選択します
この画面には、現在メタストアに登録されているテーブルの情報が表示されています。
エラー画面
6. CSVファイルからテーブルを作成
アップロードしたCSVファイルを使用してテーブルを作成します
上記のスクリーンショット右側の「+新規」ボタンをクリックします。タイプは「File」、パスはアップロードしたフォルダを指定します。アップロードしたファイルへのパスを手で入力する必要はなく、画面上から指定すればOKです。(ここでファイルをアップロードすることもできます)
今回は 201402_trip_data.csv を選択してみます。
選択すると自動的にCSVファイルを解釈し、区切り文字、列、データのプレビューが表示されています。i というアイコンをクリックすると、CSVファイルの内容をプレビューすることもできます。
今回は、列の区切り文字はカンマ、レコードの区切りは改行、引用符は二重引用符、ヘッダ行ありのままにしていますが、プレビューした結果に応じて変更すると良いでしょう。
「次へ」ボタンを押して先に進みます。
7. テーブルにインポート
ここでは「整形」を Csv に変更し、いくつかの要素を変更します。
- Zip Code を bigint から string に変更
- Bike # をBike ID に変更
8. テーブル作成完了
なぜか最後にエラーメッセージが表示されましたが、テーブルがは無事に作成されています。
DB エラー
AnalysisException: Failed to load metadata for table: default.201402_trip_data CAUSED BY: InvalidStorageDescriptorException: Impala does not support tables of this type. REASON: SerDe library 'org.apache.hadoop.hive.serde2.OpenCSVSerde' is not supported. CAUSED BY: TableLoadingException: Failed to load metadata for table: default.201402_trip_data CAUSED BY: InvalidStorageDescriptorException: Impala does not support tables of this type. REASON: SerDe library 'org.apache.hadoop.hive.serde2.OpenCSVSerde' is not supported.
なお、手元の環境ではディレクトリやファイルの権限により、ファイルのアップロード等が失敗するケースがありました。エラーになる場合は csv ファイルを/tmpなどにアップロードしてから実行してください。
9. Hiveでクエリを実行
それではHiveでクエリを実行してみます。(Impalaを使わない理由は前述の通り)
結果が表示されました。データの傾向を見るため、チャート形式で可視化してみます。
HiveQLを用い、クエリを実行しながら分析を行うことができます。
10. 結果のダウンロード
クエリの結果はCSVやExcel形式でダウンロードできます。
Excel形式で出力して、表示してみました。
まとめ
Hueを使うことで、HDFS/S3/ADSL上のデータの活用が容易になります。BIツールを用いた可視化が目的の場合でも、まずはいろいろな種類のデータを確認しながらアクセスするような場合にHueは向いていると感じます。
Hueをインストールするのは面倒だけどHueを触ってみたいという方のためにデモサイトが用意されています。 機能が限定されていますが雰囲気は掴めるでしょう。(http://demo.gethue.com)。時々ダウンしていることがあります。
Hueの操作は直感的にわかるものが多いです。新しい機能に興味がある方は、日本語版のHueブログを定期的にチェックしてください。 (http://jp.gethue.com/blog)
参考情報
- Hueプロジェクトサイト - http://gethue.com
- Hueプロジェクトサイト(日本語版ブログ) - http://gethue.com/
コメント