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>