1.Hadoop概要
Hadoopの1.1について
Hadoopの開発の歴史1.2
1.3 Hadoopの機能
2.Hadoopコア
2.1分散ファイルシステム--HDFS
分散コンピューティングフレームワーク--MapReduce 2.2
2.3クラスタリソースマネージャ--YARN
3.Hadoop生態系
4.Hadoopシナリオ
5.まとめ
A、Hadoopの導入
1.Hadoop概要
2つのコア:HDFSとMapReduceの
リソースおよびタスクスケジューリングのためのフレームワーク:YARN
Hadoopの1.1について
Hadoopのは、Apache財団が開発され、分散システム基盤を。ユーザーは、分散アプリケーションの開発の基礎となる詳細を知らなくても分散することができます。高速コンピューティングとストレージのクラスタのパワーをフルに活用してください。その目的は、各マシンは、ローカルコンピューティングおよびストレージを提供するために、クラスタが複数のマシンに展開され、マシンの数千に単一サーバから延びるように、バックアップデータがそれによってクラスタを向上させる、複数のノードに格納されていますマシンがダウンしたとき、他のノードがまだバックアップデータおよびコンピューティングサービスを提供することが可能ではなく、ハードウェアのアップグレードによって、より可用性、、、フレームワークのコアは、HDFSとHadoopのMapReduceのに設計されています。
Hadoopの開発の1.2史(Baiduの百科事典から転送)
Hadoopのは、パッケージと呼ばれるGoogleのMapReduceのプログラミングモデル出身でした。計算ノードの大規模な数が非常に大規模なデータセットを実行している間で、GoogleのMapReduceのフレームワークは、多くの並列命令コンピューティングにアプリケーションを置くことができます。フレームの検索アルゴリズムを使用しての典型的な例は、ネットワークデータ上で実行されます。サイトマップのHadoopと関連は当初、急速にビッグデータを分析するための主要なプラットフォームへと発展しました。
多くの企業がHadoopのベースのビジネスソフトウェア、サポート、サービスおよびトレーニングを提供し始めています。Clouderaのは、2008年にHadoopのベースのソフトウェアおよびサービスを提供し始めた米国ベースの企業向けソフトウェア会社です。GoGridは2012年に、同社は、HadoopのベースのアプリケーションのClouderaの企業の採用との協力のペースを加速し、クラウドコンピューティングインフラストラクチャ企業です。Dataguiseも2012年に、同社は、Hadoopのためのソフトウェアのデータ保護とリスクアセスメントを導入し、データセキュリティ企業です。
1.3 Hadoopの機能
Hadoopのが簡単にユーザを可能にし、分散コンピューティングプラットフォームを使用するフレームワークです。ユーザーが簡単にHadoopで大量のデータを扱うアプリケーションを開発し、実行することができます。その利点は、主に次のようにあります:
(1)高信頼性:それは仕事へのデータの複数のコピーを維持するように計算し、記憶素子は、失敗する可能性と仮定するので、確実にその故障したノードの再分配プロセス。
(2)高いスケーラビリティ:クラスタノードが容易にクラスタを拡張するために拡張することができます。
(3)効率:Hadoopのは、ノード、並列処理のデータノード間でデータを移動し、各ノードの動的なバランスを確保するために動的であるので、処理速度が非常に高速です。
(4)高い耐障害性:HDFSはバックアップコピー、複数のマシンまたはストアファイルに複数のノード上にファイルを格納スムーズにプログラムの実行を確保するためにします。タスクが失敗し始めた場合、Hadoopのは、このタスクの一部が完了していないタスクを再実行するか、完全に他のタスクを可能にします。
(5)低コスト:Hadoopのは、オープンソースです。
(6)は、安価なマシン上に構築することができ、基本的なフレームワークは、Hadoopのジャワを用意します。
2.Hadoopコア
2.1分散ファイルシステム--HDFS(Hadoopの分散ファイルシステム)
2.1.1 HDFSアーキテクチャと紹介
HDFSは、ストレージのための分散ファイルシステムでデータ記憶および検索のクラスタの主な原因です。HDFSは、マスター/スレーブ(マスタ/スレーブ)アーキテクチャ分散ファイルシステム。HDFSは、従来の階層型ファイル構造の組織をサポートし、ユーザーまたはアプリケーションがディレクトリを作成することができ、その後、これらのディレクトリ内のファイルの保存作成したファイルへのファイルパスを介して行うことができ、読み取り、更新、または削除操作。しかし、分散ストレージの性質により、彼は従来のファイルシステムを持っている大幅に異なっています。
HDFSの基本的なアーキテクチャ図:
HDFSファイルシステムは名前ノード、セカンダリ名前ノードとより多くのデータノードを含んでいます。
(1)メタデータ(メタデータ)
メタデータは重要三つの部分があり、ファイルの具体的な内容ではありません:①ファイルやディレクトリ、ファイル名、ディレクトリ名、親ディレクトリ情報、ファイルサイズ、作成時刻、変更時刻などの属性は、;関連②記録ファイルに格納されたコンテンツこのようなファイルブロック、コピーの数、位置、各コピー情報データノードなどの情報、;③データノードを管理するためのすべての情報HDFSデータノードを記録します
(2)名前ノード
メタデータを格納するための名前ノード、およびクライアントから送信された処理要求。ファイルに格納されたメタ情報は、名前ノードのfsimageファイルです。システム動作中、すべての操作は、メモリと永続ストレージに格納されたメタデータになり名前ノードが開始したとき、fsimageはのメモリとデータメモリにロードされ、別のファイルの編集(ログ)でありますデータ・メモリは、日付を予約することを確実にするために、記録された操作の編集を行います。
(3)二次名前ノード
データバックアップの名前ノードのためのセカンダリ名前ノードは定期的に編集ローカルファイルへのファイルと新しいfsimageの名前ノード、置換元fsimageを格納するファイルfsimageサブマージされ、ファイルの編集を削除。新しい編集が動作状態を変更し、ファイルを保存し続けて作成します。
(4)データノード
データノードは、本当にデータを格納する場所です。データノードでは、ファイルは、データ・ブロックの形式で格納されます。データファイルHDFSにブロック128MBのファイルの終わりがカットされます場合は、各データブロックは、三つの一般的デフォルト、情報ファイルのブロックを記録するための責任が名前ノード、ことを確実にするために、同一または異なって、データノードのバックアップコピーに保存されていますあなたが見つけて、ファイルの読み取り中にブロック全体を統合することができます。
(5)データブロック(ブロック)
デフォルトのファイルのブロックサイズにアップロードHDFSファイルには、データ・ブロックに応じてファイルシステムに分割されています。128メガバイトまでのHadoop 2.xのデフォルトは、ストレージ・サイズなどのデータブロックは、129メガバイトのファイルであり、2つのブロックに分割されるが保存しました。データブロックは、各データブロックのバックアップコピーなり、各ノードに格納されます。
2.1.2 HDFS分散原則
分散システムとは何ですか?システムは、モジュール又は複数のサブシステムに分配され、それぞれは、最終的な全体的な機能を達成するために協力して、ネットワークを介して通信サブシステムまたはモジュール間、別のマシン上で実行されています。システムの一つ以上の特定のビジネス機能が分散システムで完了するために一緒に動作するように複数のノードを使用してください。
分散ファイルシステムは、その問題を解決するために、分散システムのサブセットであるデータ記憶装置です。換言すれば、複数のコンピュータ上のストレージ・システム間です。分散ファイルに格納されたデータは、自動的に別のノードに分散さ。
主に次の三つの側面における分散ファイルシステムとしてHDFS:
(1)HDFSは、クラスタの複数のノードに分散ファイルシステムは、スタンドアローンのファイルシステムではありません。各ユーザがファイルシステムを見ることができるように、ノード間のネットワーク通信を介して共同作業は、ノードは、複数のファイル情報を提供します。複数のマシン上で複数のユーザーがファイルやストレージスペースを共有することができます。
ファイルが分散された複数のノードに格納されている場合(2)、概念は、本明細書のデータ・ブロック、格納されていないことにより、データ・ストレージ・ファイルに関連するが、1つの以上のデータブロックにファイルが格納されています。データブロックを格納する場合、ノード上に格納されていないが、各ノードに分散して格納され、データ・ブロックのコピーが別のノードに格納されています。
(3)データは、複数のノードから読み取ら。ファイルを読み取るときに、複数のノードは、最後のデータ・ブロックが読み込まれるまで、すべてのデータブロックの分布を読み取り、ファイルからデータのブロックを検索します。
プロセスダウン2.1.3 HDFS
ノードがダウンした場合、ファイルシステムに保存されたデータは、それが原因のデータ損失に簡単で、HDFSは、この問題に対する保護を提供します。
(1)冗長性
各データブロックのデータ保存中にコピーの数が独自に設定することができ、冗長な処理を行っています。
(2)堆積物のコピー
戦略用途:dfs.replicationの例は、それぞれのバックアップ・コピーの同じマシン上の2つのノードが、その後、別のマシン上のノードにコピーを置く、前者は、ノードがダウンし、後者を防ぐためですマシン全体のダウンタイムは、データの損失を防ぐためです。
(3)加工ダウン
①DataNodeは、定期的に(一度デフォルト3S)を名前ノードにハートビート情報を送信します。名前ノードは、所定の時間(デフォルト10分)内にハートビートメッセージを受信しない場合、彼はデータノードの問題を思うだろう、彼はクラスタから削除されます。HDFSは、その後、必要に応じ、その後部数が予め設定された要件を達成するために必要なデータ・ブロックのコピーを作成するための要件を満たしていないほどのハードディスク上のデータ・ブロックのコピー数を検出します。データノードは、ハードウェアの故障、マザーボードの故障、停電やクラスタネットワークを老化や葉の他の問題に起因する可能性があります。
ノードがダウンしている場合②ときHDFSはブロックが読んで、他のデータのストレージノードに、クライアントのデータのブロックを読み取るために、HDFSはまた、再充填の要件を満たしていないデータブロックのコピー数を検出し、完全コピー。
ノードがダウンした場合HDFSストアデータが格納される場合③、ノードHDFSは、再度データノードダウン、データブロックに再割り当て。
2.1.4 HDFSの機能
(1)の利点:
高いストリーミングデータアクセスを処理する大規模なデータのフォールトトレランス(追記、多くのを読んで、書かれて一度ファイル、唯一の増加を変更することはできません、それはデータの一貫性を保証することができます)
(2)短所:
低遅延のデータアクセスには適していません、効率的に(、書き込み操作は、ファイルの末尾にのみを行うことができる唯一の追加の操作を行うことができます)、それはマルチユーザーの書き込みをサポートし、任意のファイルを変更しない、小さなファイルを大量に保存することができません
分散コンピューティングフレームワーク--MapReduce 2.2
2.2.1 MapReduceの紹介
MapReduceはマップ(マッピング)を含む、並列計算モデルをプログラムする大規模なデータセット(1TBよりも大きい)ため、Hadoopのコアコンピューティングフレームワークであり、2つの部分で(還元)を減らします。タスクのMapReduceを開始すると、地図の端末はHDFS上のデータを読み込みます、データはタイプのために必要と終わりを削減するために渡されたキーの値にマッピングされています。キーの各グループは、同じデータをHDFSに新しいキーと値のペアと出力を得るために処理されたパケットに応じて、キータイプを介して送信されるデータを受信するマップ側端子を減らす、この核となるアイデアは、MapReduceのです。
2.2.2 MapReduceの作品
(1)MapReduceの実行フロー(入力、スライス、地図データ処理フェーズ、データ処理の削減ステージ、データ出力位相)
ステージについてエンファシストークを低減:複数持つことができますタスクを削減し、(キーデータパーティショニングのタイプの)データパーティションの決定地図ステージセットに従って、パーティションが削減データ処理です。各タスクについて、削減削減地図タスクから別のデータを受信し、各くる地図データが発注されます。プロセスがタスクを削減するたびにHDFSへのすべてのキーデータ、データ削減、新しいキーと値のペアの出力も同じです。
(2)のMapReduceの自然:
マップを理解し、プロセスを減らすために、小さな例を助けるために(3):
2.3クラスタリソースマネージャ--YARN
はじめに2.3.1 YARN
糸はより一般的なリソース管理と分散アプリケーションフレームワークを提供し、目的は、Hadoopのデータ処理能力を作ることです。このフレームワークでは、ユーザーがニーズに合わせてカスタマイズされたアプリケーションをデータ処理を実現することができます。MapReduceはまたYARN上のアプリケーションです。もう一つの目標は、MapReduceの計算は、このようなハイブ、HBaseの、豚、スパークや他のアプリケーションとして、それだけではなくサポートしますが、また、簡単に管理するために、糸のHadoopを拡大することです。YARNすることにより、様々なアプリケーションが同じのHadoopシステム、共有リソースへのクラスタ全体でお互いを乱すことなく実行することができます。
2.3.2 YARN基本的なアーキテクチャとタスク・フロー
基本的な構造(1)のYARN
全体的に、糸またはマスター/スレーブ・アーキテクチャは、マーテルなどのResourceManager、ノードマネージャは、各ノードマネージャの統合管理とスケジュール上のリソースに責任のResourceManager奴隷です。ユーザーが送信すると、アプリケーションはこのResourceManagerアプリケーションリソースを担当し、このプログラムの追跡と管理のためのApplicationMasterを提供し、ノードマネージャは、タスクが特定のリソースを取ることができ始める必要がする必要があります。異なるApplicationMasterので、それらは(すなわち、いくつかのアプリケーションが同時に実行されてもよい)が互いに影響を及ぼさないように、異なるノードに分散されています。
①RM(のResourceManager)は2つのコンポーネントで構成され(スケジューラ、スケジューラ、アプリケーションマネージャASM)
個々のリソースのResourceManager部(計算、メモリ、帯域幅、など)が基準ノードマネージャ(糸各ノード・エージェント)を詳しく説明します。ResourceManagerがまた、一緒に資源とApplicationMasterを割り当てるノードマネージャで自分のアプリケーションの基礎を開始し、監視します。この文脈では、ApplicationMasterは、TaskTrackerの前の役割の一部を負担し、ResourceManagerがJobTrackerの役割を取りました。
アプリケーションがリソースを割り当てる実行するための責任スケジューラは、それが特定のアプリケーションに関連するすべての作業に従事していません。
ASMはApplicationMasterランニング用コンテナ(オブジェクトパッケージャリソース)のクライアントのジョブ送信と交渉を処理するための責任がある、とするときApplicationMasterの失敗、それを再起動します。
②NM(ノードマネージャ):
各ノードのリソースとタスクマネージャ。一の態様では、彼は定期的にリソースの使用状況とコンテナRMノードに応じて、各ノードの動作状態を報告する。一方、それが受信すると開始/停止要求等からコンテナApplicationMasterを処理します。
糸容器は、例えば、メモリ、CPU、ディスク、ネットワークなどの、ノード上の多次元リソースをカプセル化リソースの抽象化です。ときApplicationMaster要求リソースのRM、RMリソースがコンテナパッケージによって返されます。各タスクの糸がコンテナを割り当て、タスクのみ説明コンテナのリソースを使用することができます。
③AM(ApplicationMaster):アプリケーションに相当小さなバトラーで構成されています
ユーザによって提出される各アプリケーションは、システムはAMを生成し、送信プログラムに含まれる時、主な特徴は次の通りである:(コンテナ内で発現)を取得するリソースへのスケジューラと協議のRM、得られたタスクがさらに分解され内部手続きに、すべてのタスクの動作状況を監視し、タスクは、タスクを再起動するミッションのための資金調達のために再適用するために失敗した場合、NMは、スタート/ストップ・サービスと通信します。
④CA(クライアントアプリケーション):クライアントアプリケーション
クライアントアプリケーションは、最初に上下ファイルオブジェクトのアプリケーションを作成し、RMに提出し、要求情報AMに必要なリソースを設定し、その後、RMに提出されます。
(2)糸ワークフロー
YARNは、タスクの完了にジョブ投入からワークフロー全体の説明を詳しく説明しました:
プログラムは、AM、AM開始コマンド、ユーザプログラム等を含むことを特徴とする請求糸処理により、クライアントアプリケーションに①ユーザ提出、。
第1の割り当て②RMコンテナのアプリケーション、及び位置ノードマネージャコンテナ位置割り当てアプリケーションと通信し、それがこのコンテナにAMを開始する必要があります。その後のコマンドを開始するためのAMとAMコンテナ。
③AM開始Xianxiang RMは、ユーザーがRMアプリケーションから直接実行されているのステータスを表示することができますので、登録した後、必要により提出されたアプリケーションのためのさまざまなタスクを実装し、その動作状況を監視するためのリソースを適用し始めた後、実行の最後を知っています。(すなわち、繰り返し④行わ - ⑦)
④AMは、複数のアプリケーションが必ずしも、実行するために最初に提出そうする場合、要求されたとリソースを取得したRMへの道を尋ねることによってRPCプロトコルを使用してターンを取ると、その動作状態を監視します。
⑤資源へのAMのアプリケーションと、それらのNM通信リソースは、リソースの割り当てでタスクを開始することを求めて、対応します。
⑥NMは、タスクのための動作環境を設定した後、タスクの開始コマンドは、スクリプトを書き込み、スクリプトを実行してタスクを開始します。
⑦は、タスクがAMは、タスクが失敗した場合、タスクを再起動することができ、各タスクを、実行し続けることができるようにRPCプロトコルを介してAMに自分のステータスと進行状況を報告するために、各タスクを実行するために始めた始めました。アプリケーションではAM RPC問合せアプリケーションの現在の動作状況により、いつでも、ユーザー缶を実行しています。
⑧アプリケーションの終了後RMに、自分自身のApplicationMasterキャンセルを実行しています。
⑨クライアントとAMを閉じます。
3.Hadoop生態系
利用できるHadoopのは、一緒にHadoop関連プロジェクトにサービスを提供するコンポーネントの多くを開発し、徐々にのHadoopエコシステムと呼ばれるシステムのコンポーネントのシリーズを、形成された後
(1)のHBase
Hadoopのデータベースは、大規模な安価なPCサーバー上に立設技術のHBaseストレージ構造を使用して、高信頼性、高性能、列指向、スケーラブルな分散ストレージシステムであります
(2)ハイブ
ハイブは、Hadoopのデータ・ウェアハウス・インフラストラクチャに基づいています。これはHadoopの分析に格納されている大規模なデータの格納、クエリ、および機構であるデータ抽出変換ローディング(ETL)のために使用することができるツールの範囲を提供します。
(3)豚
豚は大規模のHadoopベースのデータ分析プラットフォーム、豚ラテン語と呼ば提供するSQLのような言語で、コンパイラは、MapReduceの動作の最適化された一連の処理にSQL言語データ解析要求を入力します。
(4)Sqoop
Sqoopは、データ転送のためのHadoop(ハイブ)の間、主に従来のデータベース(のMySQL、PostgreSQLの...)で使用されるオープンソースツールで、データは、HadoopのにHDFSにリレーショナルデータベースに変えることができます、HDFSデータは、リレーショナル・データベースになってもよいです。
(5)水路
水路Clouderaのは、データを収集するためのカスタマイズされたデータフリューム送信者ログシステムの様々なタイプをサポートするために、高可用性、信頼性の高い、分散大規模なログ収集、集約及び伝送システムに提供され、同時に、水路を提供します単純なデータ処理を実行する能力、及び様々な受信者に書き込まれたデータ(カスタマイズ)の
(6)Oozie
XML形式を書き込むためのOozieのHadoopのベースのスケジューラ、スケジューリングプロセスは、MR、豚、ハイブ、シェル、ジャータスクとその上をスケジュールすることができます。
主な特徴は
*ワークフロー:ノードの実行順序、支持フォーク(複数のブランチノード)、参加(複数のノードとして結合)
*コーディネーター、時限式トリガーワークフロー
*バンドル仕事、バインド複数のコーディネーター
(7)のZooKeeper
ZooKeeperのは、分散アプリケーションのための分散、オープンソースの連携サービスであるGoogleのチャビーのオープンソース実装で、HadoopのとHBaseのの重要な要素です。それは、分散アプリケーションのための一貫したサービスを提供することで機能が含ま提供:コンフィギュレーション・メンテナンス、ドメイン・ネーム・サービス、分散型の同期、グループ・サービスを。
(8)Mahoutの
Mahoutのは、Apache Software Foundation(ASF)「は、いくつかのインテリジェントなアプリケーションを簡単に作成、より迅速に、ヘルプの開発者に設計された、古典的なアルゴリズムを、学習スケーラブルなマシンを達成し、オープンソースプロジェクトsです。Mahoutのは、クラスタリング、分類、勧告ろ過、頻繁子マイニングなど、多くの実装が含まれています。さらに、ライブラリのApache Hadoopのを使用することにより、Mahoutのは、効果的にクラウドに拡張することができます。
4.Hadoopシナリオ
テンシナリオ:(1)オンライン旅行(2)モバイルデータ(3)Eコマース(4)画像処理(5)エネルギー抽出
(6)不正検出(7)ITセキュリティ(8)ヘルスケア(9)検索エンジン(10)ソーシャルプラットフォーム
5.まとめ
本論文では、Hadoopのの理論の基本的な概念を紹介HadoopがHadoopのコアアイデアを理解するために備えて、HDFS、MapReduceの、YARN三大コアフレームワーク、Hadoopのの全体的な構造の深い理解を理解し、単にHadoopのを理解しますエコシステムといくつかのアプリケーションシナリオ。
6.参照
「Hadoopのビッグデータ・ベースの開発、」本、著者ゆう明慧、張Liangjunを参照して、本論文では、