ビッグ データとインテリジェント データ アプリケーション アーキテクチャ チュートリアル シリーズ: ビッグ データとクラウド コンピューティング

著者: 禅とコンピュータープログラミングの芸術

1. 背景の紹介

クラウド コンピューティングは現代の IT テクノロジの重要な部分です。ユーザーに柔軟性、弾力性、オンデマンドでの支払い機能を提供します。インターネットとモバイル インターネットの急速な発展に伴い、ますます多くの企業がクラウド コンピューティングに注目し始めています。このプラットフォームは、独自のビッグデータとインテリジェントな分析プラットフォームを構築するためのインフラストラクチャとして機能します。データ収集、データ保存、データ処理、データ分析など、ビッグデータのアプリケーションはクラウド コンピューティング プラットフォームの重要な部分になってきています。

従来、ビッグ データ アプリケーション アーキテクチャには次のような問題があることがよくありました。

  1. データ収集は難しく、さまざまなデータ ソース、標準化、一貫性などの複雑な要件を考慮する必要があります。
  2. データ ストレージは不便であり、大量のデータ、高次元、低遅延のデータには通常、分散ストレージ システムのサポートが必要です。
  3. データ処理が煩雑で、データ量が多すぎて複雑、高次元、多様であり、プログラミング言語を直接使用して高速かつ効率的な分析を実現することは不可能です。
  4. データ分析の結果はさまざまな統計モデルに依存しますが、モデリングプロセスには時間とコストがかかり、結果は不正確で信頼性が低くなります。
  5. データのセキュリティが低く、データが複数のサーバーに分散して保存されているため、データ漏洩が発生すると重大な結果につながる可能性があります。

これらの困難を解決するために、ビッグデータおよびクラウドコンピューティング業界は完全なソリューションシステムを形成しています。このシステムは 4 つの主要コンポーネントで構成されます。

  1. ビッグ データの収集、クリーニング、ストレージ、計算: 分散ファイル システム Hadoop、NoSQL データベース、検索エンジンなどを使用して、データの収集、クリーニング、ストレージ、計算 (リアルタイム計算など) を完了するためのビッグ データの基礎的なサポートを提供します。
  2. ビッグデータ分析と機械学習:人工ニューラルネットワークやランダムフォレストなどのビッグデータに基づく機械学習モデルは予測分析に使用され、ストリームコンピューティングフレームワークは大規模なデータのリアルタイム計算と分析に使用されます。データ。
  3. データ センター インフラストラクチャ: クラウド コンピューティング プラットフォームによって提供される、エラスティック コンピューティング、ストレージ、ネットワーク、その他のリソースなど、安価で信頼性が高く、拡張性の高いデータ センター サービスを利用します。
  4. ビッグデータのセキュリティと管理: データの暗号化、転送の高速化、アクセス制御、監査、コンプライアンスを通じてデータのセキュリティを確保し、商用ツールを使用して重要なデータのビッグデータ分析を実行し、違法なデータの流出や異常な動作などを追跡します。

2. 中心となる概念とつながり

2.1 Hadoopエコシステム

Apache Hadoop (AH) は、もともと Apache コミュニティから生まれた、オープンソースで完全に展開されたビッグ データ処理システムです。AH は、HDFS と MapReduce の 2 つの部分で構成されます。HDFS は、大量のデータを保存するために使用される分散ファイル システムであり、MapReduce は、大量のデータ分析タスクを実行するために使用される分散コンピューティング フレームワークです。HDFS はファイル システムであり、ストレージ システム内のデータは独立したブロックに分割され、多くのノードに保存されます。MapReduce は、HDFS に保存されたデータのシャーディング、並べ替え、フィルタリングなどの操作を担当し、データをさまざまなノードに分割して並列処理します。

Hadoop エコシステムには、Hadoop Common、HDFS、MapReduce、YARN、Hive、Pig、ZooKeeper などの複数のサブプロジェクトが含まれています。このうち、HDFS、MapReduce、YARNをHDFS+MapReduce+YARN(Hadoop 3)3点セットと呼びます。

2.2 NoSQLデータベース

