DUICUO

ビッグデータプラットフォームに共通するオープンソースツール

ビッグデータプラットフォームとは、膨大な量の構造化データ、非構造化データ、半構造化データを収集、保存、計算、統計分析、処理するための一連のテクノロジープラットフォームです。ビッグデータプラットフォームで処理されるデータ量は、通常テラバイト(TB)レベル、さらにはペタバイト(PB)やエクサバイト(EB)レベルに達し、従来のデータウェアハウスツールの能力をはるかに超えています。ビッグデータプラットフォームには、分散コンピューティング、高並列処理、高可用性処理、クラスタリング、リアルタイムコンピューティングといったテクノロジーが組み込まれており、現在のIT分野で広く普及している様々なテクノロジーが結集しています。

この記事では、ビッグデータ プラットフォーム用の一般的なオープンソース ツールをいくつかまとめ、主な機能別に分類して、ビッグデータの学習者やユーザーがすぐに見つけて参照できるようにします。

ビッグデータプラットフォーム用の共通ツールのコレクション

主なツールには、言語ツール、データ収集ツール、ETLツール、データストレージツール、分析・計算ツール、クエリアプリケーション、運用・保守監視ツールが含まれます。各ツールについて簡単に説明します。

I. 言語ツール

1. Javaプログラミング技術

Javaプログラミングは、最も広く使用されているネットワークプログラミング言語の1つであり、ビッグデータ学習の基礎となります。Javaは、シンプルさ、オブジェクト指向プログラミング、分散コンピューティング、堅牢性、セキュリティ、プラットフォーム非依存と移植性、マルチスレッド、ダイナミズムを特徴としています。非常に高いクロスプラットフォーム機能を誇り、強く型付けされた言語であり、デスクトップアプリケーション、Webアプリケーション、分散システム、組み込みシステムアプリケーションの作成に使用できます。ビッグデータエンジニアに人気のプログラミングツールです。最も重要なのは、Hadoopをはじめとする多くのビッグデータ処理技術がJavaを使用していることです。したがって、ビッグデータを効果的に学習するには、Javaの基礎を習得することが不可欠です。

2. Linuxコマンド

ビッグデータ開発は通常、Linux環境で行われます。Linuxオペレーティングシステムと比較すると、Windowsオペレーティングシステムはクローズドなオペレーティングシステムであり、オープンソースのビッグデータソフトウェアは非常に限られています。そのため、ビッグデータ開発に携わる場合は、Linuxの基本的な操作コマンドも習得する必要があります。

3. スカラ

Scalaは、Javaの強力なプラットフォームを維持しながら、様々な言語の優れた機能を吸収・継承するマルチパラダイムプログラミング言語です。ビッグデータ開発の重要なフレームワークであるSparkは、Scalaを使用して設計されています。Sparkを使いこなすには、Scalaの基礎知識が不可欠です。したがって、ビッグデータ開発には、Scalaプログラミングの基礎をしっかりと理解することが不可欠です。

4. Pythonとデータ分析

Pythonは豊富なライブラリを備えたオブジェクト指向プログラミング言語です。使いやすく、ビッグデータ分野を含む幅広い分野で応用可能です。主にデータの取得、分析、可視化に使用されます。そのため、ビッグデータ開発にはPythonの知識をある程度習得することが不可欠です。

II. データ収集ツール

  • 1) NutchはオープンソースのJavaベースの検索エンジンです。全文検索やウェブクロールなど、独自の検索エンジンを実行するために必要なすべてのツールを提供します。
  • 2) Scrapyは、ウェブサイトのデータをクロールし、構造化データを抽出するために設計されたアプリケーションフレームワークです。データマイニング、情報処理、履歴データの保存など、幅広いプログラムで使用できます。大規模なデータセットを収集するには、NutchとScrapyのウェブクローリング技術を習得することが不可欠です。

III. ETLツール

1. スクープ

Sqoopは、Hadoopとリレーショナルデータベースサーバー間でデータを転送するためのツールです。リレーショナルデータベース(MySQLやOracleなど)からHadoop HDFSへのデータのインポート、およびHadoopファイルシステムからリレーショナルデータベースへのデータのエクスポートに使用されます。Sqoopの使い方を習得することは、リレーショナルデータベースとHadoop間のデータインポートに非常に役立ちます。

