ビッグデータ基盤の本番環境設計──本番環境におけるクラスタ構成を考察する:「ビッグデータプロジェクト」の進め方(3)(2/3 ページ)
本連載は、「ビッグデータプロジェクトの“進め方”」を業務視点/ビジネス視点の両面から理解し、具体的に実践していくためのナレッジアーカイブです。今回は、ビッグデータ基盤の本番環境を設計するのに必要な項目を解説します。
本番環境におけるクラスタ構成
先述の通り、Hadoopクラスタ単体では非機能要求を満たすことができないために、本番環境においては複数のクラスタで運用することが一般的です。
初期投資の予算が膨らむために最初から以下の全クラスタを用意することは難しいかもしれませんが、最終的には以下のような構成を目指すようにしていってください(図1)。
プライマリークラスタ(本番クラスタ)
プライマリークラスタ(本番クラスタ)は、業務の実行の中枢を担う、最も重要なクラスタです。どのような構成にせよ最低1つあることでしょう。
このクラスタでは、止まってしまうとビジネスに直接支障が出るような、最もSLA(Service Level Agreement)の厳しいアプリケーションを稼働させます。
例えば、以下の用途に使われます。
- SLAの定められたETL処理。例えば、日次バッチ処理など
- 全社員が活用するBIのダッシュボード
- リアルタイムアプリケーションのバックエンドシステム
セカンダリークラスタ
大規模なビッグデータ基盤になると、クラスタのデータそのものを丸ごとバックアップするという運用も出てきますが、単にバックアップ用途のために大量のサーバを購入し、クラスタを構築するという手段は費用対効果があまり高くありません。
そこで多くの企業では、セカンダリークラスタを単なるバックアップ用途だけではなく、さまざまな用途にも活用しています。例えば、データサイエンティスト用の基盤にセカンダリークラスタを活用する方法です。データサイエンティストは社内のあらゆるデータを活用しますが、彼らの書くプログラムは大小さまざまな負荷をシステムにかけるため、SLAの決まっている本番環境で稼働させることはあまり望ましくありません。その一方で、サンプルデータだけを取り出して分析しても、データサイエンティストの効率は上がりません。そこで、セカンダリークラスタをデータサイエンティスト用に活用することで、本番環境に負荷をかけることなく、新たな洞察を得るために活動できるようになります。
もう1つは、新しいバージョンのアプリケーション用のステージングクラスタとして運用する方法です。アプリケーション開発クラスタの規模は通常、本番環境よりかなり小さいクラスタであり、いくらHadoopエコシステムの移行性が高いといっても、本番環境の大量のデータに対して処理をかけたときに何が起きるか分かりません。そこで、このセカンダリークラスタをステージングクラスタとして使うことで、本番環境と同じ環境で動作確認を行えるようになります。
この他に、災害対策用を想定するのであれば、セカンダリークラスタはプライマリーとは別のデータセンターに設置する方がいいでしょう。
開発クラスタ
開発用のクラスタを本番と同等規模で用意することは、予算の関係からまず不可能でしょう。しかし、1000ノードの本番クラスタに対して、10ノードの開発クラスタしか用意しないというのもリスクが高すぎます。
この目安としては、本番環境のノード数の10分の1、100分の1……の規模のクラスタを用意するといいでしょう。例えば1000ノードの本番クラスタがあるならば、100ノードと10ノードの2つの開発クラスタを別々に用意することになります。
なお、スペックが違うことから、ここでの性能評価は最初から諦める方がいいでしょう。性能評価はセカンダリークラスタなど、本番に近い環境で行うことにしましょう。
一方、性能評価をする必要がないので、ほとんどの場合はVMで稼働させても問題はありません。参考までに、多くの企業は、4ノード(マスター1+ワーカー3)程度のVM上の小規模クラスタからスタートしています。
メッセージバス、あるいはKafkaクラスタについて
Apache Kafka(以下、Kafka)はスケーラブルな分散メッセージキューで、最近急速に普及が進んでいるHaodopエコシステムコンポーネントの1つです。
今まではさまざまなデータソースがHadoopに直接データを書き込んでいましたが、Kafkaの登場により、データを書く側がKafkaに書いてしまえば、HadoopだけでなくSparkや他のアプリケーションからも簡単に呼び出せるようになりました。このため、現代においてはHadoopクラスタの前段にKafkaクラスタを設置することが増えてきています。
Kafkaクラスタからプライマリークラスタ、セカンダリークラスタへ簡単にデータを投入できるので、複数クラスタの構成を見据えるのであれば、Kafkaクラスタは最初から構築しておく方がいいでしょう。可用性を持つKafkaクラスタは最小3ノードから構築可能です。
その他に必要なシステム
エンタープライズレベルのビッグデータ基盤を構築するには、さらに幾つかのコンポーネントも必要となります。Hadoopクラスタの構築に気を取られてしまって、これらのサーバの調達を忘れてしまいがちになりますので、十分注意してください。
- データベースサーバ
HiveのメタストアDBやHueのDBなど、Hadoopエコシステムの中にはRDBMSを必要とするコンポーネントが多数存在します。従って、耐障害性や可用性を考慮したRDBMSのサーバを用意する必要があります。小規模なクラスタのうちは1つのDBサーバで問題ないでしょうが、大規模なクラスタを構築するのであれば、クラスタごとに個別に構築する必要も出てくるでしょう。
- クラスタ管理サーバ
詳しくは後述しますが、最近はHadoopクラスタの管理に特化した専用ソフトウェアを使って構築、運用することが一般的です。こうしたソフトウェアは管理用のサーバを必要とします。Clouderaでは管理ツールとして「Cloudera Manager」を提供しています。また、Hortonworksも「Apache Ambari」という管理ツールをサポートしています。
- Kerberosの鍵配布センター(KDC)あるいはActive Directoryサーバ
Kerberos認証やActive Directory(以下、AD)で認証を行うのであれば、これらのサーバが外部に設置されている必要があります。
- ゲートウェイサーバ
クラスタを構成するサーバそのものに直接ログインして操作することは、セキュリティの観点から望ましくはありません。ゲートウェイサーバを設けて、そこからクラスタと通信する方法が安全でしょう。また、負荷を考えてもクラスタ外からクライアント操作を行う方がいいでしょう。
- リポジトリサーバ、CIサーバ
開発用のCI(Continuous Integration:継続的インテグレーション)サーバや、Mavenリポジトリ、gitリポジトリを管理するサーバも必要です。これらのサーバは多くの場合、他のシステムと共用で問題ないでしょう。
関連記事
- Hadoop+Hive検証環境を構築してみる
Hadoop HiveはHadoop上でSQLライクなクエリ操作が可能なDWH向けのプロダクトです。SQLに近い操作が可能なため、HBaseよりもデータベースに慣れ親しんだみなさんには使い勝手がいいかもしれません。本稿ではこのHiveの使い方とレビューを行っていきます。 - いまさら聞けないHadoopとテキストマイニング入門
Hadoopとは何かを解説し、実際にHadoopを使って大規模データを対象にしたテキストマイニングを行います。テキストマイニングを行うサンプルプログラムの作成を通じて、Hadoopの使い方や、どのように活用できるのかを解説します - 欧米の金融業界は今、どうHadoopを活用しているか
Hadoopは、欧米の金融関連サービス業界でどう活用されているか。米Hortonworksの金融サービス業界担当ゼネラルマネージャーへのインタビューで得た情報を、2回に分けてお届けする。今回は金融業界におけるHadoopのユースケースを概観する。 - Hadoop+Embulk+Kibanaのデータ集計基盤によるデータ可視化と集計データを活用したキーワードサジェストの仕組み
リクルートの事例を基に、大規模BtoCサービスに求められる検索基盤はどう構築されるものなのか、どんな技術が採用されているのか、運用はどうなっているのかなどについて解説する連載。今回は、ログデータの分析および可視化の基盤を構成する5つの主なOSSや集計データを活用したキーワードサジェストの事例を紹介します。 - ビジネスアナリティクス、機械学習の進化とSASの新アーキテクチャ
統計解析、予測分析でリーダー的存在の米SASが、同社製品群の大部分を新アーキテクチャに移行すると、2016年4月に発表した。これを、ビジネスアナリティクスの世界全般における動向との関連で探る。 - Sparkのエンタープライズ対応が「成熟」――Clouderaが宣言
HadoopディストリビューターもあらためてSparkへの注力をアピール。既に800ノード超のSparkクラスターを運用するユーザーも存在するという。 - Hadoop用リアルタイムクエリエンジン Impalaのポテンシャルをレビューした
2012年10月24日に発表されたばかりのHadoop用リアルタイムクエリエンジンをいち早くレビュー。次期CDHに組み込まれる予定の新機能をどう使いこなす? - Hadoop用クエリエンジン「Impala」がついに一般公開に
「Hiveの10倍速い」クエリエンジンが一般公開に。最新の列指向データフォーマットなどにも対応している。
Copyright © ITmedia, Inc. All Rights Reserved.