データベース
 Computer >> コンピューター >  >> プログラミング >> データベース

Hadoopエコシステムの基本:パート2 ― クエリ処理からクラスタ管理まで

本記事はTricoreによって2017年7月11日に公開された内容をもとにしています。

Apache™ Hadoop®に関する2部構成シリーズのパート1では、HadoopエコシステムとHadoopフレームワークの全体像を紹介しました。パート2となる本記事では、クエリ処理、外部システムとの統合、データ交換、分散アプリケーションの調整、そしてクラスタ管理など、Hadoopフレームワークの中核コンポーネントをさらに掘り下げて解説します。あわせて、Hadoopクラスタを監視するためのモジュールについても取り上げます。

クエリ処理

パート1では、スクリプトツールであるApache Pig™を紹介しました。PigはPig Latinという言語で記述され、実行可能なMapReduceジョブへと変換されます。開発者にとって多くのメリットがあり、詳細はパート1で確認できます。

しかしながら、依然としてSQLを好む開発者も少なくありません。慣れ親しんだ技術を活かしたい場合には、Hadoop上でSQLを使用する選択肢があります。

Hive

Apache Hive™は、大量のデータを管理・整理するための分散型データウェアハウスです。このウェアハウスは、Hadoop Distributed File System(HDFS™)の上に構築されています。Hiveのクエリ言語であるHiveQLはSQLのセマンティクスに基づいており、ランタイムエンジンがHiveQLをデータ照会用のMapReduceジョブへ変換します。

Hiveが提供する主な機能は以下のとおりです。

  • 大量の生データを格納するためのスキーマ化されたデータストア。

  • HDFS上の生データに対して分析やクエリを実行できる、SQLライクな環境。

  • 外部のリレーショナルデータベース管理システム(RDBMS)アプリケーションとの統合。

次の図は、Hadoopエコシステムのアーキテクチャを視覚化したものです。

Hadoopエコシステムの基本:パート2 ― クエリ処理からクラスタ管理まで

Hadoopエコシステムのアーキテクチャ

外部システムとの統合

Apache Flume™は、大量のログデータを効率的に収集・集約し、HDFSへ転送するための分散型で信頼性と可用性に優れたサービスです。Flumeは、フォールトトレラントかつフェイルオーバー復旧に対応したストリーミングデータフローアーキテクチャを採用することで、大量のイベントデータを輸送します。

Flumeには、次のような特徴もあります。

  • ネットワークトラフィック、ログ、メールメッセージなど、大量のイベントデータを転送できる。

  • 複数のソースからのデータをHDFSへストリーミングできる。

  • Hadoopアプリケーションへのリアルタイムかつ信頼性の高いデータストリーミングを保証する。

データ交換

Apache Sqoop™は、Hadoopとリレーショナルデータベースやエンタープライズデータウェアハウスといった外部データストアとの間で、バルクデータを効率的に転送するために設計されたツールです。Sqoopは、Teradata Database、IBM® Netezza、Oracle® Database、MySQL™、PostgreSQL®などのリレーショナルデータベースと連携でき、ビッグデータの収集や分析を行う多くの企業で広く利用されています。

Sqoopが提供する主な機能は以下のとおりです。

  • データベースに応じて、インポート対象データのスキーマ定義プロセスの大部分を自動化できる。

  • MapReduceフレームワークを利用してデータのインポート・エクスポートを行うため、並列処理メカニズムとフォールトトレランスを実現できる。

  • 主要なRDBMS向けのコネクタを提供している。

  • フルロードと増分ロード、データの並列インポート・エクスポート、およびデータ圧縮をサポートしている。

  • Kerberosセキュリティとの統合をサポートしている。

調整(コーディネーション)

Apache Zookeeper™は、分散アプリケーション向けの調整サービスであり、クラスタ全体での同期を可能にします。分散アプリケーションがデータを保存・取得できる中央集権的なリポジトリを提供します。

Zookeeperは、クラスタ内のジョブを管理するためのHadoop運用ツールです。あるノード上のデータに変更が発生すると、その変更が他のノードにも通知されることから、「監視員(ウォッチガード)」と呼ぶ開発者もいます。

Hadoopクラスタのプロビジョニング、管理、監視

Apache Ambari™は、Apache Hadoopクラスタのプロビジョニング、管理、監視を行うためのWebベースのツールです。シンプルでありながら高度にインタラクティブなユーザーインターフェースを備えており、ツールのインストールや管理、設定、監視タスクを容易に行えます。Ambariは、ヒートマップなどクラスタの健全性情報を確認できるダッシュボードを提供し、MapReduce、Pig、Hiveアプリケーションを機能と併せて表示できるため、パフォーマンス特性の診断も簡単です。

Ambariには、さらに以下のような特長があります。

  • マスターサービスとノードのマッピング。

  • インストールするサービスを選択できる柔軟性。

  • 簡単なカスタムスタックの選択。

  • より洗練されたインターフェース。

  • 合理化されたインストール、監視、管理。

まとめ

Hadoopは、膨大な量のデータを保存・分析したい企業にとって非常に効果的なソリューションです。分散システムにおけるデータ管理ツールとして高い需要があり、オープンソースであるため、企業は自由に活用できます。Hadoopについて詳しく知りたい方は、Apache Software Foundationの公式サイトにあるドキュメントをご覧ください。

Hadoopを使用したことはありますか?フィードバックタブからコメントやご質問をお寄せください。

  1. ビッグデータ分析に最適なプログラミング言語7選【前編】

    前回のビッグデータに関する記事では、ファンクショナルアーキテクチャの第8層にあたる「データ統合ツール」について解説しました。今回は、第9層を構成する「データ言語(Data Languages)」について詳しくご紹介します。 現在、ビッグデータプロジェクトは企業の規模を問わずあらゆる業界で一般的になっており、ビッグデータがもたらす洞察(インサイト)を最大限に活用しようとする動きが加速しています。どれほど高度でGUIベースのソフトウェアが開発されても、その根幹を支えているのはコンピュータプログラミングです。これまでのツール解説が、貴社のビッグデータ体制の計画立案に役立ったのであれば幸いです。しかし

  2. ビッグデータ分析に最適なプログラミング言語 後編:Python、MATLAB、Scalaなど7選

    前回の「データサイエンスに最適なプログラミング言語」第1回では、7つの言語をご紹介しました。これらは、ビッグデータを扱う多くの専門家が実際に使用している定番の言語です。今回は残りの半分をご紹介します。第1回で取り上げた言語と比べると比較的新しい言語が中心ですが、JavaやHadoop、R、SQLに匹敵する人気を獲得しているものもあれば、独自の優れた機能によって市場で確固たる地位を築いているものもあります。データサイエンス向けプログラミング言語リスト1. Python(パイソン)Pythonは、ビッグデータに必要な大規模かつ複雑なデータセットを扱うのに最適なオープンソースプログラミング言語の一つ