NoSQL データベースは非リレーショナル データベースを指し、リレーショナル データベース RDBMS (リレーショナル データベース管理システム) と比較できます。RDBMS と比較して、NoSQL データベースは、急速な成長、異質性、多様性などのニーズを満たすために、構造化データと非構造化データを別々に保存します。現在、HBase、MongoDB、Couchbase など、さまざまな種類の NoSQL データベースがあります。

NoSQL データベースと従来の RDBMS の最大の違いは、NoSQL データベースは大量の半構造化データまたは非構造化データの保存に適しており、迅速にクエリを実行できることです。NoSQL データベースは通常、事前にテーブル構造を設計する必要がなく、インデックスを定義する必要もなく、インデックスを自動的に生成できます。したがって、拡張性が高く、回復力があり、使いやすいです。

NoSQL データベースは通常、データ セットの書き込み、クエリ、更新を処理するために使用されます。従来の RDBMS と比較すると、その利点は高速で安価であることですが、欠点は、ACID 特性 (原子性、一貫性、分離性、耐久性) を持たず、データの整合性、一貫性、可用性、永続性を確保するために追加のメカニズムが必要なことです。

2.3 検索エンジン

検索エンジンは、今日の情報技術分野に不可欠な部分です。検索エンジンは、検索語を通じて関連するドキュメントを見つけるテクノロジーです。現在、検索エンジンはインターネット分野において非常に重要なサポートシステムとなっており、その機能はユーザーが必要な情報を見つけるのに役立ちます。検索エンジンの機能は次の 2 種類に分類できます。

  1. インデックス機能:検索エンジンがWebページの内容に基づいて作成したキーワードのリストであるインデックスを作成し、検索エンジンが迅速に情報を取得できるようにします。
  2. 検索機能:検索エンジンは、ユーザーが入力した検索語を対応する検索文に変換し、検索エンジンサーバーに条件を満たすWebページの取得リクエストを送信します。

現在、Google 検索、Baidu 検索、Bing 検索など、さまざまな種類の検索エンジン製品が市場に出ています。検索エンジンは、関連情報を迅速に発見し、ユーザー エクスペリエンスを向上させることができるため、多くの企業にとって不可欠なサービスの 1 つでもあります。

2.4 ストリームコンピューティングフレームワーク

バッチ処理とも呼ばれるストリーミング計算は、時系列またはストリームの形式のデータに焦点を当てたリアルタイム コンピューティング方法です。ストリーム コンピューティングは通常、受信、処理、出力の 3 つの段階を経ます。

通常、ストリーム コンピューティング システムは、中央コントローラーと複数の作業ノードで構成され、中央コントローラーは主にデータの受信、処理、およびディスパッチを担当します。ワーク ノードはストリーム コンピューティング プラットフォームの中核部分であり、データ処理、集計、フィルタリング、ウィンドウ関数などを含むコンピューティング タスクの実行を担当します。ストリーム コンピューティングの特徴は、計算がデータ ストリームの形式で行われることです。つまり、システムが入力イベントを処理するたびに、出力イベントが生成されます。したがって、ストリーム コンピューティングは、株価、地理的変化、デバイスのセンサー データなどのリアルタイム データの処理に非常に適しています。

ストリーム コンピューティング フレームワークには通常、メッセージ キューと実行エンジンという 2 つの重要なコンポーネントがあります。メッセージ キューは、データ フローをバッファリングして保存し、特定のポリシーに従ってデータ フローの処理をスケジュールする役割を果たします。実行エンジンは、計算ロジックに従って入力データ ストリームをリアルタイムで処理する役割を果たします。ストリーム コンピューティング フレームワークはまだ開発段階にあり、市場には Apache Storm、Spark Streaming、Flink などのストリーム コンピューティング プラットフォームがあります。

2.5 クラウドコンピューティングプラットフォーム

クラウド コンピューティング プラットフォームは、ビッグ データとクラウド コンピューティング テクノロジの発展の成果であり、高度に仮想化された IT インフラストラクチャです。クラウド コンピューティング プラットフォームは、クラウド サービス プロバイダーの統合を通じて統合された展開および運用環境を提供し、ユーザーが独自のビジネスを迅速に展開、拡張、維持できるようにします。クラウド コンピューティング プラットフォームの主なコンポーネントには、サービスとしてのインフラストラクチャ (IaaS)、サービスとしてのソフトウェア (SaaS)、およびサービスとしてのプラットフォーム (PaaS) が含まれます。

IaaS レイヤーはコンピューティング リソースとネットワーク サービスを提供し、ユーザーがクラウドに仮想マシンを展開し、それらを柔軟に構成、拡張、移行できるようにします。SaaS レイヤーは、データベース、クラウド IT ツール、コラボレーション ソフトウェアなどのソフトウェア サービスを提供します。PaaS 層は、アプリケーション フレームワーク、ミドルウェア、クラスター管理などを含む開発環境と運用環境を提供します。

クラウド コンピューティング プラットフォームの利点は、IT 投資の削減、ハードウェア調達コストの節約、クラウド サービスのカスタマイズ機能の向上、IT サービスの効率の向上です。同時に、クラウド コンピューティング プラットフォームは、複雑な導入と運用の作業を簡素化し、運用および保守担当者による重複作業を減らし、費用と時間を節約することもできます。

3. コアアルゴリズムの原理、具体的な操作手順、数学モデルの公式の詳細な説明

3.1 データ収集

まず、データ収集の基本原則を理解する必要があります。一般に、データ収集は次の手順に分けることができます。

  1. データ収集ソースの選択: データ収集ソースを決定します。一般的に使用されるものには、ログ ファイル、プログラム インターフェイス、サードパーティ API などが含まれます。
  2. データ収集先の選択: データの最終的な保存場所を決定します。HDFS、リレーショナル データベース、NoSQL データベースなどを選択できます。
  3. データ収集頻度の設定: データ収集頻度を決定します。通常、データ収集頻度は、データのサイズ、データの特性、データ分析のニーズに応じて調整する必要があります。
  4. データ収集フレームワークの選択: Kafka、Flume、Sqoop などの適切なデータ収集フレームワークを選択します。
  5. データ収集プロセスを構成する: 上記の手順に従って、データ収集プロセスを構成し、データ収集作業を完了します。

ログ ファイルの収集には、通常、次の 2 つの収集モードがあります。

  1. ファイル ポーリング モード: このモードでは、データ収集システムはディスク上のログ ファイルを定期的にスキャンし、新しく追加されたファイルを一定の間隔で読み取り、データを収集します。
  2. ファイル プッシュ モード: このモードでは、データ収集システムは、監視ディレクトリを通じてログ ファイルの追加または変更をリアルタイムで監視し、ファイルが追加されると、データ収集が即座にトリガーされます。

Flume は、Apache でのオープンソースの分散ログ収集、集約、送信システムです。分散クラスターの能力を利用して、大量のデータを迅速に収集、集約、要約し、HDFS、HBase、Solr、MySQL などに保存します。Flumeは、高信頼性、高スループット、容易な拡張などの利点を持ち、ビッグデータのログ収集、送信、集約の鍵となる技術です。

3.2 データクリーニング

データ収集後の最初のステップはデータ クリーニングです。データクリーニングとは、元のデータからノイズ、データ外れ値、欠落データなどを除去し、その後の処理を容易にするために標準化されたデータ構造に変換することを指します。通常、データ クリーニングには次の手順が含まれます。

  1. データ形式の検証: XML、JSON などのデータ形式が正しいかどうかを確認します。
  2. データの有効性検証: データベース内に同じ名前のレコードが存在するかどうかを確認するなど、データが要件を満たしているかどうかを判断するためにデータの有効性を検証します。
  3. 欠損データの埋め込み: 欠損値をデフォルト値で埋めます。
  4. データ型変換: データを整数、文字列、浮動小数点数などの統一されたデータ型に変換します。
  5. データ変換ルール設定:文字、数字、漢字、特殊記号などの保持などのクリーニングルールを設定します。
  6. データのフォーマット: 日付時刻文字列をタイムスタンプに変換するなど、データをフォーマットします。
  7. データのアーカイブ: クリーンアップされたデータを HDFS、リレーショナル データベース、NoSQL データベースなどに保存するか、後の分析のためにレポートを生成します。

3.3 データストレージ

クリーンアップされたデータは通常、HDFS、リレーショナル データベース、NoSQL データベースなどに保存されます。HDFS は、Apache Hadoop プロジェクトの分散ファイル システムであり、高いフォールト トレランスと大容量のデータ ストレージを提供します。リレーショナル データベースと NoSQL データベースはどちらも、大量の構造化データと非構造化データを保存するために使用されるデータベースです。前者はリレーショナル モデル、後者は非リレーショナル モデルです。

データ ストレージはクエリに使用されるだけでなく、Hive や Impala などのクエリ エンジンを介した高パフォーマンスのデータ分析にも使用できます。Hive は、構造化データを HDFS にインポートし、SQL 言語を通じて高度な分析を実行できる、Hadoop ベースのオープン ソース データ ウェアハウス ツールです。Impala は Cloudera のオープンソース Hive クエリ エンジンで、MIMD (超並列マルチスレッド) コンピューティング モデルを使用してクエリ速度を向上させます。

3.4 データ処理

データ処理とは、ストレージ メディアからデータを抽出し、特定のデータ処理ルールまたはアルゴリズムを通じて価値のある情報に変換して保存することを指します。データ処理は大きくオフライン処理とリアルタイム処理に分けられます。

オフライン処理は主にバッチ処理とストリーム処理に分かれます。バッチ処理はすべてのデータを一度に処理することであり、通常はオフライン システムによって実行されます。ストリーム処理は、データの継続的なリアルタイム処理であり、それを処理するにはリアルタイム処理システムが必要です。

リアルタイム処理システムは通常、Storm、Spark Streaming、Flink などのストリーム コンピューティング フレームワークを使用します。リアルタイム処理システムは、収集されたリアルタイム データをストリーム コンピューティング フレームワークを通じて処理し、結果を HDFS、リレーショナル データベース、NoSQL データベースなどにリアルタイムで保存します。

データ処理アルゴリズムには、主に統計分析アルゴリズム、機械学習アルゴリズム、グラフ理論アルゴリズム、ソートアルゴリズムなどが含まれます。統計分析アルゴリズムには、平均、中央値、最頻値、分位数、最大値と最小値、標準偏差、分散、歪度、尖度、分散、変動係数、相関係数などが含まれます。機械学習アルゴリズムは、主に、デシジョン ツリー、ランダム フォレスト、GBDT などの分類や回帰などの予測分析タスクに使用されます。グラフ理論アルゴリズムは主にネットワーク分析、ソーシャルネットワーク分析などに使用されます。ソート アルゴリズムは、主にデータのソートに使用されます (バブル ソート、選択ソート、挿入ソート、ヒープ ソートなど)。

3.5 データ分析

データ分析とは、統計分析、チャート表示、データマイニング、機械学習、その他のデータの分析と処理を指し、より適切な意思決定をサポートします。データ分析の主なタスクには、データ探索、データ予測、データ レポートの生成、データの視覚化が含まれます。

データ探索(探索的データ分析)とは、データ間の関係の観察、統計分析、データモデリングなどにより、データを分析し、データの特徴、パターン、傾向、分布、構造をさまざまな角度から理解することを指します。データ探索はデータ サイエンスの重要な部分であり、データ アナリストがデータの背後にある内部の意味を理解するのに役立ちます。

データ予測 (予測分析) とは、過去のデータを使用してモデルをトレーニングし、将来のデータを予測して、現象の予測または予測を実現することを指します。予測分析は金融、保険、医療、交通などの分野で広く活用されています。

データ レポートの生成 (レポート作成と視覚化) とは、グラフや表などを使用してデータを表示し、データ結果に基づいて専門的な視覚的なレポートを生成することを指します。レポート生成を使用すると、データの分布、特性、パターンを深く理解し、正確な意思決定を行うことができます。

データの視覚化(ビジュアライゼーション)とは、過去の複雑な情報のデータを、チャートや画像などの直感的なさまざまな方法で視覚的に表現し、効果的な洞察、分析、意思決定のサポートを提供することを指します。

4. 具体的なコード例と詳細な説明

4.1 Sqoopコマンドの動作例

Sqoop は、Apache Foundation のオープンソース プロジェクトであり、リアルタイムのデータ同期、バッチ データのインポートおよびエクスポートなどを実現するために使用できる分散リレーショナル データベース ツールです。Sqoop コマンドを使用してデータをインポートおよびエクスポートできます。構文は次のとおりです。

sqoop import/export \
  -h <hive-server> \
  --hive-import \
  -m 1 \
  --table <table-name> \
  --columns "id, name" \
  --input-dir /user/hive/warehouse/<database-name>.<table-name>/ \
  --username hive \
  --password password 

