Hadoop HDFS

What is HDFS?

  • HDFS is a virtual FS (File System) built on top of local FS
    • เมื่อเริ่มเขียนข้อมูลลงใน HDFS ข้อมูลนั้นจะถูกเขียนลงใน local FS ด้วย (of distributed machines)
  • ไม่สามารถเรียกดู HDFS ได้ เช่นเดียวกันกับ local FS
    • You need to use the HDFS commands (similar to local FS commands, however)
    • หรือสามารถใช้ HDFS Web UI ได้
    • หรือ APIs ที่พร้อมใช้งาน
  • HDFS stores data as blocks in a replicated fashion
    • การจัดการและการจำลองของบล็อกต่าง ๆ ถูกจัดการโดย HDFS
    • HDFS เป็นพื้นที่จัดเก็บข้อมูลหลักที่ถูกใช้โดย Hadoop application

HDFS Architecture

  • Hadoop cluster ต่าง ๆ นั้น มีโหนดอยู่มากมาย โดยที่แต่ละโหนดมีชื่อเดียวและจะไม่ซ้ำกัน
  • Each block is replicated among data nodes

In the example above, block b1 is replicated in DataNode1, DataNode3, DataNode4

 

Nodes in HDFS Architecture

  • Name Node
    • Contains file system medadata
    • Monitors health of the data nodes
    • Client เชื่อมต่อโดยใช้ name node
  • Data node
    • Handles client requests
    • Sends heartbeats to namenode (default is 3 seconds)
    • Rack aware – A set of data nodes can be located in a rack, blocks will be replicated across the racks
  • Secondary name node
    • Not for high availability of Name node (as its name may sound like it)
    • Performs periodic checkpoints (ตรวจสอบเป็นระยะ) – Reads periodically the filesystem changes log of Name node and apply them into the Name node’s metadata file

HDFS Internal Directories

  • Directory where namenode stores its metadata
    • Set with default value ${hadoop.tmp.dir}/dfs/name
    • Can be specified explicitly by dfs.name.dir
  • Directory where HDFS data blocks are stored
    • Set with default value ${hadoop.tmp.dir}/dfs/data
    • Can be specified explicitly by dfs.data.dir
  • Directory where secondary namenode store its checkpoints
    • Set with default value is ${hadoop.tmp.dir}/dfs/namesecondary
    • Can be specified explicitly by fs.checkpoint.dir

 

HDFS Features

Block Replication

  • Blocks are replicated for reliability

 

HDFS Data Distribution

  • Number of data nodes a block is placed on is controlled by replication factor – If your replication is set to 3, it will be put on 3 separate data nodes

  • Block ยังอยู่ใน racks ที่แตกต่างกัน
    • If you set replication of 3 and have 2 racks, two blocks will be in one rack and the third block will be placed in the other rack

 

HDFS Commands

  • Start with “hadoop fs -<command>
    • hadoop fs -ls
    • hadoop fs -cat
    • hadoop fs -mkdir test_dir1
    • hadoop fs -rm -r test_dir1
  • Copying local directory/files to HDFS
    • hadoop fs -copyFromLocal <local-directory/files> <HDFSdirectory/files>
  • Copying HDFS directory/files to local file system
    • hadoop fs -copyToLocal <HDFS-directory/files> <localdirectory/files>