This article was published as a part of the Data Science Blogathon.
The amount of data in our world is growing exponentially. It is estimated that at least 2.5 quintillions of data are being generated every day. No wonder why Big Data is a fast-growing field with great opportunities all around the globe.
In this article, we’ll be focusing on the basics of Big Data, why Big Data is used & learn about a Big Data framework known as Hadoop. This is a beginner-friendly article and will help you briefly get into the world of Big Data.
Let’s talk about Big Data first…
In an alternate universe, you (Zark Muckerburg) had a brilliant idea to create a social media platform called “FaceCook”. Users can share their photos, videos, articles, etc. on this platform with their friends. The first problem you’ll encounter is data storage. The data will include structured as well as unstructured content. It’ll contain texts, images, videos, etc. So we need a robust system to safely store the data.
The precise way to define Big Data is using the 5 V’s.
The data we need to store is very large in volume. It may be multiple Petabytes & so on.
It refers to the high-speed accumulation of data. Imagine millions of users posting on FaceCook every minute.
Big Data may consist of structured (table), unstructured (pictures, videos, etc) & semistructured (log files) data. There’s a vast variety of data types in Big Data.
It refers to the uncertainty & inconsistencies in data. The reasons for such inconsistencies may be a multitude of data sources, different data types, etc. This may cause data to be very messy.
Data in itself is of no value unless it is extracted, cleaned & analyzed thoroughly to gain insights about it. Hence you can generate value out of Big Data.
Now let’s study the different approaches to storing Big Data.
The first naive approach anyone will have is simply setting up a single centralized database & use it to retrieve, and store the content FaceCook users post. So you set up a database server in your backyard & start using it. At first, this approach may seem viable but as the userbase increases; our database size will increase as well.
But this will lead to a high workload on the server thus putting it at the risk of data loss due to overloading.
A single database isn’t so scalable either so there is no way this approach will work.
The issue with a single database centre is the processing may get slower. So we can simply divide the data into parts & store a single part per computer instance. This is called a Distributed File System.
Here a cluster of file servers is formed which are interconnected via a computer network.
Let’s say we want to store 4 Gb of data in a distributed file system, we can divide the data into 4 parts and store the data in a cluster of 4 file servers.
But wait. . .
What if due to some technicalities, PC 1 gets destroyed. This will cause some parts of the data to be unavailable. Imagine losing half of your posts due to company failure, you’ll sue the company lol.
So we need a utility to store & manage big data. It should also provide fault-tolerance and good performance as well.
Here Hadoop comes into the picture.
Hadoop is an open-source framework that is used to efficiently store & process large datasets ranging in size from GBs to Petabytes of data. Instead of using a centralized single database server to store data, Hadoop features clustering multiple commodity computers for fault-tolerance & parallel processing.
Hadoop consists of four main modules:
We will focus on HDFS in this article/
Apache Hadoop Distributed File System (HDFS) follows a master-slave architecture, where a cluster comprises of single NameNode (Master) & all other nodes are DataNodes (Slaves).
The main activities of NameNode are:
1. Maintains & manages DataNodes.
2. Records metadata of actual data like filename, path, block location, etc
3. Receives heartbeat reports from all DataNodes. If NameNode stops receiving a heartbeat report from any DataNode, that DataNode is considered dead.
The main activities of DataNodes are:
1. Stores actual data
2. Serves read & write requests from the client.
Data is firstly divided into blocks of size 128 MB by default in Hadoop 2.x architecture. All the blocks except the last should always be of size 128 MB.
The data storage process in HDFS is as follows:
We’ve already talked earlier that there might be a partial or total data loss even if a single node in a cluster fails to work. To prevent this, Hadoop has a feature called Block Replication.
In HDFS, Datablocks are replicated & stored in other DataNodes for better fault-tolerance. By default, the replication factor (how many copies of a block should be kept in the cluster) is 3 but it can be tweaked as per user requirements.
A rack is a collection of 30-40 DataNodes in a cluster. Rack Awareness is a concept in HDFS so that NameNode chooses the closest possible DataNode for serving read/write requests.
Rack Awareness is used to reduce network traffic while read/write operations, achieve fault tolerance, reduce latency, etc.
NameNode maintains Block Replication with Rack Awareness policies as below
So after the client gets the DataNode addresses from the NameNode,
The client directly writes the data on the DataNode.
For the usual case of Block Replication Factor of 3, the client first writes the block into a DataNode. Then this block is replicated into another DataNode within the same Rack. Finally, this block is replicated into a DataNode in a different rack.
This entire architecture is already visualized in the diagram above. .
So, we have studies right from the basics of Big Data to Hadoop framework fundamentals. This is not the end, as Hadoop & Big Data in general consists of more complex topics. Nevertheless, this is a step in the right direction.
The media shown in this article is not owned by Analytics Vidhya and is used at the Author’s discretion.