HadoopクラスタのQA:Clouderaのドッグフーディング

2016年6月23日、Alan Jackoway
カテゴリー:CDH Cloudera Manager テスト

リリース前に行うCloudera社内EDHクラスタ環境での実務ワークロードによる稼働テストの実施が、QAプロセス全体にとって極めて重要な理由

Clouderaは、最先端の機能を犠牲にすることなく、安定的で信頼性の高いApache Hadoopベースのプラットフォームを提供することに注力しています(このプロセスの概要は、こちらの投稿をご覧ください)。

Clouderaのサポート部門が所有するクラスタが、Apache Impala(インキュベーション中)やCloudera SearchといったCDHのコンポーネントのカスタマーエクスペリエンス向上にいかに貢献してきたかについては、過去にも紹介してきました。

Secrets of Cloudera Support: The Champagne Strategy
https://blog.cloudera.com/blog/2012/12/secrets-of-cloudera-support-the-champagne-strategy/

Secrets of Cloudera Support: Impala and Search Make the Customer Experience Even Better
http://blog.cloudera.com/blog/2013/09/secrets-of-cloudera-support-impala-and-search-make-the-customer-experience-even-better/

Clouderaサポートの秘密:カスタマーエクスペリエンスをより良いものにするための、ImpalaとSearchの採用

Secrets of Cloudera Support: Inside Our Own Enterprise Data Hub
http://blog.cloudera.com/blog/2014/02/secrets-of-cloudera-support-inside-our-own-enterprise-data-hub/

今回の投稿では、Clouderaが社内のエンタープライズ・データハブ (EDH) クラスタを使用し、どのように新しいリリースを稼働させアップグレードしているか、またそれが、ソフトウェア開発ライフサイクルの様々なQAプロセスの一貫として、Cloudera Enterprise(CDHとCloudera Manager)の品質向上にいかに役立っているかを説明します。こうしたQAプロセスには、リリース前に行なわれるユニットテスト、静的/動的コード分析、障害発生テスト、多次元連携/システムテスト、実ワークロードを使用した検証などが含まれています。

クラスタの構成

ClouderaのEDHは「Game of Nodes (GoN)」と呼ばれ、現在、以下のようなタイプの合計46のノードで構成されています。

  • Lannisterという2ノードでは、NameNodeやHBase Masterなどの管理用サービスが稼働しています。必要なメモリは大きなものになりますが、ディスクスペースは小さくて済むため、128GBのRAMが必要となる一方で、ディスク容量は1TBに収まっています。
  • Baelishという3ノードでは、Apache ZookeeperやJournalNodeなどのコーディネーションサービスが稼働しています。こうしたプロセスは相対的に軽いものなので、96GBのRAMと4台の1TBディスクが搭載されているだけです。
  • Hodorはワークノードとして、32のノードで構成され、DataNode、RegionServer、Impala Daemon、Solrサーバー、YARN NodeManagerなどが稼働しています。これらの異なるタイプのサービスを動かせるよう、ディスクスペースとメモリ容量を必要とします。そのため、128GBのRAMと12台の12TBのディスクが搭載されています。
  • Ravanという3ノードは、メッセージ配信のためのApache Kafka専用になっています。これらのマシンでは、ディスクのスループットがもっとも重要な要素ですが、単純化のため構成はHodorノードと同じになっています。
  • Snowという6ノードは、アプリケーションを稼働させるエッジノードになっています。エッジノードでは、様々なプロセスが稼働するため、ハードウェアの統一性は重要ではありません。各ノードには32~128GBのRAM、2~6TBのディスクが搭載されています。

2つのタイプのワークロードに対応するEDH

  • ひとつは、Apache HBase、Impala、Apache Solrといったシステムに、お客様のデータを極めて高速に投入する必要がある、カスタマーサポートのユースケースです。サポートのためのデータ投入とモデリングでは、個別のレコードを探索する際のスピードが重要視されます。
  • もうひとつは、業務データをバルクロードし、ImpalaやApache Hiveを使ってレポーティング処理するようなユースケースです。この場合、Apache ParquetやApache Avroフォーマットで保存された大量のデータに対して、容易な分析が可能になるようにデータがモデリングされます。

CDHの機能向上

