HDFS read and write operations in Hadoop - Time & Space Complexity
When working with HDFS, it is important to understand how reading and writing data scales as the data size grows.
We want to know how the time to read or write changes when the file size increases.
Analyze the time complexity of the following simplified HDFS write and read operations.
// Write operation
for each block in file:
write block to DataNode
replicate block to other DataNodes
// Read operation
for each block in file:
read block from closest DataNode
This code writes a file by splitting it into blocks, writing each block, and replicating it. Reading fetches each block from the nearest node.
Look at what repeats as the file size grows.
- Primary operation: Writing or reading each block of the file.
- How many times: Number of blocks equals file size divided by block size, so it grows linearly with file size.
As the file size increases, the number of blocks increases proportionally.
| Input Size (MB) | Approx. Number of Blocks |
|---|---|
| 10 | 10 (if block size = 1MB) |
| 100 | 100 |
| 1000 | 1000 |
Pattern observation: Doubling the file size roughly doubles the number of blocks to read or write, so time grows linearly.
Time Complexity: O(n)
This means the time to read or write grows directly in proportion to the file size.
[X] Wrong: "Reading or writing a file in HDFS takes the same time no matter the file size."
[OK] Correct: Because HDFS splits files into blocks, more data means more blocks, so more operations and more time.
Understanding how HDFS handles data helps you explain distributed storage performance clearly, a useful skill in data engineering roles.
What if the block size was doubled? How would that affect the time complexity of reading and writing?
Practice
write operation in HDFS primarily do?Solution
Step 1: Understand the purpose of write operation in HDFS
The write operation is used to create new files or overwrite existing files in HDFS.Step 2: Differentiate write from read and other operations
Reading fetches data, deleting removes files, listing shows files. Writing specifically saves data.Final Answer:
Creates or overwrites files in the distributed file system -> Option AQuick Check:
Write = Create or overwrite files [OK]
- Confusing write with read operation
- Thinking write deletes files
- Assuming write lists files
pyarrow library?Solution
Step 1: Identify the mode for reading files
In file operations, 'r' mode means open for reading, 'w' means writing.Step 2: Match the correct function call for reading
Using fs.open with 'r' opens the file for reading in pyarrow.Final Answer:
fs.open('/path/to/file', 'r') -> Option BQuick Check:
Open file with 'r' to read [OK]
- Using 'w' mode when reading
- Confusing open with read or write methods
- Forgetting to specify mode
pyarrow to read from HDFS:with fs.open('/data/sample.txt', 'r') as f:
lines = f.readlines()
print(len(lines))If the file contains 5 lines, what will be the output?
Solution
Step 1: Understand what readlines() returns
The readlines() method reads all lines and returns a list of lines.Step 2: Count the number of lines in the list
If the file has 5 lines, len(lines) will be 5.Final Answer:
5 -> Option AQuick Check:
readlines() returns list of lines, length = 5 [OK]
- Assuming readlines() returns a string
- Forgetting to close the file (but 'with' handles it)
- Confusing number of lines with characters
pyarrow?
f = fs.open('/data/output.txt', 'w')
f.write('Hello World')
# Missing f.close()Solution
Step 1: Check if file is properly closed after writing
The code opens file and writes but does not close it, which can cause data loss.Step 2: Understand importance of closing streams in HDFS
Closing the file ensures data is flushed and saved correctly in HDFS.Final Answer:
File is not closed, risking data loss -> Option DQuick Check:
Always close files after writing [OK]
- Ignoring file close after write
- Assuming write accepts only bytes (it accepts strings too)
- Confusing read and write modes
Solution
Step 1: Write data properly by opening and closing the file
Open the file in write mode, write the data, then close the file to save it safely.Step 2: Read data by opening file in read mode and closing after reading
After writing, open the file in read mode, read line by line, then close the file to release resources.Final Answer:
Open file in write mode, write data, close file; then open in read mode, read lines, close file -> Option CQuick Check:
Write then close; read then close [OK]
- Reading before writing data
- Not closing write stream before reading
- Trying to read or write without opening file
Ready to prove it?
Pass the test and this pattern moves unknown