2. ケトル

Kettleは、異なるデータベースからデータを管理できるETLツールセットです。グラフィカルなユーザー環境を提供し、どのように実行したいかではなく、何を実行したいかを記述できます。Pentahoの重要なコンポーネントとして、国内のプロジェクトでの利用が拡大しています。データ抽出は効率的かつ安定しています。

4種類のデータ保存ツール

1. Hadoop 分散ストレージとコンピューティング

Hadoopは分散ファイルシステム(Hadoop Distributed File System、略してHDFS)を実装しています。Hadoopフレームワークの中核設計は、HDFSとMapReduceで構成されています。HDFSは膨大なデータの保存を提供し、MapReduceは膨大なデータの計算処理を提供するため、どちらも習得が不可欠です。さらに、Hadoopクラスター、Hadoopクラスター管理、YARN、高度なHadoop管理といった関連技術と操作についても習得が必要です。

2. ハイブ

HiveはHadoopをベースとしたデータウェアハウスツールです。構造化データファイルをデータベーステーブルにマッピングし、シンプルなSQLクエリ機能を提供します。SQL文をMapReduceタスクに変換して実行できます。Javaコードで記述されたMapReduceと比較して、Hiveは開発期間の短縮、人件費の削減、スケーラビリティ(クラスタサイズを自由に拡張可能)、拡張性(ユーザー定義関数のサポート)といった大きな利点を備えています。データウェアハウスにおける統計分析に非常に適しています。Hiveを効果的に習得するには、インストール、適用、そして高度な操作を習得する必要があります。

3. 動物園飼育員

ZooKeeperはオープンソースの分散調整サービスであり、HadoopおよびHBaseの重要なコンポーネントです。分散アプリケーションの一貫性サービスを提供するソフトウェアであり、構成管理、ドメイン名サービス、分散同期、コンポーネントサービスなどの機能を備えています。ビッグデータ開発においては、ZooKeeperの機能を利用するための一般的なコマンドと実装方法を習得することが不可欠です。

4. HBase

HBaseは、分散型の列指向オープンソースデータベースです。一般的なリレーショナルデータベースとは異なり、非構造化データの保存に適しています。HBaseは、信頼性、パフォーマンス、拡張性に優れた列指向の分散ストレージシステムです。ビッグデータ開発には、HBaseの基礎知識、アプリケーション、アーキテクチャ、そして高度な使用方法を習得する必要があります。

5. レディス

Redisは、Memcachedのようなキー/バリューストアの欠点を大幅に補うキー/バリューストレージシステムです。場合によっては、リレーショナルデータベースの優れた補助として機能します。Java、C/C++、C#、PHP、JavaScript、Perl、Objective-C、Python、Ruby、Erlangなどの言語に対応したクライアントを提供しており、非常に便利です。ビッグデータ開発者は、Redisのインストール、設定、使用方法を習得する必要があります。

6. カフカ

Kafkaは、高スループットの分散型パブリッシュ・サブスクライブ型メッセージングシステムです。ビッグデータ開発におけるKafkaの目的は、Hadoopの並列ロードメカニズムを通じてオンラインとオフラインのメッセージ処理を統合し、クラスタリングによってリアルタイムメッセージングを提供することです。ビッグデータ開発には、Kafkaのアーキテクチャ原理、コンポーネントの役割と使用方法、そして関連機能の実装を深く理解する必要があります。

7. ネオ4j

Neo4jは、数百万、テラバイト規模のノードとエッジを持つ大規模ネットワーク分析に対応できる高性能NoSQLグラフデータベースです。完全なトランザクション機能を備えた組み込み型のディスクベースのJava永続化エンジンですが、テーブルではなくネットワーク(数学的にはグラフと呼ばれます)上に構造化されたデータを保存します。Neo4jは、組み込み型であること、高いパフォーマンス、軽量設計により、ますます注目を集めています。

8. カサンドラ

