Hadoopは、データの保管やアプリケーションの実行を汎用ハードウェアのクラスター上で行うためのオープンソースのソフトウェア・フレームワークであり、あらゆる種類のデータに対応した大規模ストレージ、極めて強力な処理パワー、ほぼ無制限の同時並行タスク/ジョブを処理できる機能を提供します。

Hadoopの歴史

1900年代の終わりごろから2000年代初めにかけて、World Wide Webが成長するのに伴い、テキストで構成されたコンテンツの中から目的の情報がある場所を特定する手段として、検索エンジンとインデックスが生み出されました。初期の数年間、検索結果を送り返していたのは人間でした。しかし、Webの規模が数十ページから数百万ページへと成長していく中で、自動化が求められるようになりました。Webページを自動的に「這い回って」情報を集めるプログラムである「Webクローラー」(多くは大学主導の調査研究プロジェクトによるものでした)が作られたほか、Yahoo、AltaVistaといった検索エンジンの新興企業が事業を創始しました。

hadoop-timeline-infographic

 

このようなプロジェクトの1つに、Nutchと呼ばれるオープンソースのWeb検索エンジンがありました。考案したのはダグ・カッティング(Doug Cutting)氏とマイク・カファレラ(Mike Cafarella)氏です。彼らの目標は、Web検索の結果をより速く送り返すことでしたが、そのために思い付いたのが、データを分割して複数のコンピューターで計算を行い、複数のタスクを同時に遂行する方法でした。この時期には、Googleと呼ばれる別の検索エンジン・プロジェクトも進行していました。Googleも基本コンセプトは同じであり、より的確な検索結果を迅速に送り返すために、分散型の自動化された方法でデータを保管・処理することを目指していました。

2006年、カッティング氏はYahoo社に入り、Nutchプロジェクトと、Googleの自動化された分散データストレージと分散処理に関する初期の仕事から得たアイデアを持ち込みました。これを受けてNutchプロジェクトは分割され、Webクローラーの部分がNutchとして残されました。そして分散コンピューティング/処理の部分がHadoopになったのです(この名前は、カッティング氏のご子息が持っていたおもちゃの象にちなんでいます)。2008年、Yahoo社はHadoopをオープンソースのプロジェクトとして公開しました。そして今現在、Hadoopのフレームワークとそのテクノロジー・エコシステムは、非営利のApache Software Foundation(ASF)によって管理・保守されています。ASFは、ソフトウェア開発者と貢献者の世界的なコミュニティです。

 

 


Hadoopが重要な理由

  • あらゆる種類の大量データを高速に保管・処理できる能力:データ、とりわけソーシャルメディアとモノのインターネット(IoT)に由来するデータの量と多様性が増え続けていることから、この能力は重要な検討事項となっています。
  • コンピューティング性能:Hadoopの分散コンピューティング・モデルはビッグデータを高速に処理します。使用するコンピューティング・ノードが増えるほど、処理能力が向上していきます。
  • フォールト・トレランス機能:データとアプリケーションの処理は、ハードウェアの障害から保護されます。ノードがダウンするとジョブは自動的に別のノードにリダイレクトされ、分散コンピューティングが決して停止しないようになっています。また、全データについて、複数のコピーが自動的に保管されます。
  • 柔軟性:従来型のリレーショナル・データベースとは異なり、データを前処理してから保管する必要がありません。好きなだけデータを保管でき、どのように使うかは後から決めることができます。テキスト、画像、動画といった非構造化データも含めることができます。
  • 低コスト:このオープンソースのフレームワークは無料であり、しかも安価な汎用ハードウェアを用いて大量のデータを保管できます。
  • スケーラビリティ(規模の拡張性):単純にノードを追加していくだけで、システムの規模を簡単に拡張し、より多くのデータを処理することができます。管理作業はほとんど必要ありません。

Hadoopの使用に伴う課題

MapReduceはどんな問題にも申し分なく対応できるわけではありません:独立した複数の単位に分割できる単純な情報リクエストや問題なら良好に処理しますが、反復的な対話操作型の分析タスクを効率的に行うことはできません。MapReduceの処理はファイル中心型だからです。各ノードはソートとシャッフル以外で互いに通信し合うことがないため、反復アルゴリズムを完了させるためには複数のmap-shuffle/sort-reduceフェーズが必要になります。その結果、MapReduceのフェーズ間で複数のファイルが作成されますが、これは高度な分析コンピューティングとしては効率が良くありません。

