HDInsight にデータを取り込む方法

Microsoft Japan Data Platform Tech Sales Team

高木 英朗

 

過去 2 回にわたる記事で HDInsight を簡単に使ってみる方法を紹介しました。

前回は HDInsight に付属のサンプルデータを使用してクエリを実行しましたが、今回はどのようにしてHDInsightにデータを取り込むことができるかを紹介します。

HDInsight のストレージ

HDInsight はデフォルトで HDFS ではなく Azure BLOB ストレージを使用します (HDFS や Azure Data Lake Store を使用することもできます)。
Hadoop では HDFS を使い可能な限りローカルディスクのデータを処理することで、分散コンピューティングにおけるデータ移動を極力抑え、パフォーマンスやスケーラビリティを確保しています。BLOB ストレージは HDInsight のワーカーノードとは別のリモートストレージになりますが、フラットなネットワークアーキテクチャによりコンピューティング サービスとストレージの間で高い帯域幅が確保されます。

フラットネットワークについては以下のリンクが参考になります。

以下は HDInsight のストレージアーキテクチャのイメージです。
hdi_storage_arch

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ストレージを参照したりデータをアップロードすることができます。

hdi_vs

IntelliJ IDEA

IntelliJ IDEA は Microsoft Azure HDInsight Tools for IntelliJ プラグインをインストールすることで、おもに Spark アプリケーションを開発することができます。プラグインを使用して Visual Studio と同様に HDInsight に接続し、クラスターで使用している BLOB ストレージを参照したりデータをアップロードすることができます。

hdi_intellij

Ambari Hive View

Ambari Hive View では ストレージに直接アップロードするのではなく、 アップロードするファイルをもとに Hive テーブルを定義して、定義したテーブルにデータをロードすることができます。

hdi_ambari_hive

Hue

Hue は HDInsight のスクリプトアクションによってインストールすることができます(標準ではインストールされません)。インストール後にヘッドノードの指定ポートにブラウザからアクセスすると Hue のアプリケーションを利用することができます。以下は BLOB ストレージに格納されているデータを管理するための File Browser 画面です。

hdi_hue

Azure Stream Analytics

Azure Stream Analytics はリアルタイムのイベント処理を行うサービスで、センサーやログなどの大量のマシンデータを取り扱うのに便利です。出力結果を BLOB ストレージに保存して、HDInsight から処理することが可能です。下図は Azure の各サービスによって構成するラムダアーキテクチャの例ですが、Stream Analytics からの出力をリアルタイムに Power BI でモニタリングする経路だけでなく、BLOB ストレージに保存して HDInsight で加工・集計を行って分析する経路も実装しています。

hdi_asa

HDInsight は Hadoop がもつインターフェースに加えて、Azure がもつ様々なインターフェースも利用できるため、用途に応じて非常に柔軟にデータを取り込んで活用することができます。ぜひお試しください。

関連記事