Cassandraは、GoogleのBigTableに似たハイブリッドNoSQLデータベースで、Dynamo(分散型キーバリューストア)よりも豊富な機能を備えています。Facebookによって開発されたこのNoSQLデータベースは、現在ではApple、CERN、Comcast、eBay、GitHub、GoDaddy、Hulu、Instagram、Intuit、Netflix、Redditなど、1,500以上の企業や組織で利用されています。Cassandraは、人気の高い分散型構造化データストレージソリューションです。

9. SSM

SSMフレームワークは、Spring、Spring MVC、MyBatisという3つのオープンソースフレームワークを統合したものです。比較的シンプルなデータソースを扱うWebプロジェクトのフレームワークとしてよく使用されます。ビッグデータ開発では、SSMを使用して統合を行う前に、Spring、Spring MVC、MyBatisの3つのフレームワークをそれぞれ習得する必要があります。

V. 分析および計算ツール

1. スパーク

Sparkは、大規模データ処理向けに設計された高速で汎用的なコンピューティングエンジンです。様々な種類のデータセットやデータソースを用いたビッグデータ処理のニーズに対応するための、包括的かつ統合的なフレームワークを提供します。ビッグデータ開発には、Sparkの基礎、SparkJob、Spark RDDのデプロイとリソース割り当て、Spark Shuffle、Sparkメモリ管理、Sparkブロードキャスト変数、Spark SQL、Spark Streaming、Spark MLの習得が必要です。

2. 嵐

Stormは、無料のオープンソースソフトウェアであり、分散型でフォールトトレラントなリアルタイムコンピューティングシステムです。大規模なデータストリームを確実に処理し、特にHadoopにおけるバッチデータの処理に最適です。Stormは多くのプログラミング言語をサポートし、リアルタイム分析、オンライン機械学習、中断のないコンピューティング、分散RPC(リモートプロシージャコールプロトコル、ネットワーク経由でリモートコンピュータプログラムにサービスを要求するためのプロトコル)、ETLなど、幅広い応用分野があります。Stormの処理速度は驚異的で、テストでは各ノードが1秒あたり100万データタプルを処理できることが示されています。

3. マハウト

Mahoutは、「スケーラブルで高性能な機械学習アプリケーションを迅速に構築するための環境を構築する」ことを目指しています。主な機能には、スケーラブルなアルゴリズムのためのスケーラブルな環境、Scala/Spark/H2O/Flink向けの新しいアルゴリズム、Samsara(Rに似たベクトル数学環境)、そしてMapReduce上のデータマイニングのための多数のアルゴリズムが含まれます。

4. ペンタホ

Pentahoは、人気の高いオープンソースのビジネスインテリジェンスソフトウェアスイートです。ワークフローを重視し、ツールコンポーネントよりもソリューションを重視したJavaベースのBIプラットフォームです。Webサーバープラットフォームと、レポート作成、分析、チャート作成、データ統合、データマイニングなど、ビジネスインテリジェンスのほぼすべての側面を網羅する複数のソフトウェアツールが含まれています。PentahoのツールはNoSQLデータベースに接続できます。ビッグデータ開発には、その使い方を理解することが不可欠です。

5. ホーク

HAWQはHadoopのネイティブSQLクエリエンジンであり、標準に準拠した完全なSQLインターフェースをユーザーに提供します。データはHDFSに保存され、分散的に実行されます。ペタバイトレベル以上のデータに対するクエリが可能で、高いクエリパフォーマンス、低レイテンシ、高可用性を実現しているため、OLAP分析に最適です。

VI. クエリアプリケーションツール

1. AvroとProtobuf

AvroとProtobufはどちらもデータシリアル化システムであり、豊富なデータ構造タイプを提供するため、データストレージに最適です。また、異なる言語間の通信におけるデータ交換形式としても機能します。ビッグデータを理解するには、それぞれの具体的な使い方を習得することが不可欠です。

2. フェニックスx

