📖

Lesson2. HDFS

2022/10/27に公開

学ぶ前の知識レベル

  • HDFSは Hadoop というミドルウェアの中で、データの保管の仕組みを担う技術らしい。
  • HaDoop File System の略かしら[1]

学んだこと

正しくはHadoop Distributed File System の略。

基本的な考え方

  • データを、一定サイズ[2]のブロックに分けてノードに分散して持つ
  • あるノードが壊れてもデータが消失しないように、ひとつのブロックを複数のノードに持つ

アーキテクチャ


HDFSのアーキテクチャ概要(汚い絵ですみません)

Name Node

  • Data Node のマスタ。
  • Data Node に分散して保持されたデータのメタデータを持つ。
  • メタデータは、スナップショットであるFSimageと、差分を持つ editlog からなる。

Secondary Name Node

  • Name Node がRAMに持っている FSimageとEditlogの内容をコピーしてきて、自分自身(=Secondary Name Node)のディスクに書き出す

👆この仕組みによって、Name Node が死んだとき用のバックアップをとりつつ、Name Node は常にRAMで動くことができる(I/Oからフリーになれる)ので速く動くということなのかな。

※ セカンダリという名前が紛らわしいが、Name Node の待機系みたいな意味合いでは断じてないので注意!!!

Data Node

  • データを実際に格納するノード。
  • 性能はしょぼくてOK

👆しょぼい Data Node をいっぱいつなげて水平負荷分散できることが、Hadoopがスケーラブルといわれるゆえんなのかしら。

学ぶために使ったリソース

親記事のリソースに加え、以下の記事を参考にしました。
https://www.sambaiz.net/article/126/

まだわかっていないこと

まだ実際に動かしてはいないので概念しか理解していない!

脚注
  1. 正しくは Hadoop Distributed File System の略です ↩︎

  2. サイズは設定可能らしい。ある解説動画では128MB,別の動画では64MBと言っていた。たとえば300MBのデータを128MBごとのブロックに分ける場合は、128MBのブロックが2つと、44MB(300-128*2)のブロックが1つできる。 ↩︎

Discussion