ビッグデータ処理基盤の成り立ちとApache Hadoop/Apache Bigtopへの取り組み
ビッグデータという言葉が注目を浴び始めてから10年以上が経過しましたが、多様なデータから価値を引き出すことは、企業活動にとってますます重要になっています。NTTデータはいち早くApache Hadoop(以下Hadoop)に関する取り組みと情報発信を始め、長年にわたってHadoopを活用したシステム開発/サービスを手がけてきました。
Hadoopは2006年に登場した、大規模データのための、オープンソースの並列分散処理基盤です。Google社が論文として発表した、検索サービスに利用された技術が元になっています。Hadoopそれ自体は分散ファイルシステムと、分散処理フレームワークを組み合わせたものですが、その上で動くSQL処理系や分散キーバリューストア、データ管理ツールなどの多種多様な周辺ミドルウェアが登場し、エコシステムが形成されました。今日では、ビッグデータ処理のための多様なクラウドサービスも提供されるようになりましたが、そのようなサービスを支える技術の一部としても、Hadoopエコシステムは活用されています。
エコシステムの多様性の広がりに応じて、複雑な依存関係をもつプロダクト間の互換性を保ちつつ、機能追加やバグ修正を継続的に行い、ソフトウェアを維持する難易度が上がっていきます。エンドユーザにとって、どのプロダクトのどのバージョンを使うべきか、自明ではなくなります。Apache Bigtop(以下Bigtop)は、Hadoopエコシステムのプロダクトから機能するバージョンの組み合わせを選定し、ビルドオプションやファイル配置を調整して、パッケージングする仕組みを提供する、オープンソースのプロジェクトです。
オープンソース活動とその意義
筆者を含むNTTデータの技術者は、オープンソースの活動に参画しています。開発者として活動しつつ、技術的な情報発信をすることで、関連製品を活用するため深い知見や、オープンソースを使うシステムを5年、10年という長期間にわたって維持するための当事者能力をアピールしています。
オープンソースといっても、ソースコードが公開され、ただ存在すれば役に立つわけではありません。問題の報告や要望を出し、コードやドキュメントの修正を提案するユーザ/開発者がいて、継続的に新しいバージョンがリリースされるような、コミュニティが維持されていることが重要です。手入れをせずに放置されたソフトウェアは、ビルドして動かすことができない状態になってしまいがちです。
筆者が開発者として活動しているHadoopやBigtopは、Apacheソフトウェア財団(Apache Software Foundation、以下ASF)と呼ばれる、非営利団体の傘下で活動しています。ASFは傘下のプロジェクトに対して、Webサイトやメーリングリストなどのインフラ、開発者個人に対する法的問題からの保護、ブランド/商標の維持などを提供しています。ASFが唱えるThe Apache Way(※1)は、プロジェクトとコミュニティを統治、運営するための指針です。特定の組織を代表しない、個人としての参加者同士が協調し、オープンな議論のもとでプロジェクトの意思決定を行うべきだと定めています。その指針を元に、メーリングリストを公式な記録とし(※2)、プロダクトのリリースなどに際しては、メーリングリスト上での投票による意思決定(※3)を行うルールが定められています。このような運営指針は、特定の個人や企業が主導する開発に比べて、スピード感に欠けることもありますが、異なるタイムゾーンから参加する開発者たちが、互いの多様性を尊重しつつ協調し、長期的にプロジェクトを維持する上で、機能していると感じます。
図:ASF参加で活動中のプロジェクト数の推移
ASFでは現在200以上のプロジェクトが活動していますが、そのすべてが活発というわけではありません。各プロジェクトの活動状況は定期的に報告され、活動のないプロジェクトは投票による意思決定を経て、Apache Attic(※4)と呼ばれるプロジェクトの管理下に移されます。プロジェクトのWebサイトには、Atticに移動した旨が記され、ソースコードリポジトリは読み込み専用となります。プロジェクトのリソースはそのまま保全され、それを望む開発者がいれば、プロジェクトを再開するためのプロセスも用意されています。開発者不足で停滞したにせよ、プロダクトが歴史的役目を終えたにせよ、プロジェクトの活動休止を明示することは、ユーザやコミュニティにとっても重要です。うまくいった場合も、そうでない場合も含めて事例や経験が豊富で、畳み方まで含めてプロセスが整備されているのは、ASF傘下で活動する意義のひとつです。
技術者育成としてのオープンソース活動
技術者育成の観点でも、オープンソースの活動は有意義です。ミドルウェアのバグ解析と修正パッチの作成を通して、規模の大きなソフトウェアのソースコードや変更履歴を読み解く術を学べます。また、修正パッチを投稿し、説明と議論をする過程で、技術的なコミュニケーションについての理解を深めることができます。オープンなコミュニティで交流し、所属企業の枠に閉じない評価や名声を得る機会であると捉えれば、オープンソースの開発は技術者にとって、モチベーションを高めやすい活動です。
NTTデータグループ向けの技術者育成施策「技統本塾」(※5)においても、日常的な業務でオープンソースに縁の薄い参加者にも、開発コミュニティへの参加体験をしてもらえるような、メニューを用意しています。
まとめ
NTTデータではApache Hadoopをはじめとして、さまざまなオープンソースの開発に参画し、オープンソース製品を商用システムに安心して導入できるよう、製品の継続的な修正と改善を行っています。これらのオープンソース活動から得られた知見と技術力をもとに、スケーラブルで使いやすいデータ活用基盤を提供し、お客さまがデータからさらなる価値を引き出すお手伝いができるよう取り組んでまいります。