Clouderaは社内のクラスタで、CDHスタックのすべてのコンポーネントを意識的に使用しています。理由は簡単です。業務アプリケーションを有効にテストできる手段が他には存在しないからです。すべてのコンポーネントは初期テストだけでなく、Clouderaのエンジニアリングチームによる独自の拡張テストも実施されますが、長期間にわたり実データを処理してみなければ明らかにならない問題もあります。さらに、現実世界のアプリケーションの、雑然とした不均一なデータを使ってシミュレーションすることは非常に困難です。

幸いClouderaのEDHには、過去4年間に蓄積された400TBものデータあり、さらに新しいデータが毎週追加されています。これは、新しいリリースが期待通りに動作するかの確認に打ってつけの環境であり、製品の安定性と信頼性の向上に貢献しています。

このエンタープライズ・データハブを立ち上げて以来、Clouderaは、Cloudera ManagerとCDHのすべてのコンポーネントに関する100以上のJIRAに対応してきました。こうした問題には、エラーメッセージの内容修正といったものから、マシン全体をダウンさせてしまうような状況まで含まれています。ビジネスクリティカルなアプリケーションを、毎日のように社内のEDHクラスタで使用することで、お客様に影響を与える前に問題を把握することができます。

アップグレードテスト

多くの企業が、アップグレードでは苦労を強いられています。実動しているシステムを新しいバージョンに上げるには、計画、テスト、そしてベンダーの提供する新しいバージョンが安定し、既存のアプリケーションを引き続き稼働できるという確証が必要です。

Clouderaは、サポート対象のすべてのアップグレードパスが問題なく実施できることを確認するため、アップグレードテストには相応な投資を行なってきました。新リリースに対しては、サポート対象OSのCDHの過去バージョンからの、ローリングアップグレードおよび非ローリングアップグレードをテストします。さらに、新バージョンでアプリケーションが引き続き問題なく機能するかもテストします。

このアプリケーションテストの拡張として、新マイナーバージョンのリリース(例えばCDH 5.6から5.7)以前に、Game of Nodes クラスタをアップグレードし、数週間ワークロードを走らせることで、お客様に影響を与える前にアップグレードに伴う不具合を検査します。例えば、過去CDH 5.4にアップグレードする際、CDHスタック全般にわたり、致命的な問題を含む30のJIRAに対応しましたが、リリース前には解決を図ることができました:

スクリーンショット 2016-06-22 09.28.49

異なる環境でのテスト

最初に説明したとおり、EDHクラスタですべてのプラットフォームコンポーネントを動かすというのは、QAプロセス全体の一部にしか過ぎません。テスト環境ではなく、現実の環境で実データを使って業務ワークロードを動かし、多くのユーザから問題の指摘を受けることで、より実際の導入に向けた準備を整えることができます。しかし、ClouderaのEDHは特定のワークロードに限定された特別な環境であるため、社内クラスタを使用すること自体は、QA戦略とは言えません。

Clouderaは、それぞれのCloudera Enterpriseリリースで、すべての環境やワークロードが期待通りに稼働できるようにするため、エンジニアリングリソースを専任でアサインしています。すべてのサポート対象構成をテストし、テスト中に障害発生をシミュレーションし、社内のEDHクラスタでは稼働させていないテストワークロードを使ってテストを実施します。Cloudera社内のクラスタは、エンジニアリングチームが、CDHの全般的なテストケースを実行するための環境であり、すべてのリリースが、エンタープライズレベルの安定性と、信頼性を確保していることを確認するために、利用されているのです。

まとめ

Clouderaは、ビジネスクリティカルなシステムに求められる、最高の品質のオープンプラットフォームの構築に、全力を注いでいます。社内のエンタープライズ・データハブを、絶えず最新のCDHとCloudera Managerで稼働させ、そこで業務ワークロードを動かすことは、Clouderaのプラットフォームが安定した基盤として、エンタープライズの業務アプリケーションにいつでも対応するための、重要な要素になっています。

次回は、Apache Hadoopコンポーネントの上流単体テスト時間を、時間単位から10分に短縮できる、Clouderaのオープンソース分散テストフレームワークについて記事を投稿する予定です。

Alan Jackowayは、Clouderaサポートチームのソフトウェアエンジニアです。

One clap, two clap, three clap, forty?

By clapping more or less, you can signal to us which stories really stand out.