Hadoop
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
単語検索
|
最終更新
|
ヘルプ
]
開始行:
「[[.NET 開発基盤部会 Wiki>http://dotnetdevelopmentinfras...
-[[戻る>分散処理]]
--Apache Hadoop
--[[Apache Spark]]
*目次 [#tfa037d5]
#contents
*概要 [#obdf758b]
-Apache Hadoopは
--Javaで書かれている。
--数千ノードおよびペタバイト級の分散処理を支えるOSSフレー...
--Google [[MapReduce>#l29e344a]]および[[Google File Syste...
--実行プラン作成の観点において、手続き型言語と宣言型言語...
>※ 参考:
--[[目的別 > 分散(バッチ)系>分散処理#jb20d368]]
--[[プロダクト > 分散(バッチ)系>分散処理#ked24982]]
**Hadoop MapReduce [#y0681858]
***特性 [#y5be412a]
-ワークロード
--非構造化データを対象としたETL(Extract-Transform-Load)...
--並列データベースの構造化データに対する分析クエリような...
-高い
--耐障害性
--スケーラビリティ
-抽象化インターフェース
***構成 [#d638a90d]
-[[MapReduce>#l29e344a]]処理系
-高速なファイルの読み書きが可能な分散ファイルシステム
--[[HDFS>#l2a0cd99]]
--[[ソレ以外>#u357a307]]
***処理系 [#bd937444]
-複数の計算機上で効率的に処理を行う、~
データ処理用のプログラミング・モデル
-プログラミング・モデルが動作する処理系
**Hadoop YARN [#vb7fabb0]
-Hadoop YARN(Yet Another Resource Negotiator)
-Hadoop 2.2から利用可能なリソース管理コンポーネント
***特性 [#vda1e297]
[[旧管理コンポーネント>#a8d32de3]]との違い
-分散リソース制御機構
--MapReduce V2
--Hadoop YARN(と[[ApplicationMaster>#ma4d2909]])
-[[課題>#uab2f1a3]]の解決
--クラスタ規模の拡大: [[JobTracker>#r9d168f4]]の改善
--[[MapReduce>#l29e344a]]以外の分散処理の実行: ...
--リソース管理の効率化: [[TaskTracker>#v632e4fe]]の改善
***構成 [#yb816f53]
マスタ ・スレーブ型の構成
-マスタの役割を担当するのが[[ResourceManager>#y41d95ad]]
-スレーブの役割を担当するのが[[NodeManager>#ka1e70e1]]
***処理系 [#df2cf5e6]
-マスタも高可用(HA)構成を取ることができる。
-マスタが任意のタイミングで切り替わっても動作が停止しない
--マスタが保持している管理情報は投入されるジョブ数に比例...
--管理情報(ジョブの投入状況および進捗状況の変更)を[[Apa...
*詳細 [#c84994b5]
**リソース管理基盤システム [#oa5d57cf]
計算リソースの管理する基盤システム(リソース管理基盤シス...
***懸念 [#l3e538f9]
計算機クラスタを複数用いることは必ずしも容易ではない。
-1つの計算機クラスタ上で複数の処理系を用いる場合~
複数の処理系の間で計算資源(計算リソース)を分離できない
-処理系毎に計算機クラスタを用意する場合
--データの一貫性の管理や運用による手間が余計にかかる。
--データが巨大である場合計算機クラスタ間におけるデータの~
移動や同期による性能的なオーバーヘッドが大きくなる。
***方式 [#s517c496]
-Apache Mesos,[[Apache YARN>#ke539051]],Google Borgが~
広く普及しつつあり、いずれもマスタ・スレーブ型のアーキテ...
-マスタ・スレーブ型は、
--スケーラビリティよりも一貫性や単純さを重視する傾向があ...
--反面、マスタが
---単一障害点となり可用性が低下する場合
---ボトルネックとなり高いスケーラビリティが実現できない場合
-
>がある。
***機能 [#tc5a9dc6]
(マスタ・スレーブ型の機能概要)
-マスタ
--スレーブからクラスタ全体の計算リソースの情報を収集する。
--その情報を元に,クライアントからの計算リソース要求に応じ~
どのスレーブのリソースを確保するかをスケジューリングする。
-スレーブ~
スレーブが稼働する各ローカルノードが保持する計算リソース...
--現在使用中の計算リソースと未使用の計算リソースを逐次マ...
--マスタから計算リソースの要求に応じて計算リソースを確保...
**Hadoop MapReduce [#vb32d67b]
***耐障害性設計 [#s89593bf]
-分散ファイルシステムのレプリケーションによりブロックの高...
-中間データを二次記憶に適宜書き出すことにより、ジョブのリ...
***スケーラビリティ設計 [#ld37d79d]
-ディスク入出力性能を最大限に活用する。
--大きなブロック単位の入出力~
従来のNFSなどの分散ファイルシステムと比較し、~
高いシーケンシャルアクセス性能を活用できる。
--無共有型のアーキテクチャ
---並列ディスク走査
---高いスケーラビリティを実現可能
-ネットワーク入出力を最小限に抑える。
--近年におけるコモディティサーバはでは、~
ネットワークスイッチのI/O性能が各計算機のI/O性能よりも低...
--従って、種々の効率化技法が用いられる。
---転送データ圧縮
---集約処理~
・通常の処理~
Map側で集約キーによって出力データを分割、~
ネットワークを介して分配し、Reduce側でキー毎の集約を行...
~
・可換則と結合則を満たす集約処理~
Map側で集約処理(部分集約)を行い、~
ネットワークへのデータ転送量の削減を試みる。
***抽象化インターフェース設計 [#sbffb5e7]
-map()とreduce()なる2つの関数だけをプログラマに定義させる。
-その他の処理はすべて処理系で行う。
**Hadoop YARN [#ke539051]
***課題 [#uab2f1a3]
-クラスタ規模の拡大~
Hadoop 1系までの[[MapReduce>#l29e344a]]エンジンにおける1...
以下の「クラスタのリソース管理」を担当する必要があったた...
負荷が大きく、Hadoopクラスタの台数は1000台程度が限界であ...
--クラスタ内で実行される[[MapReduce>#l29e344a]]ジョブのス...
--[[MapReduce>#l29e344a]]ジョブの各タスクに対する入力デー...
-[[MapReduce>#l29e344a]]以外の分散処理の実行~
Hadoopで分散処理するためには、必ず[[MapReduce>#l29e344a]]...
--[[MapReduce>#l29e344a]]が2回以上連続するような処理を実...
---前段の[[MapReduce>#l29e344a]]ジョブの処理結果を[[HDFS>...
---それを後続の[[MapReduce>#l29e344a]]で読み込む、という...
--ここで[[HDFS>#l2a0cd99]]に中間データを書き込むため、処...
多段の[[MapReduce>#l29e344a]]となるような処理を高速化する...
[[MapReduce>#l29e344a]]フレームワークとは異なる分散処理が...
-リソース管理の効率化
--Hadoop 1系までの[[MapReduce>#l29e344a]]エンジンにおける...
Reduceタスク用にそれぞれスロットが用意されており、そこに[...
--ここで、Mapタスク用のスロットに空きがない場合は、Reduce...
Mapタスクをこれ以上割り当てることができず、[[TaskTracker>...
***機能 [#w0113d01]
-YARN上では、MapReduceジョブごとにMapReduceマスタを立ち上...
-[[MapReduce>#l29e344a]]からクラスタの
--リソース管理
--ジョブ・スケジューリング
>を分離したことにより、
--アプリケーションの記述性が柔軟になった。
--[[YARN>#kbbf8cab]]上では[[MapReduce>#l29e344a]]以外にも...
---[[分散処理>#l53ced38]]
---[[SQLクエリエンジン>#ba1a28d5]]
---[[分散ストリーム処理>#j27192bd]]
-
>などの様々な[[分散処理フレームワーク>#z3a4ca3c]]が動作す...
***動作フロー [#p9dd76a8]
-YARNのクライアントが[[ResourceManager>#y41d95ad]]に対し...
-[[ResourceManager>#y41d95ad]]が[[MapReduce>#l29e344a]]マ...
-[[MapReduce>#l29e344a]]マスタ用のコンテナが確保されると[...
-[[MapReduce>#l29e344a]]マスタはジョブに必要なコンテナを[...
-[[ResourceManager>#y41d95ad]]は,
--コンテナを[[NodeManager>#ka1e70e1]]から確保するように指...
--[[MapReduce>#l29e344a]]スレーブ用コンテナを確保する。
-[[MapReduce>#l29e344a]]マスタは,
--リクエストの応答としてそのコンテナの情報を受け取り、
--[[MapReduce>#l29e344a]]の処理を開始する。
-[[MapReduce>#l29e344a]]処理が完了すると,
--MapReduceマスタがジョブの完了を[[ResourceManager>#y41d9...
--[[ResourceManager>#y41d95ad]]は当該リソースを開放する。
***スケジューリング・アルゴリズム [#wf6ace41]
-FIFO(First-In-First-Out)~
投入された順番にジョブを実行する。
--スケジューリングの挙動が運用者にとって理解しやすい。
--投入されるジョブの数に比例して,後のジョブの実行完了時...
-Fair~
稼働中のアプリケーションそれぞれに平等にリソースを配分す...
--ジョブは、投入されたジョブの順番に関わらず計算リソース...
--特定の条件にマッチしたジョブの優先順位を上げることがで...
-Capacity~
グループ毎にリソースを配分する。
--グループごとに運用者が定義した割合でリソースを分配でき...
--以下の状況を回避できる。
---特定の組織が計算リソースを占有してしまう。
---優先順位の低いアプリケーションが大量に立ち上がることに...
*アーキテクチャ [#a044803a]
Hadoopは、以下のモジュールによって構成されている。
-[[Hadoop Common>#uc3d5768]]
-[[Hadoop MapReduce>#b9ef92ab]]
-[[Hadoop Distributed File System (HDFS)>#l2a0cd99]]
-管理コンポーネント
--[[旧管理コンポーネント>#a8d32de3]]
--[[Hadoop Yet Another Resource Negotiator (YARN)>#kbbf8c...
**Hadoop Common [#uc3d5768]
他のモジュールから共通して利用されるライブラリ群。
**Hadoop MapReduce [#b9ef92ab]
-[[MapReduce>#l29e344a]]の実装。
--可能な限り入力データを保持する[[DataNode>#r71e974a]]と...
--これにより、大規模データ処理においてもネットワークの負...
-[[JobTracker>#r9d168f4]]、[[TaskTracker>#v632e4fe]]によ...
-Hadoop 2系以降は、[[MRv1>#kcc53ae0]]をサポートしていない...
[[YARN>#kbbf8cab]]上で[[MapReduce>#l29e344a]]上が動作し、...
***ファイル・システム [#u357a307]
[[HDFS>#l2a0cd99]]以外のファイル・システムもサポートして...
-Amazon Simple Storage Service (S3)
-OpenStack Swift
-Microsoft Azure
-FTP、HTTP、およびHTTPS経由で~
アクセス可能なファイル・システム
***MRv1 [#kcc53ae0]
[[MapReduce>#l29e344a]]エンジンはひとつの[[JobTracker>#r9...
クライアントはこの[[JobTracker>#r9d168f4]]に向けて[[MapRe...
***MRv2 [#la093707]
-クライアントが[[YARN>#kbbf8cab]]上で[[MapReduce>#l29e344...
-[[MapReduce>#l29e344a]]ジョブが停止した場合、[[JobTracke...
**Hadoop Distributed File System (HDFS) [#l2a0cd99]
HDFS:Hadoop独自の分散ファイル・システム。
-Googleの分散ファイルシステム、[[Google File System(GFS)>...
-シンプルなアーキテクチャで、膨大なデータ量をライトワンス...
-データスループット指向で、低レイテンシーではない。
--大きなファイルを複数のブロック単位(デフォルトで128MB)に...
--そのブロックの複製(レプリカ)を複数の異なるノードに格...
-HDFSはマスタ・スレーブ型の構成
-HDFSクライアントを使ってアクセスする。~
HTTP、FTP、Fuseなどからもアクセスできる(専用のHDFSクライ...
-通常のFSにマウントできなかったが、Hadoop 2.2以降はNFSv3...
***NameNode [#ca7d0d6e]
マスタの役割を担当する。
-HDFSに関するメタ情報(ファイルとブロックの対応関係など)を...
-任意の[[DataNode>#r71e974a]]が故障した場合は、自動でそれ...
-このようにして[[DataNode>#r71e974a]]が故障した場合も自動...
-単一障害点であったが、Hadoop 2.2でHA機能が実装されたため...
--状態変更は既存の[[Apache ZooKeeper]]を用いずMulti Paxos...
--ことにより,メッセージ数の削減による高性能化を実現する。
***DataNode [#r71e974a]
スレーブの役割を担当する。
-実データをブロック単位で保持する。
-レプリケーション数のデフォルトは3で、この場合、
--2つのデータを同じラック内のノードに、
--残り1つを異なるラック内のノードに
>保存する。
-数1000台規模までスケールアウト可能。~
その場合、数10PB規模のデータを格納できる。
**旧管理コンポーネント [#a8d32de3]
Hadoopクラスタの
-リソース管理
-ジョブ・スケジューリング
を担当。
***JobTracker [#r9d168f4]
旧マスタ(リソース管理、ジョブ・スケジューリング)ノード
-[[MapReduce>#b9ef92ab]]ジョブが投入されると、[[JobTracke...
-何らかの異常によって[[JobTracker>#r9d168f4]]が停止すると...
***TaskTracker [#v632e4fe]
旧スレーブ(割り当てられた処理の実行)ノード
-1筐体上で[[DataNode>#r71e974a]]と[[TaskTracker>#v632e4f...
-[[TaskTracker>#v632e4fe]]が停止するか、実行中のタスクが...
**Hadoop Yet Another Resource Negotiator (YARN) [#kbbf8cab]
-[[旧管理コンポーネント>#a8d32de3]]の後継
-Hadoop 2.2から利用可能。
***ResourceManager [#y41d95ad]
-投入された[[MapReduce>#b9ef92ab]]ジョブを管理するマスタ...
-[[MapReduce>#b9ef92ab]]ジョブが投入されると、[[ResourceM...
***NodeManager [#ka1e70e1]
-処理ノードを管理するスレーブ・ノード
-1筐体上で[[DataNode>#r71e974a]]と[[NodeManager>#ka1e70e...
-[[MapReduce>#b9ef92ab]]タスクの実行コンテナ。
--計算リソース(CPU、メモリ、ネットワーク / ディスク帯域,...
--[[ApplicationMaster>#ma4d2909]]もそのコンテナ上で動作す...
--汎用化したコンテナ単位でリソースを割り当てるので、
***ApplicationMaster [#ma4d2909]
-アプリケーションを管理するノード
-[[MapReduce>#b9ef92ab]]を含む各アプリケーション用に~
それぞれ専用のApplicationMasterが実行される。
--最初の[[NodeManager>#ka1e70e1]]が[[ApplicationMaster>#m...
--[[NodeManager>#ka1e70e1]]ヘの[[MapReduce>#b9ef92ab]]タ...
--必要なリソースは都度[[ResourceManager>#y41d95ad]]に問合...
*エコシステム [#l99f9094]
**分散処理フレームワーク [#z3a4ca3c]
Hadoop MapReduceと比べて
***分散処理エンジン [#l53ced38]
アプリケーションの記述性が柔軟で、より高効率な実行が可能。
-[[Apache Spark]]
-[[Apache Tez]]
-Apache Flink
***SQLクエリエンジン [#ba1a28d5]
クエリを低い(レイテンシ)で実行可能
-[[Apache Impala]]
-[[Apache Drill]]
-Facebook Presto
***分散ストリーム処理 [#j27192bd]
大量のストリームデータを低い遅延(レイテンシ)で処理可能
-[[Apache Storm]]
-[[Spark Streaming]]
-[[Apache Samza]]
-Twitter Heron
**DWH、データストア [#b1f1754b]
***[[Apache Hive]](DWH) [#qe92d339]
***[[Apache Impala]](DWH) [#v8ad3b2f]
***HBase、Kudu [#uc9bf89a]
-[[Apache HBase]]
-[[Apache Kudu]]
**[[Asakusa Framework]] [#dee51df9]
ノーチラス・テクノロジーズが開発した、~
Hadoop用の開発・運用フレームワーク。
*参考 [#f76f444f]
-Hadoopの概念と基本的知識~
https://www.slideshare.net/sasakipochi/hadoop-43231811
-分散処理技術「Hadoop」とは:NTTデータのHadoopソリューシ...
https://oss.nttdata.com/hadoop/hadoop.html
**Wikipedia [#k87a363b]
-Apache Hadoop~
https://ja.wikipedia.org/wiki/Apache_Hadoop
***MapReduce [#l29e344a]
-MapReduce~
https://ja.wikipedia.org/wiki/MapReduce
***Google File System(GFS) [#uc4c35e7]
-Google File System~
https://ja.wikipedia.org/wiki/Google_File_System
**gihyo.jp … 技術評論社 [#r8aff958]
Hadoopはどのように動くのか
***Hadoop MapReduce [#gd508729]
Hadoopの設計と実装~並列データ処理系Hadoop MapReduce
-第13回[1]~
https://gihyo.jp/admin/serial/01/how_hadoop_works/0013
-第14回[2]~
https://gihyo.jp/admin/serial/01/how_hadoop_works/0014
***Hadoop YARN [#h693517e]
計算機クラスタのためのリソース管理基盤 Hadoop YARN
-第15回~
https://gihyo.jp/admin/serial/01/how_hadoop_works/0015
**Hadoopの [#c9395558]
***歴史 [#reddea41]
-【特集記事】Hadoopの過去・現在、そして未来 | DataCenter ...
https://cafe-dc.com/other/hadoop-past-present-and-future/
-Hadoopビッグデータ基盤の歴史を振り返る #cwt2015~
https://www.slideshare.net/Cloudera_jp/hadoop-cwt2015
-「Hadoopの時代は終わった」の意味を正しく理解する - 科学...
https://shiumachi.hatenablog.com/entry/2017/07/10/080827
-HadoopからDocker、そしてKubernetesの登場~
分散システムの歴史を紐解く - ログミーTech~
https://logmi.jp/tech/articles/297612
-SQL視点で辿るHadoopのだいたいの歴史 - Qiita~
https://qiita.com/underttree/items/9f22bdff54df90cf6165
***エコシステム [#w3cca958]
-Hadoopと愉快な仲間たち - Qiita~
https://qiita.com/DG0426/items/7072b35761d43b78b634
**Qiita [#ba347491]
***Hadoop [#ve64479e]
***YARN [#d5518b0e]
-あの日見たYARNのお仕事を僕達はまだ知らない。~
https://qiita.com/keigodasu/items/09f7e0a15d721b0b5212
-YARN 上における分散処理基盤のリソース管理について~
https://qiita.com/oza_x86/items/758b20d43d5171275f9e
終了行:
「[[.NET 開発基盤部会 Wiki>http://dotnetdevelopmentinfras...
-[[戻る>分散処理]]
--Apache Hadoop
--[[Apache Spark]]
*目次 [#tfa037d5]
#contents
*概要 [#obdf758b]
-Apache Hadoopは
--Javaで書かれている。
--数千ノードおよびペタバイト級の分散処理を支えるOSSフレー...
--Google [[MapReduce>#l29e344a]]および[[Google File Syste...
--実行プラン作成の観点において、手続き型言語と宣言型言語...
>※ 参考:
--[[目的別 > 分散(バッチ)系>分散処理#jb20d368]]
--[[プロダクト > 分散(バッチ)系>分散処理#ked24982]]
**Hadoop MapReduce [#y0681858]
***特性 [#y5be412a]
-ワークロード
--非構造化データを対象としたETL(Extract-Transform-Load)...
--並列データベースの構造化データに対する分析クエリような...
-高い
--耐障害性
--スケーラビリティ
-抽象化インターフェース
***構成 [#d638a90d]
-[[MapReduce>#l29e344a]]処理系
-高速なファイルの読み書きが可能な分散ファイルシステム
--[[HDFS>#l2a0cd99]]
--[[ソレ以外>#u357a307]]
***処理系 [#bd937444]
-複数の計算機上で効率的に処理を行う、~
データ処理用のプログラミング・モデル
-プログラミング・モデルが動作する処理系
**Hadoop YARN [#vb7fabb0]
-Hadoop YARN(Yet Another Resource Negotiator)
-Hadoop 2.2から利用可能なリソース管理コンポーネント
***特性 [#vda1e297]
[[旧管理コンポーネント>#a8d32de3]]との違い
-分散リソース制御機構
--MapReduce V2
--Hadoop YARN(と[[ApplicationMaster>#ma4d2909]])
-[[課題>#uab2f1a3]]の解決
--クラスタ規模の拡大: [[JobTracker>#r9d168f4]]の改善
--[[MapReduce>#l29e344a]]以外の分散処理の実行: ...
--リソース管理の効率化: [[TaskTracker>#v632e4fe]]の改善
***構成 [#yb816f53]
マスタ ・スレーブ型の構成
-マスタの役割を担当するのが[[ResourceManager>#y41d95ad]]
-スレーブの役割を担当するのが[[NodeManager>#ka1e70e1]]
***処理系 [#df2cf5e6]
-マスタも高可用(HA)構成を取ることができる。
-マスタが任意のタイミングで切り替わっても動作が停止しない
--マスタが保持している管理情報は投入されるジョブ数に比例...
--管理情報(ジョブの投入状況および進捗状況の変更)を[[Apa...
*詳細 [#c84994b5]
**リソース管理基盤システム [#oa5d57cf]
計算リソースの管理する基盤システム(リソース管理基盤シス...
***懸念 [#l3e538f9]
計算機クラスタを複数用いることは必ずしも容易ではない。
-1つの計算機クラスタ上で複数の処理系を用いる場合~
複数の処理系の間で計算資源(計算リソース)を分離できない
-処理系毎に計算機クラスタを用意する場合
--データの一貫性の管理や運用による手間が余計にかかる。
--データが巨大である場合計算機クラスタ間におけるデータの~
移動や同期による性能的なオーバーヘッドが大きくなる。
***方式 [#s517c496]
-Apache Mesos,[[Apache YARN>#ke539051]],Google Borgが~
広く普及しつつあり、いずれもマスタ・スレーブ型のアーキテ...
-マスタ・スレーブ型は、
--スケーラビリティよりも一貫性や単純さを重視する傾向があ...
--反面、マスタが
---単一障害点となり可用性が低下する場合
---ボトルネックとなり高いスケーラビリティが実現できない場合
-
>がある。
***機能 [#tc5a9dc6]
(マスタ・スレーブ型の機能概要)
-マスタ
--スレーブからクラスタ全体の計算リソースの情報を収集する。
--その情報を元に,クライアントからの計算リソース要求に応じ~
どのスレーブのリソースを確保するかをスケジューリングする。
-スレーブ~
スレーブが稼働する各ローカルノードが保持する計算リソース...
--現在使用中の計算リソースと未使用の計算リソースを逐次マ...
--マスタから計算リソースの要求に応じて計算リソースを確保...
**Hadoop MapReduce [#vb32d67b]
***耐障害性設計 [#s89593bf]
-分散ファイルシステムのレプリケーションによりブロックの高...
-中間データを二次記憶に適宜書き出すことにより、ジョブのリ...
***スケーラビリティ設計 [#ld37d79d]
-ディスク入出力性能を最大限に活用する。
--大きなブロック単位の入出力~
従来のNFSなどの分散ファイルシステムと比較し、~
高いシーケンシャルアクセス性能を活用できる。
--無共有型のアーキテクチャ
---並列ディスク走査
---高いスケーラビリティを実現可能
-ネットワーク入出力を最小限に抑える。
--近年におけるコモディティサーバはでは、~
ネットワークスイッチのI/O性能が各計算機のI/O性能よりも低...
--従って、種々の効率化技法が用いられる。
---転送データ圧縮
---集約処理~
・通常の処理~
Map側で集約キーによって出力データを分割、~
ネットワークを介して分配し、Reduce側でキー毎の集約を行...
~
・可換則と結合則を満たす集約処理~
Map側で集約処理(部分集約)を行い、~
ネットワークへのデータ転送量の削減を試みる。
***抽象化インターフェース設計 [#sbffb5e7]
-map()とreduce()なる2つの関数だけをプログラマに定義させる。
-その他の処理はすべて処理系で行う。
**Hadoop YARN [#ke539051]
***課題 [#uab2f1a3]
-クラスタ規模の拡大~
Hadoop 1系までの[[MapReduce>#l29e344a]]エンジンにおける1...
以下の「クラスタのリソース管理」を担当する必要があったた...
負荷が大きく、Hadoopクラスタの台数は1000台程度が限界であ...
--クラスタ内で実行される[[MapReduce>#l29e344a]]ジョブのス...
--[[MapReduce>#l29e344a]]ジョブの各タスクに対する入力デー...
-[[MapReduce>#l29e344a]]以外の分散処理の実行~
Hadoopで分散処理するためには、必ず[[MapReduce>#l29e344a]]...
--[[MapReduce>#l29e344a]]が2回以上連続するような処理を実...
---前段の[[MapReduce>#l29e344a]]ジョブの処理結果を[[HDFS>...
---それを後続の[[MapReduce>#l29e344a]]で読み込む、という...
--ここで[[HDFS>#l2a0cd99]]に中間データを書き込むため、処...
多段の[[MapReduce>#l29e344a]]となるような処理を高速化する...
[[MapReduce>#l29e344a]]フレームワークとは異なる分散処理が...
-リソース管理の効率化
--Hadoop 1系までの[[MapReduce>#l29e344a]]エンジンにおける...
Reduceタスク用にそれぞれスロットが用意されており、そこに[...
--ここで、Mapタスク用のスロットに空きがない場合は、Reduce...
Mapタスクをこれ以上割り当てることができず、[[TaskTracker>...
***機能 [#w0113d01]
-YARN上では、MapReduceジョブごとにMapReduceマスタを立ち上...
-[[MapReduce>#l29e344a]]からクラスタの
--リソース管理
--ジョブ・スケジューリング
>を分離したことにより、
--アプリケーションの記述性が柔軟になった。
--[[YARN>#kbbf8cab]]上では[[MapReduce>#l29e344a]]以外にも...
---[[分散処理>#l53ced38]]
---[[SQLクエリエンジン>#ba1a28d5]]
---[[分散ストリーム処理>#j27192bd]]
-
>などの様々な[[分散処理フレームワーク>#z3a4ca3c]]が動作す...
***動作フロー [#p9dd76a8]
-YARNのクライアントが[[ResourceManager>#y41d95ad]]に対し...
-[[ResourceManager>#y41d95ad]]が[[MapReduce>#l29e344a]]マ...
-[[MapReduce>#l29e344a]]マスタ用のコンテナが確保されると[...
-[[MapReduce>#l29e344a]]マスタはジョブに必要なコンテナを[...
-[[ResourceManager>#y41d95ad]]は,
--コンテナを[[NodeManager>#ka1e70e1]]から確保するように指...
--[[MapReduce>#l29e344a]]スレーブ用コンテナを確保する。
-[[MapReduce>#l29e344a]]マスタは,
--リクエストの応答としてそのコンテナの情報を受け取り、
--[[MapReduce>#l29e344a]]の処理を開始する。
-[[MapReduce>#l29e344a]]処理が完了すると,
--MapReduceマスタがジョブの完了を[[ResourceManager>#y41d9...
--[[ResourceManager>#y41d95ad]]は当該リソースを開放する。
***スケジューリング・アルゴリズム [#wf6ace41]
-FIFO(First-In-First-Out)~
投入された順番にジョブを実行する。
--スケジューリングの挙動が運用者にとって理解しやすい。
--投入されるジョブの数に比例して,後のジョブの実行完了時...
-Fair~
稼働中のアプリケーションそれぞれに平等にリソースを配分す...
--ジョブは、投入されたジョブの順番に関わらず計算リソース...
--特定の条件にマッチしたジョブの優先順位を上げることがで...
-Capacity~
グループ毎にリソースを配分する。
--グループごとに運用者が定義した割合でリソースを分配でき...
--以下の状況を回避できる。
---特定の組織が計算リソースを占有してしまう。
---優先順位の低いアプリケーションが大量に立ち上がることに...
*アーキテクチャ [#a044803a]
Hadoopは、以下のモジュールによって構成されている。
-[[Hadoop Common>#uc3d5768]]
-[[Hadoop MapReduce>#b9ef92ab]]
-[[Hadoop Distributed File System (HDFS)>#l2a0cd99]]
-管理コンポーネント
--[[旧管理コンポーネント>#a8d32de3]]
--[[Hadoop Yet Another Resource Negotiator (YARN)>#kbbf8c...
**Hadoop Common [#uc3d5768]
他のモジュールから共通して利用されるライブラリ群。
**Hadoop MapReduce [#b9ef92ab]
-[[MapReduce>#l29e344a]]の実装。
--可能な限り入力データを保持する[[DataNode>#r71e974a]]と...
--これにより、大規模データ処理においてもネットワークの負...
-[[JobTracker>#r9d168f4]]、[[TaskTracker>#v632e4fe]]によ...
-Hadoop 2系以降は、[[MRv1>#kcc53ae0]]をサポートしていない...
[[YARN>#kbbf8cab]]上で[[MapReduce>#l29e344a]]上が動作し、...
***ファイル・システム [#u357a307]
[[HDFS>#l2a0cd99]]以外のファイル・システムもサポートして...
-Amazon Simple Storage Service (S3)
-OpenStack Swift
-Microsoft Azure
-FTP、HTTP、およびHTTPS経由で~
アクセス可能なファイル・システム
***MRv1 [#kcc53ae0]
[[MapReduce>#l29e344a]]エンジンはひとつの[[JobTracker>#r9...
クライアントはこの[[JobTracker>#r9d168f4]]に向けて[[MapRe...
***MRv2 [#la093707]
-クライアントが[[YARN>#kbbf8cab]]上で[[MapReduce>#l29e344...
-[[MapReduce>#l29e344a]]ジョブが停止した場合、[[JobTracke...
**Hadoop Distributed File System (HDFS) [#l2a0cd99]
HDFS:Hadoop独自の分散ファイル・システム。
-Googleの分散ファイルシステム、[[Google File System(GFS)>...
-シンプルなアーキテクチャで、膨大なデータ量をライトワンス...
-データスループット指向で、低レイテンシーではない。
--大きなファイルを複数のブロック単位(デフォルトで128MB)に...
--そのブロックの複製(レプリカ)を複数の異なるノードに格...
-HDFSはマスタ・スレーブ型の構成
-HDFSクライアントを使ってアクセスする。~
HTTP、FTP、Fuseなどからもアクセスできる(専用のHDFSクライ...
-通常のFSにマウントできなかったが、Hadoop 2.2以降はNFSv3...
***NameNode [#ca7d0d6e]
マスタの役割を担当する。
-HDFSに関するメタ情報(ファイルとブロックの対応関係など)を...
-任意の[[DataNode>#r71e974a]]が故障した場合は、自動でそれ...
-このようにして[[DataNode>#r71e974a]]が故障した場合も自動...
-単一障害点であったが、Hadoop 2.2でHA機能が実装されたため...
--状態変更は既存の[[Apache ZooKeeper]]を用いずMulti Paxos...
--ことにより,メッセージ数の削減による高性能化を実現する。
***DataNode [#r71e974a]
スレーブの役割を担当する。
-実データをブロック単位で保持する。
-レプリケーション数のデフォルトは3で、この場合、
--2つのデータを同じラック内のノードに、
--残り1つを異なるラック内のノードに
>保存する。
-数1000台規模までスケールアウト可能。~
その場合、数10PB規模のデータを格納できる。
**旧管理コンポーネント [#a8d32de3]
Hadoopクラスタの
-リソース管理
-ジョブ・スケジューリング
を担当。
***JobTracker [#r9d168f4]
旧マスタ(リソース管理、ジョブ・スケジューリング)ノード
-[[MapReduce>#b9ef92ab]]ジョブが投入されると、[[JobTracke...
-何らかの異常によって[[JobTracker>#r9d168f4]]が停止すると...
***TaskTracker [#v632e4fe]
旧スレーブ(割り当てられた処理の実行)ノード
-1筐体上で[[DataNode>#r71e974a]]と[[TaskTracker>#v632e4f...
-[[TaskTracker>#v632e4fe]]が停止するか、実行中のタスクが...
**Hadoop Yet Another Resource Negotiator (YARN) [#kbbf8cab]
-[[旧管理コンポーネント>#a8d32de3]]の後継
-Hadoop 2.2から利用可能。
***ResourceManager [#y41d95ad]
-投入された[[MapReduce>#b9ef92ab]]ジョブを管理するマスタ...
-[[MapReduce>#b9ef92ab]]ジョブが投入されると、[[ResourceM...
***NodeManager [#ka1e70e1]
-処理ノードを管理するスレーブ・ノード
-1筐体上で[[DataNode>#r71e974a]]と[[NodeManager>#ka1e70e...
-[[MapReduce>#b9ef92ab]]タスクの実行コンテナ。
--計算リソース(CPU、メモリ、ネットワーク / ディスク帯域,...
--[[ApplicationMaster>#ma4d2909]]もそのコンテナ上で動作す...
--汎用化したコンテナ単位でリソースを割り当てるので、
***ApplicationMaster [#ma4d2909]
-アプリケーションを管理するノード
-[[MapReduce>#b9ef92ab]]を含む各アプリケーション用に~
それぞれ専用のApplicationMasterが実行される。
--最初の[[NodeManager>#ka1e70e1]]が[[ApplicationMaster>#m...
--[[NodeManager>#ka1e70e1]]ヘの[[MapReduce>#b9ef92ab]]タ...
--必要なリソースは都度[[ResourceManager>#y41d95ad]]に問合...
*エコシステム [#l99f9094]
**分散処理フレームワーク [#z3a4ca3c]
Hadoop MapReduceと比べて
***分散処理エンジン [#l53ced38]
アプリケーションの記述性が柔軟で、より高効率な実行が可能。
-[[Apache Spark]]
-[[Apache Tez]]
-Apache Flink
***SQLクエリエンジン [#ba1a28d5]
クエリを低い(レイテンシ)で実行可能
-[[Apache Impala]]
-[[Apache Drill]]
-Facebook Presto
***分散ストリーム処理 [#j27192bd]
大量のストリームデータを低い遅延(レイテンシ)で処理可能
-[[Apache Storm]]
-[[Spark Streaming]]
-[[Apache Samza]]
-Twitter Heron
**DWH、データストア [#b1f1754b]
***[[Apache Hive]](DWH) [#qe92d339]
***[[Apache Impala]](DWH) [#v8ad3b2f]
***HBase、Kudu [#uc9bf89a]
-[[Apache HBase]]
-[[Apache Kudu]]
**[[Asakusa Framework]] [#dee51df9]
ノーチラス・テクノロジーズが開発した、~
Hadoop用の開発・運用フレームワーク。
*参考 [#f76f444f]
-Hadoopの概念と基本的知識~
https://www.slideshare.net/sasakipochi/hadoop-43231811
-分散処理技術「Hadoop」とは:NTTデータのHadoopソリューシ...
https://oss.nttdata.com/hadoop/hadoop.html
**Wikipedia [#k87a363b]
-Apache Hadoop~
https://ja.wikipedia.org/wiki/Apache_Hadoop
***MapReduce [#l29e344a]
-MapReduce~
https://ja.wikipedia.org/wiki/MapReduce
***Google File System(GFS) [#uc4c35e7]
-Google File System~
https://ja.wikipedia.org/wiki/Google_File_System
**gihyo.jp … 技術評論社 [#r8aff958]
Hadoopはどのように動くのか
***Hadoop MapReduce [#gd508729]
Hadoopの設計と実装~並列データ処理系Hadoop MapReduce
-第13回[1]~
https://gihyo.jp/admin/serial/01/how_hadoop_works/0013
-第14回[2]~
https://gihyo.jp/admin/serial/01/how_hadoop_works/0014
***Hadoop YARN [#h693517e]
計算機クラスタのためのリソース管理基盤 Hadoop YARN
-第15回~
https://gihyo.jp/admin/serial/01/how_hadoop_works/0015
**Hadoopの [#c9395558]
***歴史 [#reddea41]
-【特集記事】Hadoopの過去・現在、そして未来 | DataCenter ...
https://cafe-dc.com/other/hadoop-past-present-and-future/
-Hadoopビッグデータ基盤の歴史を振り返る #cwt2015~
https://www.slideshare.net/Cloudera_jp/hadoop-cwt2015
-「Hadoopの時代は終わった」の意味を正しく理解する - 科学...
https://shiumachi.hatenablog.com/entry/2017/07/10/080827
-HadoopからDocker、そしてKubernetesの登場~
分散システムの歴史を紐解く - ログミーTech~
https://logmi.jp/tech/articles/297612
-SQL視点で辿るHadoopのだいたいの歴史 - Qiita~
https://qiita.com/underttree/items/9f22bdff54df90cf6165
***エコシステム [#w3cca958]
-Hadoopと愉快な仲間たち - Qiita~
https://qiita.com/DG0426/items/7072b35761d43b78b634
**Qiita [#ba347491]
***Hadoop [#ve64479e]
***YARN [#d5518b0e]
-あの日見たYARNのお仕事を僕達はまだ知らない。~
https://qiita.com/keigodasu/items/09f7e0a15d721b0b5212
-YARN 上における分散処理基盤のリソース管理について~
https://qiita.com/oza_x86/items/758b20d43d5171275f9e
ページ名: