Hadoopエコシステムの基本:パート1
Tricoreが最初に公開したもの:2017年7月10日
Apache™Hadoop®は、分散コンピューティング環境で大量のデータを処理するように設計された、オープンソースのJavaベースのフレームワークです。 DougCuttingとMikeCafarellaがHadoopを開発し、2005年にリリースされました。
コモディティハードウェア上に構築されたHadoopは、ハードウェア障害が一般的であるという基本的な前提に基づいて動作します。 Hadoopフレームワークはこれらの障害に対処します。
この2部構成のブログシリーズのパート1では、ビッグデータ、Hadoopecosystem、およびHadoopフレームワークのいくつかの主要コンポーネントについて説明します。
データはすべての組織にとって非常に重要であり、ビッグデータは貴重なビジネス洞察につながる可能性のある分析の新しい機会を切り開いています。 ビッグデータ 組織のストレージ容量と処理能力を超えたデータを指します。
ビッグデータは、ソーシャルネットワーク、閉回路テレビ(CCTV)カメラ、センサー、オンラインショッピングポータル、ホスピタリティデータ、グローバルポジショニングシステム(GPS)、自動車業界、および大量の情報を生成するその他のソースから発生する可能性があります。
ビッグデータには3つの主要な側面があり、そのすべてが途方もないペースで進んでいます。
-
ボリューム :ビッグデータの量は、ギガバイトからテラバイト、ペタバイトへと急速に増加しています。保存するには、大量のディスク容量が必要です。
-
速度 :ビッグデータは通常、データセンターに保存されます。ローカルワークステーションにデータを配信するには、高速データプロセッサが必要です。
-
バラエティ :データは、構造化、非構造化、または半構造化に大まかに分類できます。
ビッグデータは次の式でまとめることができます:
ビッグデータ=(ボリューム+速度+バラエティ)データ
次の画像は、これらの概念を視覚化したものです。
3V(音量、種類、速度)画像ソース:3V(ボリューム、バラエティ、速度)
Hadoopエコシステム
Hadoopエコシステムという用語 ApacheHadoopソフトウェアライブラリのさまざまなコンポーネントを指します。このエコシステムは、相互作用する一連の異なるモジュールで構成されています。これらのモジュールは、ビッグデータの処理に関連する固有の要件に対応するように設計された一連のツールとアクセサリを提供します。エコシステムには、以下で説明するHadoopフレームワークのコアコンポーネントを含むすべてのHadoopモジュールと、アドオンモジュールが含まれます。
Hadoopフレームワークのコンポーネント
Hadoopフレームワークには、次のコアコンポーネントが含まれています。
いくつかの異なる要素が組み合わされて、Hadoopでの分散ストレージが可能になります。
Hadoop分散ファイルシステム
Hadoopでは、分散ストレージはHadoop分散ファイルシステム(HDFS)と呼ばれます。このシステムは冗長ストレージを提供し、次の特徴があります。
-
コモディティハードウェアにデータを確実に保存するように設計されています。
-
ハードウェア障害を予期するように構築されています。
-
大きなファイルやバッチ挿入を対象としています。 (一度書いて、何度も読んでください。)
HBase
HBaseは、分散型の列指向のNoSQLデータベースです。 HBaseは、基盤となるストレージにHDFSを使用し、MapReduceを使用したバッチスタイルの計算とポイントクエリ(ランダム読み取り)の両方をサポートします。
HBaseは次のタスクも実行します:
-
大量のデータ(最大数十億行)を商品ハードウェアのクラスターの上に保存します。
-
ログ、ドキュメント、リアルタイムのアクティビティフィード、インポートされた生データを一括保存します。
-
Hadoopアプリケーションが使用するデータの読み取りと書き込みを一貫して実行します。
-
MapReducefunctionalityを使用してデータストアを集約または処理できるようにします。
-
分析と機械学習のためのデータプラットフォームを提供します。
HCatalog
HCatalogは、Hadoopのテーブルおよびストレージ管理レイヤーであり、Pig™、MapReduce、Hive™などのHadoopアプリケーションが、ファイルではなく表形式でデータを読み書きできるようにします。
また、次の機能も提供します。
-
Hadoopアプリケーションが使用するデータを保存するための一元化された場所。
-
シーケンスおよび反復されたHadoopプロセス用の再利用可能なデータストア。
-
リレーショナル抽象化でのデータストレージ。
-
メタデータ管理。
Hadoopは、分散処理を可能にするためにMapReduceとさらに別のリソースネゴシエーター(YARN)に依存しています。
MapReduce
MapReduceは、コモディティマシンの大規模なクラスターで実行される分散データ処理モデルおよび実行環境です。 MapReduceを使用すると、保存したデータからインサイトを作成できます。 MapReduceアルゴリズムを使用して、すべての操作をMap関数またはReduce関数に分解します。
MapReduceには次の利点があります。
-
大規模で異種のデータセットでの集計(カウント、並べ替え、フィルタリング)。
-
MapまたはReduceタスクのスケーラブルな並列処理。
-
分散タスクの実行。
YARNは、ApacheHadoopecosystemのクラスターおよびリソース管理レイヤーです。これは、第2世代のHadoopフレームワークの主な機能の1つです。
YARNは次の機能を提供します:
-
タスクに優先順位を付けるようにアプリケーションをスケジュールし、ビッグデータ分析システムを維持します。
-
より優れたアーキテクチャの一部として、YARNはデータを集約および並べ替えて、データ取得のための特定のクエリを実行します。
-
特定のアプリケーションにリソースを割り当て、他の種類のリソース監視タスクを管理するのに役立ちます。
Hadoopは、主にスケーラブルな機械学習アルゴリズムの作成に使用されるオープンソースプロジェクトであるApacheMahoutを介した機械学習をサポートしています。 Mahoutは、通常、バックグラウンドでHadoopインフラストラクチャを使用して実行され、大量のデータを管理するデータマイニングフレームワークです。
Mahoutは次の機能を提供します:
-
大量のデータに対してデータマイニングタスクを実行するためのすぐに使用できるフレームワーク。
-
Hadoop上に記述され、Mahoutが分散環境でうまく機能することを可能にするアルゴリズム。
-
大規模なデータセットの迅速な分析。
-
進化的プログラミングのための分散型適応度関数機能。行列ライブラリとベクトルライブラリも含まれています。
Oozieは、ジョブを管理するためのHadoopのシステムです。このワークフロースケジューラは、依存するジョブのワークフローを実行します。これにより、ユーザーは、Hadoopで並列および順次ジョブを実行するワークフローの有向非巡回グラフ(DAG)を作成できます。
Oozieは非常に柔軟性があります。ジョブを簡単に開始、停止、一時停止、および再実行できます。また、Oozieを使用すると、失敗したワークフローを非常に簡単に再実行できます。
Oozieはスケーラブルであり、Hadoopクラスター内の数千のワークフロー(それぞれが数十のジョブで構成される)のタイムリーな実行を管理できます。
開発者は、Hadoopでのスクリプト作成にApachePigを使用できます。スクリプトは、複雑なMapReducetransformationsを作成するために、SQLベースの言語と実行環境を使用します。 PigはPigLatinコーディング言語で記述されていますが、実行可能なMapReduceジョブに変換されます。 Pigを使用すると、ユーザーはJavaを使用して拡張関数またはユーザー定義関数(UDF)を作成することもできます。
Pigは次の機能も提供します:
-
HDFSの生データに対してExtract-Transform-Load(ETL)タスクと手順を実行するためのスクリプト環境。
-
複雑なMapReduce関数を作成および実行するためのSQLベースの言語。
-
大規模で異種のデータセットでのデータ処理、スティッチング、およびスキーマ化。
-
高レベルのデータフロー言語。
-
データ処理に集中できるようにする抽象化レイヤー。
HadoopとMapReduceフレームワークは、特に次世代シーケンス分析の分野で、バイオインフォマティクスコミュニティにすでにかなりのユーザーベースを持っています。この分野での人気の理由の1つは、堅牢でフォールトトレラントなHDFSです。
HBaseは、HDFSファイルシステム上に構築された分散型のフォールトトレラントでスケーラブルなデータベースを追加し、データへのランダムなリアルタイムの読み取りおよび書き込みアクセスを提供します。スケーラブルなマシン学習ライブラリを構築する場合はMahoutを、バッチの場合はPigを確認することもできます。データを処理しています。
このシリーズのパート2では、Hadoopエコシステムのその他のコンポーネントについて説明します。
[フィードバック]タブを使用して、コメントを書き込んだり、質問したりします。
-
ビッグ データに最適なプログラミング言語 – パート 1
ビッグデータに関する前回のブログでは、機能アーキテクチャの 8 つのレイヤーであるデータ統合ツールについて説明しました。このブログでは、機能層アーキテクチャの第 9 層を形成するデータ言語をリストします。 現在、ビッグ データ プロジェクトは、大小を問わずすべての業界で一般的になっています。すべての業界が、ビッグ データが提供するすべての洞察を活用しようとしています。どんなに高度な GUI ベースのソフトウェアを開発しても、コンピュータ プログラミングはすべての中核です。ツールの種類に関する以前のブログが、貴社のビッグ データ オーガニゼーションの計画に役立つことを願っています。しかし、レイヤ
-
ビッグ データに最適なプログラミング言語 – パート 2
データ サイエンスに最適なプログラミング言語に関するブログの最初の部分では、7 つの言語について説明しました。それらには、ビッグデータを扱う最大の人々によって使用されている言語が含まれていました. このブログでは、最初の部分のプログラミング言語に関する新規参入者で構成されるリストの残りの半分をリストしています。その中には、Java、Hadoop、R、SQL と同様に人気を博したものもあれば、それらが提供する優れた機能により、市場で注目すべき地位を築いたものもあります。 データ サイエンス用プログラミング言語のリスト: 1.パイソン – Python は、ビッグ データに必要な大規模で複雑なデ