clouderaの品質保証・cdhのテスト工程について by andrew bayer
DESCRIPTION
2012/7/31に実施したCloudera QAセミナーより 「Clouderaの品質保証 CDHのテスト工程について」 Cloudera Kitcen team / Andrew BayerTRANSCRIPT
Clouderaの品質保証 CDHのテスト工程について
• Andrew Bayer, Cloudera
イントロダクション:自己紹介
• Andrew Bayer
• Clouderaキッチンチーム(Kitchen team:品質保証、ビルド、パッケージング、etc)
• ビルド・アーキテクト(Build architect)
• Jenkinsのボードメンバー/コミッター
• Apache Bigtop, Apache Flume, Apache Sqoop, Apache Whirr, jcloudsのコミッター
Apacheの品質保証の流れ
• 全プロジェクトにおける単体テストの サブセットはJenkins上で実行
l テストは単一ノードの疑似分散モードのみで実行
l テストはApache Bigtopの一環として、Clouderaが関与している限定された統合テストともにコンポーネントごとに実行
l ジョブは頻繁に落ちる
Apacheの品質保証の流れ
Apacheの品質保証の流れ
• リリースに関する厳格な基準なし
• しばしば限られた検証を経るだけで、コミッターによる投票でリリースが決定する
“+1 (結合) 私はソースから構築され署名されたコードを、疑似クラスタを設定してすべて検証し、試しにサンプルジョブを少し実行した。すべて期待通りに動作した。”
CDHの品質保証: テスト計画
• テストは計画時から始まっている
• 全主要コンポーネントに対してテスト計画を立案
• 品質エンジニアによる計画立案と、 開発者によるレビュー
• 自動化できる作業項目一覧と、手動による検証が必要な作業とを対比
• 将来のテスト作業に向けたバックログ
CDHの品質保証: コードレビュー
• コードはすべてピアレビューされる
• 以下の作業が含まれている:
l オープンソースからのバックポート(改良点を旧バージョンへ移植)
l テスト l ビルドとパッケージングロジック
• テストが実施される前に、査読時の検査によって最割安にバグを特定
CDHの品質保証:単体テスト
• 全コンポーネントに関する単体テストを毎日フルで実行
l テスト数の合計:CDHだけで2万以上
CDHの品質保証:単体テスト
• 単体テストは、MapReduce1とMapReduce2両方に対して実施
• 立て続けに追加されたエコシステムのツールやライブラリに対しても検証
• 単体テストのジョブも、CheckStyleやFindBugsのような静的解析ツールで実行
CDHの品質保証: パッケージテスト
• サポートする全プラットフォーム上で CDHのRPMおよびDebianパッケージを自動検証
l インストール l 削除 l アップグレード l パッケージ内容物の検証 l 機能的なスモークテスト l プライベート・クラウド環境におけるVMの自動スピン
アップ/スピンダウン
CDHの品質保証:クラスタテスト
l さまざまなクラスタ構成で自動検証
l セキュアクラスタ l 高可用性(HA)における安全性 l HDFSフェデレーション
• クラスタ規模のレンジに応じたテスト
l 5、10、100ノードの物理的なクラスタ l 1000ノードまでのVMクラスタ
CDHの品質保証:スケールテスト
• ClouderaのQAチームが実施するスケールテスト
l TeraSort(大量データのソートをテスト) l TestDFSIO(ディスクのスループットを測定) l HiveBench l YCSB(Yahoo! Cloud Serving Benchmark) l SWIM(MapReducceのパフォーマンスを測定) l Intel HiBench(Hadoop用ベンチマークスイート) l TPC-H(大規模データシステムのトランザクション
を測定)
CDHの品質保証: その他のテスト
• 互換性テスト – 以前のリリースからのAPIを自動検証
• パフォーマンス回帰テスト – 複数のリリース版で同じワークロードを実行
• クラス間のHBaseレプリケーションのような長期稼働テスト
• JCarderのようなツールを使ったデッドロックの検出
CDHの品質保証:テストマトリクス
• 顧客が実際に利用すると思われる環境をサポートするため、Linuxのさまざまなディストリビューション/バージョンでクラスタを実行
l CentOS/RHEL 5, 6 l SLES 11 l Oracle Linux 5, 6
• 複数のデータベース (MySQL, Oracle, PostgreSQL)
• JDKの追加 (JDK 1.7, OpenJDK)
CDHの品質保証:さらなるテスト
• 顧客のトレースから派生した実際のデータに対してテストを実行
• 未だ自動化されていない多数の手動テストや、また信頼性や障害発生、顧客特有の問題の再発生など特定の顧客主導シナリオを実施
CDH品質保証:テスト計画例
• HDFS HA
• 全コンポーネントにわたるAvroとの統合
• Cloudera Managerテスト計画
CDHの品質保証: HDFS HA テスト計画
• 通常の動作を検証するため、非HA構成でHAクラスタのテストを実行
• HA構成の基本的なHDFSの機能性
• フェールオーバーのテスト
l 手動フェールオーバー
l 自動フェールオーバー
l HTTPフェールオーバー
• HAセキュリティ
• HAフェデレーション
CDHの品質保証: Avroの統合
• プロデューサーのAvroデータファイル、コンシューマーのAvroデータファイルのマトリクス
• Snappy圧縮のあり/なし両方でテストを実行
• Flume output -> MapReduce, Streaming, Pig, Hive
• Sqoop output -> MapReduce, Streaming, Pig, Hive
• MapReduce output -> Sqoop, Streaming, Pig, Hive
• Streaming output -> MapReduce
• Pig output -> Sqoop, MapReduce, Streaming, Hive
• Hive output -> Sqoop, MapReduce, Streaming, Pig
CDHの品質保証: Cloudera Manager
l 幅広い構成範囲にわたって、インストールと機能性を自動テスト
l サポートする全OS上で、全DBバックエンドと共に、全ビルドに対してテストを実行