🙄

分散処理の学習の際の基本構成からまずつらい話 -Hadoopから-

2021/01/12に公開

分散処理フレームワーク(Hadoop, Apache Sparkなど)は最近馴染みのものになってきましたが,そもそもHadoopクラスタだかなんだか知りませんが基本仕様がまず理解していないとそれぞれの利点とか見てもわかんないですよね.てことで調べていく

Hadoopとは

Hadoopとは、大規模データの蓄積・分析を分散処理技術によって実現するオープンソースのミドルウェア

HDFS 【 Hadoop Distributed File System 】とは

マスターノードであるNameNodeとスレーブノードであるDataNodeで構成されるシステム

  • NameNode・・・実データの入っている複数のデータノードを管理するノード
  • DataNode・・・実データを入れるノード

NTT-DATAの解説がわかりやすかった

https://oss.nttdata.com/hadoop/hadoop.html

ファイル(データ)を格納するとき,いくつかに分けて(分けたものをブロックと呼ぶ)デフォルトで3つのDataNodeにデータを格納する.

ノードの不具合によってデータの欠損が発生した場合を鑑み,HDFSは複数のDataNodeにデータのコピー的なものを作成する(HDFSではこれをレプリカと呼んでいる)

管理の役割を担うNameNodeの不具合の際のシステムの不具合に関しては,NameNode-HAというシステムを使って良くなったらしい
以下参考リンク
https://www.slideshare.net/YukiGonda1/hadoop-namenode-ha

Hadoop MapReduce

マスターノードであるJobTrackerとスレーブノードであるTaskTrackerで構成されるシステム

  • JobTracker・・・MapReduceジョブの管理やTaskTrackerへのタスクの割り当て、TaskTrackerのリソース管理
  • TaskTracker・・・タスクの実行.各ノードにあるので,どれかが故障してもどこかが補填する

Mapタスク

JobTrackerが指示役.とるべきデータを格納しているDataNodeと,なるべく同居している(データのローカリティがある)TaskTrackerに指示を出す(サーバ間の通信量を極力抑えることが可能となり、オーバヘッドを抑える)

Reduceタスク

map処理のキーごとに集約されたデータに対して何らかの処理を実行する
ここらへんは次回記事で詳しくいきたいところ

その他参考リンク

Discussion