コマンドパラメータの説明:

  1. import:データをインポート中であることを示します。
  2. -h:ハイブサーバーのアドレスを指定します。
  3. --hive-import: ハイブインポートコマンドを示します。
  4. -m: マップの数を指定します。
  5. --table: ハイブテーブル名を指定します。
  6. --columns: インポートされた列を指定します。
  7. --input-dir: インポートしたデータが配置されているディレクトリを指定します。
  8. --username:ユーザー名を指定します。
  9. --password:パスワードを指定します。

例: HDFS から Hive テーブル「mydb.mytable」のデータをインポートし、id 列と name 列のみをインポートするとします。次のコマンドを入力する必要があります。

sqoop import \
  -h myhivehost \
  --hive-import \
  -m 1 \
  --table mydb.mytable \
  --columns "id, name" \
  --input-dir /user/hdfs/data/ \
  --username user1 \
  --password passwd1

4.2 Hiveコマンドの操作例

Hive は、Hortonworks Data Platform (HDP) のオープンソース データ ウェアハウス ツールであり、構造化データまたは半構造化データのクエリに使用できます。Hive コマンドを使用して、Hive テーブル内のデータをクエリできます。構文は次のとおりです。

SELECT * FROM mydb.mytable;

コマンドパラメータの説明:

  1. SELECT:クエリコマンドを示します。
  2. *: すべての列をクエリすることを示します。
  3. FROM:データソースを示します。
  4. mydb.mytable: ハイブテーブル名を指定します。

例: ハイブ テーブル「mydb.mytable」があるとします。このテーブル内のすべてのデータをクエリするには、次のコマンドを入力します。

SELECT * FROM mydb.mytable;

Hive コマンドには他にも多くの用途がありますが、ここでは Hive テーブル内のデータをクエリする方法を示す例にすぎません。

5. 今後の開発動向と課題

クラウドコンピューティングの発展と発展に伴い、ビッグデータとクラウドコンピューティングは新たな発展段階を迎えます。クラウド コンピューティングの普及とビッグ データ アプリケーションの人気の高まりに伴い、ビッグ データ アプリケーションのアーキテクチャはますます複雑かつ効率的になると考えられており、将来的に検討する必要のある作業はまだ多くあります。

  1. データ レイク: データ レイクは、ビッグ データとクラウド コンピューティングの重要なコンポーネントです。データ レイクは、データの分析、処理、交換、共有のために特別に設計されたストレージおよび処理システムです。複数のサーバー、ディスク、ネットワーク、メモリなどで構成され、複数のソースからのデータを集約、整理、分析、処理して外部の業務システムに出力します。
  2. コンテナ化とマイクロサービス: コンテナ化とマイクロサービスは、クラウド コンピューティングにおけるもう 1 つの重要な開発方向です。コンテナ化とは、アプリケーションを軽量でデプロイ可能なイメージにパッケージ化することを指します。コンテナ化により、アプリケーションとその実行環境に弾力性、リソースの分離、および独立性を効果的に提供できます。マイクロサービスは、複雑なモノリシック アプリケーションを、それぞれが特定の機能を担当する一連の小さな自律サービスに分割するアーキテクチャ スタイルです。マイクロサービスにより、アプリケーションをよりモジュール化して堅牢かつスケーラブルにすることができます。
  3. AI とビッグデータ分析: ビッグデータ分析は、最も注目されている新興テクノロジーの 1 つです。AI は、インテリジェントな情報を処理するコンピューターの能力を指し、その開発は主にビッグデータと人工知能の組み合わせに依存しています。データマイニング、分析、予測などにビッグデータを活用することで、経済効果の向上、競争力の強化、社会生活の向上に貢献します。
  4. データの視覚化とインテリジェントな分析: データの視覚化とインテリジェントな分析は、ビッグ データ分析の重要な要素です。データ視覚化では、多次元データ チャート、地理空間視覚化、情報プッシュなどのさまざまな方法を使用して、データを理解しやすく使いやすいデータ情報に表現します。インテリジェント分析とは、データマイニング、機械学習、統計分析などの方法に基づいてデータを分析、予測、関連付けることを指します。これら 2 つの領域は、ビッグ データ分析の分野における基本的なトピックです。

6. 付録 よくある質問と回答

Q: ビッグ データ アプリケーション アーキテクチャとは何ですか? 回答: ビッグ データ アプリケーション アーキテクチャとは、クラウド コンピューティング、ビッグ データ、機械学習、ストリーム コンピューティング、その他のテクノロジを使用して、ビッグ データ アプリケーションの全体的なフレームワークとアーキテクチャを実現し、完全なソリューション システムを形成することを指します。

Q: ビッグ データ アプリケーション アーキテクチャが解決する必要がある問題は何ですか? 回答: ビッグ データ アプリケーション アーキテクチャが解決する必要がある問題は、ビッグ データ アプリケーションの全体的なニーズを満たし、ビッグ データ アプリケーションのパフォーマンス、信頼性、柔軟性を向上させる完全なビッグ データ プラットフォームを構築する方法です。主なソリューションには、データ収集、クリーニング、ストレージとコンピューティング、分析、視覚化、インテリジェント アプリケーションの 5 つのコア コンポーネントが含まれます。

Q: データ収集の原則、方法、プロセスは何ですか? 回答: データ収集の原則は、外部データ ソースからデータを取得することを指します。データ収集方法には、ファイル ポーリング、ファイル プッシュ、データ プル、ログ収集、データベース収集などが含まれます。このプロセスには、データ収集の構成、データのクリーニング、データの保存、データの分析、およびデータの表示が含まれます。

Q: データクリーニングの原理、方法、プロセスは何ですか? 回答: データ クリーニングの原則は、ノイズ、データの異常値、欠落データなどを除去し、その後の処理を容易にするために標準化されたデータ構造に変換することを指します。方法には、クリーニング ルールの設定、欠損値の埋め込み、データ型の変換、データの書式設定などが含まれます。このプロセスには、データ形式の検証、データの有効性検証、およびデータのクリーニングが含まれます。

Q: データストレージの原理、方法、プロセスは何ですか? 回答: データ ストレージの原理は、データ情報をクエリや使用が可能な形式に変換し、一部のストレージ メディアに保存することを指します。方法には、HDFS、NoSQL データベース、リレーショナル データベースなどが含まれます。このプロセスには、データのインポート、データ クリーニング、データ変換、データのアーカイブが含まれます。

Q: データ処理の原理、方法、プロセスは何ですか? 回答: データ処理の原理とは、ストレージ メディアからデータを抽出し、特定のデータ処理ルールまたはアルゴリズムを通じて価値のある情報に変換し、保存することを指します。方法には、オフライン処理、リアルタイム処理、およびデータ処理アルゴリズムが含まれます。このプロセスには、データのインポート、データ クリーニング、データ ストレージ、データ処理、データ分析、データ表示が含まれます。

Q: データ分析の原理、方法、プロセスは何ですか? 回答: データ分析の原理とは、統計分析、チャート表示、データマイニング、機械学習、その他のデータの分析と処理を指し、より良い意思決定のサポートを得ることができます。方法には、データ探索、データ予測、データレポート生成、データ視覚化などが含まれます。このプロセスには、データ探索、データ予測、データ レポートの生成、およびデータの視覚化が含まれます。

Q: Hadoop エコシステムとは何ですか? 回答: Hadoop エコシステムは、Apache Hadoop プロジェクトの一連のオープン ソース ソフトウェアを指します。Hadoop エコシステムには、Hadoop Common、HDFS、MapReduce、YARN、Hive、Pig、ZooKeeper などの複数のサブプロジェクトが含まれています。このうち、HDFS、MapReduce、YARNをHDFS+MapReduce+YARN(Hadoop 3)3点セットと呼びます。

Q: NoSQL データベースとは何ですか? 回答: NoSQL データベースは、構造化データと非構造化データを別々に保存する非リレーショナル データベースを指します。NoSQL データベースには通常、固定されたデータ モデルがなく、データはキーと値のペア、ドキュメント、グラフ、または列ファミリーの形式で保存されます。NoSQL データベースは、リレーショナル モデルに従わない非リレーショナル データベースです。つまり、固定されたテーブル構造に従ってデータを編成しません。NoSQL データベースは水平方向に拡張でき、ビッグ データの分野で急速に発展しているテクノロジーです。

おすすめ

転載: blog.csdn.net/universsky2015/article/details/133593781