人材のギャップが広く認知されています:MapReduceを生産的に使いこなすのに十分なJavaスキルを持つ入門レベルのプログラマーを見つけるのは容易ではありません。この点は、ディストリビュージョンのプロバイダーが競い合ってリレーショナル(SQL)テクノロジーをHadoop上に載せようとしている理由の1つとなっています。実際、SQLのスキルを持つプログラマーを見つける方が、MapReduceのスキルを持つプログラマーを見つけるよりもはるかに簡単です。また、Hadoopの管理はアートの側面とサイエンスの側面を併せ持つため、オペレーティング・システム、ハードウェア、Hadoopのカーネル設定に対する深い知識が必要です。

データのセキュリティ:もう1つの重要な課題は、断片化されたデータ・セキュリティをめぐる問題です(新しいツールやテクノロジーが現れてきてはいますが)。Kerberos認証プロトコルは、Hadoop環境のセキュリティ強化に向けた大きな一歩です。

データの管理とガバナンスに関する必要十分な機能性:Hadoopには、データの管理、クレンジング、ガバナンス、メタデータ管理のための使いやすく機能豊富なツール群が用意されていません。中でも特に欠けているのが、データの品質と標準化に関するツールです。



豆知識:Hadoopの考案者のご子息が、黄色いおもちゃの象を持っていました。その象の名前が「Hadoop」だったのです。

今日の世界におけるHadoop

低コストで可用性が高いストレージおよび処理能力という利点から、多くの企業や組織がHadoopに目を向けるようになっています。とはいえ、「Hadoopがビッグデータとアナリティクスにどう役立つのか?」という重要な疑問を解消しきれていないケースが散見されます。以下の資料をご活用ください。

 
tdwi logo - Advancing all things data


必読の資料:企業向けのHadoop

この40ページに及ぶ包括的なTDWI Best Practices Reportでは、Hadoopとその導入が、ニッチな存在から、全社的な展開に堪えるソリューションへと進化しつつある現状を説明しています。

要約を見る(ポップアップウィンドウが開きます)

Report


白鳥になった醜いアヒルの子

このBloor Group社のレポートでは、Hadoopのエコシステムを紹介し、Hadoopの進化と導入展開オプションについて検討しています。詳細な歴史と、ニーズに適したディストリビューションの選び方も紹介されています。

レポートをダウンロード(英語版)

Webcast


Hadoop導入の最新状況

Hadoopは誰に、どのような利点をもたらすのでしょうか?International Institute for Analytics (IIA) とSASの後援で開催されたこのWebセミナーでは、Hadoopのエコシステムにデータ統合、データ発見、アナリティクスが追加する価値を解説しています。

今すぐ見る(英語版)

Book


SASとHadoopの概要

HadoopとSASのテクノロジーを理解した上でニーズに最適な形で活用できるように、それぞれの基本概念を知りましょう。この無料の書籍(全98ページ)では、SASテクノロジーとHadoopの連携の仕組みを学ことができます。

要約を見る(ポップアップウィンドウが開きます)

Hadoop向けのデータ管理

ビッグデータ関連のスキルには大きな需要があります。最新のソリューションなら、ビジネスユーザーでも直感的なユーザー・インターフェイスを用いて、Hadoopはもちろん、あらゆる場所に格納されているデータのプロファイリング/変換/クレンジングを行うことができます。

SASのHadoop向けのデータ管理

Hadoopの具体的な用途

Hadoopの元々の目標は、何百万あるいは何億というWebページを検索し、適切な結果を返すというものでしたが、現在では多くの企業/組織がHadoopを次世代のビッグデータ・プラットフォームとして見ています。今日の一般的な用途としては、例えば以下のようなものがあります。

低コストのストレージとデータ・アーカイブ

汎用ハードウェアは価格も手ごろで、Hadoopによるデータの保管と統合にうってつけです。対象となるデータには、トランザクション、ソーシャルメディア、センサー、マシン、科学データ、クリック・ストリームなどがあります。低コストのストレージを利用することで、現時点ではそれほど重要とは思われないものの後日の分析に役立つ可能性のある情報も保持しておくことができます。

発見と分析のためのサンドボックス(砂場=自由な実験の場)

Hadoopは、さまざまな形態やフォーマットの大規模なデータを取り扱えるように設計されているため、分析アルゴリズムの実行にも適しています。Hadoop上でのビッグデータ・アナリティクスは、業務効率の向上、新たな機会の発掘、競争優位性のさらなる強化などの目的に役立つでしょう。サンドボックス方式のアプローチを利用すると、革新を実現するチャンスを最小限の投資で手にすることができます。

データレイク(データの湖)

データレイクでは、データを元のフォーマットのままで保管できます。データレイクの目的は、発見やアナリティクスに取り組むデータ・サイエンティストや分析担当者がデータを生(=未加工)の状態で把握できるようにすることです。こうしたデータがあれば、事前集約の結果などに縛られることなく、新たな疑問や複雑な疑問の解決に取り組むことが可能になります。データレイクはデータウェアハウスの代替ではありません。実際問題、データレイクのセキュリティとガバナンスをどのように実現するかは、IT部門にとって大きなテーマです。一例としては、データ連携手法を利用して論理データ構造を確保する方法が考えられます。

