HDInsight にデータを取り込む方法
Microsoft Japan Data Platform Tech Sales Team
高木 英朗
過去 2 回にわたる記事で HDInsight を簡単に使ってみる方法を紹介しました。
- Microsoft Azure の Hadoop ディストリビューション HDInsight を使ってみよう! (1)
- Microsoft Azure の Hadoop ディストリビューション HDInsight を使ってみよう! (2)
前回は HDInsight に付属のサンプルデータを使用してクエリを実行しましたが、今回はどのようにしてHDInsightにデータを取り込むことができるかを紹介します。
HDInsight のストレージ
HDInsight はデフォルトで HDFS ではなく Azure BLOB ストレージを使用します (HDFS や Azure Data Lake Store を使用することもできます)。
Hadoop では HDFS を使い可能な限りローカルディスクのデータを処理することで、分散コンピューティングにおけるデータ移動を極力抑え、パフォーマンスやスケーラビリティを確保しています。BLOB ストレージは HDInsight のワーカーノードとは別のリモートストレージになりますが、フラットなネットワークアーキテクチャによりコンピューティング サービスとストレージの間で高い帯域幅が確保されます。
フラットネットワークについては以下のリンクが参考になります。
以下は HDInsight のストレージアーキテクチャのイメージです。
HDInsight で BLOB ストレージを使うメリットには以下があります。
- 大容量のデータを格納することができ、かつ低コストに抑えることができます。
- BLOB ストレージのレプリケーションによって常に 3 つ以上のレプリカを保存しており、高可用性を確保しています。
- Azure 上で稼働するその他のアプリケーション等のデータの保存先として使用するため、データを移動することなく分析ができます。
- HDFS 互換のインターフェースに加え、BLOB ストレージ用のツールでもデータのやり取りができます。
HDInsight にデータを取り込む方法
HDInsight にデータを取り込む方法の一部を紹介します。HDInsight は HDFS 互換のインターフェースに加え、BLOB ストレージ用のツールもサポートしているため、目的に応じて様々な方法でデータを取り込むことができます。
ツール | CLI | GUI | 概要 |
---|---|---|---|
Azure CLI | 〇 | Azure を管理するためのコマンドラインツールです。BLOB ストレージを操作するためのツール群が揃っています。 | |
Azure PowerShell | 〇 | Azure のサービスをデプロイしたり自動化するためのスクリプトです。BLOB ストレージを操作するためのツール群が揃っています。 | |
AzCopy | 〇 | BLOB ストレージにデータを送受信するための専用ツールです。 | |
Hadoopコマンド | 〇 | BLOB Hadoop 標準のコマンドラインツールです。クラスタ内のローカルディスクと BLOB とのデータのやり取りや、Azure ストレージと HDFS 間のデータのコピーの際に便利です。 | |
Sqoop | 〇 | Hadoop エコシステムツールの一つです。Hadoop から RDBMS、RDBMS から Hadoop にデータを効率よく取り込むためのツールです。 | |
Azure Storage Explorer | 〇 | BLOB ストレージ内のデータを管理するためのGUIツールです。 | |
Visual Studio | 〇 | Visual Studio Tools for HDInsight を使用して、HDInsight クラスターに接続して Hive クエリを実行したり、データを BLOB ストレージにアップロードすることが可能です。 | |
IntelliJ IDEA | 〇 | IntelliJ IDEA は Java, Scala をはじめとした多くの言語に対応した IDE です。Microsoft Azure HDInsight Tools for IntelliJ を使用して、Spark アプリケーションを開発したり、データを BLOB ストレージにアップロードすることが可能です。 | |
SQL Server Integration Services (SSIS) | 〇 | SQL Server Integration Services、通称 SSIS は ETL ツールです。SQL Server Integration Services Feature Pack for Azure を使用すると、Azure とオンプレミスのデータソースとの間でのデータ転送や処理が可能になります。SQL Server Integration Services (SSIS) の使い方をご参照ください。 | |
Ambari | 〇 | HDInsightのクラスター管理を行う Ambari が提供する Hive View で Hiveクエリの実行やテーブルの管理、データをアップロードしてテーブルを作成する等の管理操作が可能です。 | |
Hue | 〇 | Hive や Pig を実行したり、データを管理するためのWebアプリケーションです。HDInsight のスクリプト アクションを使用してインストールすることができます。 | |
Azure Data Factory | 〇 | データの移動、保存、処理を実行し、自動化するための Azure 上のサービスです。これを使って BLOB ストレージおよび HDFS のデータやり取りや Hive、Pig 等のジョブ実行が可能です。 | |
Azure Stream Analytics | 〇 | リアルタイムのイベント処理を行う Azure 上のサービスです。リアルタイム処理を行った結果を BLOB ストレージに出力することが可能です。 |
上記のデータ取り込み方法の中からいくつか簡単にご紹介します。
Visual Studio Tools for HDInsight
Visual Studio Tools for HDInsight をインストールすることで、主に Hive、Pig、Storm アプリケーションを開発することができます。プラグインを使用して Visual Studio から HDInsight に接続し、クラスターで使用しているBLOBストレージを参照したりデータをアップロードすることができます。
IntelliJ IDEA
IntelliJ IDEA は Microsoft Azure HDInsight Tools for IntelliJ プラグインをインストールすることで、おもに Spark アプリケーションを開発することができます。プラグインを使用して Visual Studio と同様に HDInsight に接続し、クラスターで使用している BLOB ストレージを参照したりデータをアップロードすることができます。
Ambari Hive View
Ambari Hive View では ストレージに直接アップロードするのではなく、 アップロードするファイルをもとに Hive テーブルを定義して、定義したテーブルにデータをロードすることができます。
Hue
Hue は HDInsight のスクリプトアクションによってインストールすることができます(標準ではインストールされません)。インストール後にヘッドノードの指定ポートにブラウザからアクセスすると Hue のアプリケーションを利用することができます。以下は BLOB ストレージに格納されているデータを管理するための File Browser 画面です。
Azure Stream Analytics
Azure Stream Analytics はリアルタイムのイベント処理を行うサービスで、センサーやログなどの大量のマシンデータを取り扱うのに便利です。出力結果を BLOB ストレージに保存して、HDInsight から処理することが可能です。下図は Azure の各サービスによって構成するラムダアーキテクチャの例ですが、Stream Analytics からの出力をリアルタイムに Power BI でモニタリングする経路だけでなく、BLOB ストレージに保存して HDInsight で加工・集計を行って分析する経路も実装しています。
HDInsight は Hadoop がもつインターフェースに加えて、Azure がもつ様々なインターフェースも利用できるため、用途に応じて非常に柔軟にデータを取り込んで活用することができます。ぜひお試しください。
関連記事