Phoenixは、Javaで記述されたオープンソースのSQLエンジンで、JDBC APIを使用してHBase上で動作します。動的列、ハッシュロード、クエリサーバー、トレース、トランザクション、ユーザー定義関数、セカンダリインデックス、名前空間マッピング、データ収集、タイムスタンプ列、ページネーションクエリ、スキップクエリ、ビュー、マルチテナントなどの機能を備えています。ビッグデータ開発者は、Phoenixの原理と使用方法を習得する必要があります。

3. キリン

Kylinは、Hadoopベースの非常に大規模なデータセット(テラバイト/ペタバイトレベル)を扱うためのSQLインターフェースと、多次元OLAP分散オンライン分析を提供するオープンソースの分散分析エンジンです。eBayによって開発され、オープンソースコミュニティに貢献したKylinは、膨大なHiveテーブルを数秒未満でクエリできます。

4. ツェッペリン

Zeppelinは、インタラクティブなデータ分析機能を提供するWebベースのノートブックです。美しくデザインされ、データ駆動型でインタラクティブかつ共同作業可能なドキュメントの作成を支援し、Scala(Apache Sparkを使用)、Python(Apache Spark)、SparkSQL、Hive、Markdown、Shellなど、複数の言語をサポートしています。

5. エラスティックサーチ

ElasticsearchはLuceneをベースとした検索サーバーです。RESTful Webインターフェースをベースとした、分散型、マルチユーザー対応の全文検索エンジンを提供します。Javaで開発され、Apacheライセンスの下でオープンソースとして公開されているElasticsearchは、人気の高いエンタープライズグレードの検索エンジンです。クラウドコンピューティング向けに設計されており、リアルタイム検索、安定性、信頼性、高速性、そしてインストールと操作の容易さを特長としています。

6. ソル

Apache Luceneをベースに構築されたSolrは、信頼性と拡張性に優れたエンタープライズ検索プラットフォームであり、優れた全文検索エンジンです。eHarmony、Sears、StubHub、Zappos、Best Buy、AT&T、Instagram、Netflix、Bloomberg、Travelocityなどが主要なユーザーです。ビッグデータ開発には、Solrの基本原理と使用方法を理解することが不可欠です。

VII. データ管理ツール

1. アズカバン

Azkabanは、LinkedInが開発したオープンソースのバッチワークフロータスクスケジューラです。Azkaban Web Server(管理サーバー)、Azkaban Executor Server(実行マネージャー)、MySQL(リレーショナルデータベース)の3つの部分で構成されています。ワークフロー内で、一連のジョブとプロセスを特定の順序で実行できます。Azkabanは、ビッグデータ用のタスクのスケジューリングにも使用できます。ビッグデータ開発者は、Azkabanの関連する設定と構文ルールを習得する必要があります。

2. メソス

Mesosは、カリフォルニア大学バークレー校のAMPLabによって初めて開発されたオープンソースのクラスタ管理ソフトウェアです。Hadoop、Elasticsearch、Spark、Storm、Kafkaなどのアーキテクチャをサポートしています。データセンターでは、CPU、メモリ、ストレージなどのコンピューティングリソースを物理マシンまたは仮想マシンから抽象化し、単一のリソースプールとして機能します。これにより、フォールトトレラントで復元力のある分散システムを容易に構築し、効率的に運用できます。

3. セントリー

Sentryは、Webフロントエンドとバックエンド、モバイルアプリケーション、ゲームをサポートするオープンソースのリアルタイムエラーレポートツールです。Python、Objective-C、Java、Go、Node、Django、RoRなどの主要なプログラミング言語とフレームワークをサポートし、GitHub、Slack、Trelloなどの一般的な開発ツールとの統合も提供します。Sentryの活用は、データセキュリティ管理に非常に役立ちます。

VIII. 運用・保守監視ツール

Flume は、大量のログを収集、集約、送信するための、高可用性と高信頼性を備えた分散システムです。Flume は、ログシステム内の様々なデータ送信元をカスタマイズしてデータ収集をサポートすると同時に、シンプルなデータ処理を実行し、様々なカスタマイズ可能なデータ受信元に書き込む機能も提供します。ビッグデータ開発者は、Flume のインストール、設定、および関連する使用方法を習得する必要があります。