データウェアハウスの補完

最近では、Hadoopをデータウェアハウス環境と併用する事例も出てきており、特定のデータセットの処理負荷をデータウェアハウスからHadoopに移すケースや、新しいタイプのデータを直接Hadoopに保管するケースも見られます。どのような組織でも、こうした併用の最終目標は、さまざまなレベルでデータ統合を行う可能性のある多様な用途をサポートできるように、さまざまなスキーマ/フォーマット/特性のデータを保管・処理できる適切なプラットフォームを確立することです。

IoTとHadoop

IoTを構成するモノは、何を伝えるべきかだけでなく、いつ何を行うべきかも知る必要があります。IoTの核心にあるのは、常に流れ続けている大量のストリーミング・データです。Hadoopは多くの場合、数百万件、数十億件のトランザクションを保管するためのデータストアとして使用されます。IoTでは、モノに対して「指示的アナリティクスにもとづく動作命令」を出すことがありますが、大容量のストレージと処理能力を備えるHadoopは、そのためにモニタリングすべきパターンの発見・定義を行うサンドボックスとしての利用にも適しています。Hadoopのデータストアは新しいデータで更新され続けるため、そこで定期的に実験を行えば、いち早く新たなパターンを発見し、そうした動作命令を継続的に改良していくことができます。

 

 

Hadoopによるレコメンデーション・エンジンの構築

Hadoopを最大規模で導入している企業において、最も一般的に見られる分析用途の1つは、Webベースのレコメンデーション・システムです。これは例えば、Facebookの場合は「知り合いかもしれない人々」を、LinkedInの場合は「興味があるかもしれない仕事」を、NetflixやeBayやHuluの場合は「視聴したいかもしれない作品」をユーザーに提示する仕組みです。こうしたシステムでは、ユーザーや顧客がWebページを離れる前にその人物の好みを予測するために、大量のデータをリアルタイムで分析します。

仕組み:レコメンデーション・システムは、まず、ユーザーのプロファイルを作成します。これには明示的な方法(アンケートなどでユーザーから情報を収集)と、暗黙的な方法(ユーザーの行動を観察して情報を収集)があります。次に、このプロファイルを参照特性(ユーザー・コミュニティ全体から得たオブザベーション)と比較することで、そのユーザーに関連性が高いアイテムを判断し、それをレコメンデーションとして提供します。SASは、基本的な距離尺度から、マトリクス・ファクタライゼーション、協調フィルタリングまで、レコメンデーション・システムを構築するための手法やアルゴリズムを幅広く提供しており、その全てをHadoopの内部で実行することができます。

Hadoopでレコメンデーション・システムを構築する方法などに関する参考資料(英語)


Hadoopは既に、大規模で複雑なアプリケーションを構築するためのプラットフォームとして利用できるレベルにまで成熟していると、私は確信しています。現在のHadoopは、多様なデータを大量に処理するためのスケーラビリティ要件を満たしています。
ボブ・ズーレック(Bob Zurek)氏、Epsilon社、製品担当上級副社長、TDWI Best Practices Report 「Hadoop for the Enterprise」(企業向けのHadoop)より

Hadoop、アナリティクス、データ・サイエンティスト


SASのソリューションは、コーディング好きの方にも、そうでない方にも、気に入っていただけるでしょう。オールインワンの対話操作型環境であるため、Hadoop内のデータから正確な洞察を導き出すのに必要な機能が全て揃っています。しかも超高速処理が可能です。

SASのHadoop対応ソリューションの詳細

Hadoopの仕組みと用語集

現在、Apache Software Foundationが提供する基本的なフレームワークには、次の4つの中核的なモジュールが含まれています。

Hadoop Common – 他のHadoopモジュールが必要とするライブラリやユーティリティ。

Hadoop Distributed File System (HDFS) – Javaベースのスケーラブルなファイルシステム。事前に体系化することなく、データを複数のマシンに分散して保管することができます。

YARN (Yet Another Resource Negotiator) – Hadoop上で実行されるプロセスのためのリソース管理フレームワーク。

MapReduce - 並列処理を実現するソフトウェア・フレームワーク。これは2つのステップで構成されます。Mapステップでは、マスターノードが入力を受け取り、それを小さな下位問題に分割してから各ワーカーノードに配布します。Reduceステップでは、Mapステップの実行後、マスターノードは全ての下位問題に対する答えを受け取り、それらを組み合わせて出力を作成します。

Hadoop上で、またはHadoopと組み合わせて実行することができ、ステータスがApacheのトップレベル・プロジェクトに達しているその他のソフトウェア・コンポーネントとしては、以下のようなものがあります。

AmbariHadoopのサービスとコンポーネントの管理、設定、テストを行うためのWebインターフェイス。
Cassandra分散データベース・システム。
Flume大量のストリーミング・データを収集、集計し、HDFSに受け渡すソフトウェア。
HBaseHadoop上で動作する非リレーショナル分散データベース。HBaseテーブルは、MapReduceジョブの入出力としても機能します。
HCatalogユーザーによるデータ共有とデータアクセスを支援する、テーブルおよびストレージ管理レイヤー。
Hiveデータをテーブル形式で提示する、データ・ウェアハウジングに対応したSQL風のクエリ言語。Hiveのプログラミングは、データベースのプログラミングとよく似ています。
OozieHadoopのジョブ・スケジューラー。
PigHDFSに保管されたデータの操作を行うためのプラットフォーム。MapReduceプログラムのコンパイラと、Pig Latinという高水準の言語で構成されます。MapReduceプログラムを記述しなくても、データの抽出、変換、読み込み、および基本的な分析を行うことができます。
Solrインデックス作成、信頼性管理、設定の一元管理、フェールオーバー/リカバリーなどの機能を備えた、スケーラブルな検索ツール。
Sparkインメモリ・アナリティクスに対応したオープンソースのクラスター・コンピューティング・フレームワーク。
SqoopHadoopとリレーショナル・データベースとの間でデータの受け渡しを行う、接続と転送の機構。
Zookeeper   
分散処理を連携させるアプリケーション。

商用Hadoopディストリビューション

オープンソース・ソフトウェアは、世界中の開発者ネットワークによって作成と保守が行われています。この種のソフトウェアはダウンロードして利用するのも、開発に貢献するのも無料ですが、Hadoopに関しては商用バージョンとして提供されるものが増え続けています(これらは最近、「ディストロ(distro)」と呼ばれることが多くなっています)。ソフトウェア・ベンダーによるディストリビューションを利用する場合は、そのバージョンのHadoopフレームワークに対して料金を支払い、セキュリティ、ガバナンス、SQL、管理コンソールなどに関連する追加機能や、トレーニング、文書、その他のサービスを受け取ります。広く利用されているディストロとしては、Cloudera、Hortonworks、MapR、IBM BigInsights、PivotalHDがあります。

 

 


Hadoopへのデータの取り込み

データをHadoopに取り込む方法として代表的なものは、以下のとおりです。

  • サードパーティ製のコネクタ(SAS/ACCESS®SAS Data Loader for Hadoopなど)を利用します。
  • Sqoopを使って、構造化データをリレーショナル・データベースからHDFS、Hive、HBaseにインポートします。SqoopではHadoopからデータを抽出し、リレーショナル・データベースやデータウェアハウスにエクスポートすることもできます。
  • Flumeを使って、ログファイルからHadoopにデータを継続的にロードします。
  • 簡単なJavaコマンドでファイルをシステムにロードします。
  • ディレクトリをスキャンして新しいファイルを探し、ファイルが見つかったらHDFSに「put」するcronジョブを作成します。これは、定期的に電子メールをダウンロードする場合などに便利です。
  • HDFSをファイルシステムとしてマウントし、そこへファイルをコピーするか、または書き込みます。

ビッグデータ+Hadoop+SAS

SASは「ユーザーがより多くの知識をより迅速に獲得して、より良い意思決定を行えるように支援する」という唯一の目標を中心に据え、Hadoopを含むビッグデータ導入サポートを提供しています。このテクノロジーをどのように利用するかにかかわらず、全てのプロジェクトは反復的で継続的な改善サイクルに沿って進めなければなりません。このサイクルには、データ準備、データ管理、データ・ビジュアライゼーション(視覚化)とデータ探索、分析モデル開発、モデル展開、モニタリングが含まれます。そのため、知見・洞察を導き出し、ビッグなHadoopデータをよりビッグなチャンスへと速やかに変えることができます。

SASはストレージではなくアナリティクスが本業であるため、ハードウェアやデータベースのベンダー選択については柔軟なアプローチを採用しており、お客様がテクノロジーの適切な組み合わせを導入できるようにご支援することができます。例えば、Hadoopを他のデータウェアハウス・テクノロジーと組み合わせて導入することも可能です。

また、どのようなプロジェクトも、成功はそれがもたらす価値によって決まる、ということを忘れてはなりません。収益源、利益率、リスク軽減、プロセス改善に関する指標を設定し、その結果を周知することで、パイロット・プロジェクトの成果が広く認められ、他の部門の関心を引くことができるでしょう。多くの企業や組織は、1つか2つのHadoopプロジェクトから開始する方法を探りながら、将来の拡大計画も同時に検討していることを、SASは認識しています。

SASとHadoopの詳細情報