



















Study with the several resources on Docsity
Earn points by helping other students or get them with a premium plan
Prepare for your exams
Study with the several resources on Docsity
Earn points to download
Earn points by helping other students or get them with a premium plan
An introduction to mapreduce programming, a framework for processing large datasets in a distributed manner. It covers key concepts such as mapper, reducer, combiner, and partitioner, and explores their applications in various scenarios, including searching, sorting, and compression. The document also includes code examples illustrating the implementation of mapreduce programs for tasks like word counting and salary calculation.
Typology: Summaries
1 / 27
This page cannot be seen from the preview
Don't miss anything!




















Introduction to Hadoop and MapReduce Programming Hadoop Overview , HDFS (Hadoop Distributed File System), Processing– Data with Hadoop, Managing Resources and Applications with Hadoop YARN (Yet another Resource Negotiator). Introduction to MAPREDUCE Programming: Introduction, Mapper, Reducer, Combiner, Partitioner, Searching, Sorting, Compression.
Q) Explain the differences between Hadoop and RDBMS Parameters RDBMS Hadoop System Relational Database Management system
Node based flat structure
Data Suitable for structured data Suitable for Structured, unstructured data, supports variety of formats(xml, json) Processing OLTP Analytical, big data processing Hadoop clusters, node require any consistent relationships between data Choice When the data needs consistent relationship
Big data processing, which does not require any consistent relationships between data Processor Needs expensive hardware or high-end processors to store huge volumes of data
In commodity hardware less configure hardware.
Cost Cost around $10,000 to $14,000 per terabytes of storage
Cost around $4000 per terabytes of storage.
Q) What is Hadoop? Explain features of hadoop. Hadoop is an open source framework that is meant for storage and processing of big data in a distributed manner. It is the best solution for handling big data challenges.
Some important features of Hadoop are – Open Source – Hadoop is an open source framework which means it is available free of cost. Also, the users are allowed to change the source code as per their requirements. Distributed Processing – Hadoop supports distributed processing of data i.e. faster processing. The data in Hadoop HDFS is stored in a distributed manner and MapReduce is responsible for the parallel processing of data. Fault Tolerance – Hadoop is highly fault-tolerant. It creates three replicas for each block (default) at different nodes. Reliability – Hadoop stores data on the cluster in a reliable manner that is independent of machine. So, the data stored in Hadoop environment is not affected by the failure of the machine.
Scalability – It is compatible with the other hardware and we can easily add/remove the new hardware to the nodes. High Availability – The data stored in Hadoop is available to access even after the hardware failure. In case of hardware failure, the data can be accessed from another node. The core components of Hadoop are –
Q) Explain Hadoop Architecture with a neat sketch.
Fig. Hadoop Architecture Hadoop Architecture is a distributed Master-slave architecture. Master HDFS: Its main responsibility is partitioning the data storage across the slave nodes. It also keep track of locations of data on Datanodes.
Q) Explain features of HDFS. Discuss the design of Hadoop distributed file system and concept in detail.
HDFS: (Hadoop Distributed File System) – HDFS is the basic storage system of Hadoop. The large data files running on a cluster of commodity hardware are stored in HDFS. It can store data in a reliable manner even when hardware fails. The key aspects of HDFS are: HDFS is developed by the inspiration of Google File System(GFS). Storage component: Stores data in hadoop Distributes data across several nodes: divides large file into blocks and stores in various data nodes. Natively redundant: replicates the blocks in various data nodes. High Throughput Access: Provides access to data blocks which are nearer to the client. Re-replicates the nodes when nodes are failed.
Fig. Features of HDFS HDFS Daemons: (i) NameNode The NameNode is the master of HDFS that directs the slave DataNodes to perform I/O tasks. Blocks : HDFS breaks large file into smaller pieces called blocks. rackID : NameNode uses rackID to identify data nodes in the rack. (rack is a collection of datanodes with in the cluster) NameNode keep track of blocks of a file. File System Namespace: NameNode is the book keeper of HDFS. It keeps track of how files are broken down into blocks and which DataNode stores these blocks. It is a collection of files in the cluster. FsImage: file system namespace includes mapping of blocks of a file, file properties and is stored in a file called FsImage. EditLog: namenode uses an EditLog (transaction log) to record every transaction that happens to the file system metadata. NameNode is single point of failure of Hadoop cluster.
Fig. HDFS Architecture (ii) DataNode Multiple data nodes per cluster. Each slave machine in the cluster have DataNode daemon for reading and writing HDFS blocks of actual file on local file system. During pipeline read and write DataNodes communicate with each other. It also continuously Sends “heartbeat” message to NameNode to ensure the connectivity between the Name node and the data node. If no heartbeat is received for a period of time NameNode assumes that the DataNode had failed and it is re-replicated.
Fig. Interaction between NameNode and DataNode.
Fig. File Write Anatomy
Special features of HDFS:
Fig. File Replacement Strategy
Q) Explain basic HDFS File operations with an example.
TaskTracker, the JobTracker assumes that the TaskTracker has failed and resubmits the task to another available node in the cluster.
Map Reduce Framework Phases: Map: Converts input into key- value pairs. Reduce: Combines output of mappers and produces a reduced result set.
Daemons: JobTracker: Master, Schedules Task TaskTracker: Slave, Execute task
MapReduce working: MapReduce divides a data analysis task into two parts – Map and Reduce. In the example given below: there two mappers and one reduce. Each mapper works on the partial data set that is stored on that node and the reducer combines the output from the mappers to produce the reduced result set. Steps:
Fig. MapReduce Programming Architecture
A MapReduce programming using Java requires three classes:
Q) Explain difference between Hadoop1X and Hadoop2X
Limitations of Hadoop 1.0: HDFS and MapReduce are core components, while other components are built around the core.
Hadoop 2: Hadoop 2.x is YARN based architecture. It is general processing platform. YARN is not constrained to MapReduce only. One can run multiple applications in Hadoop 2.x in which all applications share common resource management.
Hadoop 2.x can be used for various types of processing such as Batch, Interactive, Online, Streaming, Graph and others.
HDFS 2 consists of two major components a) NameSpace: Takes care of file related operations such as creating files, modifying files and directories b) Block storage service: It handles data node cluster management and replication.
HDFS 2 Features: Horizontal scalability: HDFS Federation uses multiple independent NameNodes for horizontal scalability. The DataNodes are common storage for blocks and shared by all NameNodes. All DataNodes in the cluster registers with each NameNode in the cluster. High availability: High availability of NameNode is obtained with the help of Passive Standby NameNode.
Active-Passive NameNode handles failover automatically. All namespace edits are recorded to a shared NFS (Network File Storage) Storage and there is a single writer at an point of time.
8 Has a limitation to serve as a platform for event processing, streaming and real-time operations.
Can serve as a platform for a wide variety of data analytics-possible to run event processing, streaming and real-time operations. 9 Does not support Microsoft Windows
Added support for Microsoft windows
Q) Explain in detail about YARN?
The fundamental idea behind the YARN(Yet Another Resource Negotiator) architecture is to splitting the JobTracker reponsibility of resource management and job scheduling/monitoring into separate daemons.
Basic concepts of YARN are Application and Container. Application is a job submitted to system. Ex: MapReduce job. Container: Basic unit of allocation. Replaces fixed map/reduce slots. Fine- grained resource allocation across multiple resource type Eg. Container_0: 2GB, 1CPU Container_1: 1GB, 6CPU
Daemons that are part of YARN architecture are:
It works along with the NodeManager for executing and monitoring component tasks.
Fig. YARN Architecture
The steps involved in YARN architecture are:
Q) Explain Hadoop Ecosystem in detail.
The following are the components of Hadoop ecosystem:
In MapReduce programming, Jobs(applications) are split into a set of map tasks and reduce tasks. Map task takes care of loading, parsing, transforming and filtering. The responsibility of reduce task is grouping and aggregating data that is produced by map tasks to generate final output. Each map task is broken down into the following phases:
Mapper Phases: Mapper maps the input <keys, value> pairs into a set of intermediate <keys, value> pairs. Each map task is broken into following phases:
1. RecordReader : converts byte oriented view of input in to Record oriented view and presents it to the Mapper tasks. It presents the tasks with keys and values. i) InputFormat: It reads the given input file and splits using the method getsplits(). ii) Then it defines RecordReader using createRecordReader( ) which is responsible for generating <keys, value> pairs. 2. Mapper : Map function works on the <keys, value> pairs produced by RecordReader and generates intermediate (key, value) pairs. Methods: - protected void cleanup(Context context): called once at tend of task. - protected void map(KEYIN key, VALUEIN value, Context context): called once for each key-value pair in input split. - void run(Context context): user can override this method for complete control over execution of Mapper. - protected void setup(Context context): called once at beginning of task to perform required activities to initiate map() method. 3. Combiner : It takes intermediate <keys, value> pairs provided by mapper and applies user specific aggregate function to only one mapper. It is also known as local Reducer.
We can optionally specify a combiner using Job.setCombinerClass(ReducerClass) to perform local aggregation on intermediate outputs.
Fig. MapReduce without Combiner class
Fig. MapReduce with Combiner class
4. Partitioner : Take intermediate <keys, value> pairs produced by the mapper, splits them into partitions the data using a user-defined condition. The default behavior is to hash the key to determine the reducer.User can control by using the method: int getPartition(KEY key, VALUE value, int numPartitions )
Compression: In MapReduce programming we can compress the output file. Compression provides two benefits as follows: Reduces the space to store files. Speeds up data transfer across the network. We can specify compression format in the Driver program as below:
conf.setBoolean(“mapred.output.compress”,true); conf.setClass(“mapred.output.compression.codec”,GzipCodec.class,Compres sionCodec.class); Here, codec is the implementation of a compression and decompression algorithm, GzipCodec is the compression algorithm for gzip.
Q) Write a MapReuduce program for WordCount problem.
import java.io.IOException; import java.util.StringTokenizer; import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.fs.Path; import org.apache.hadoop.io.IntWritable; import org.apache.hadoop.io.Text; import org.apache.hadoop.mapreduce.Job; import org.apache.hadoop.mapreduce.Mapper; import org.apache.hadoop.mapreduce.Reducer; import org.apache.hadoop.mapreduce.lib.input.FileInputFormat; import org.apache.hadoop.mapreduce.lib.output.FileOutputFormat;
public class WordCount { public static class WCMapper extends Mapper <Object, Text, Text, IntWritable>
{ final static IntWritable one = new IntWritable(1); Text word = new Text(); public void map(Object key, Text value, Context context) throws IOException, InterruptedException {
StringTokenizer itr = new tringTokenizer(value.toString()); while (itr.hasMoreTokens()) { word.set(itr.nextToken()); context.write(word, one); } } }
public static class WCReducer extends Reducer<Text, IntWritable, Text, IntWritable> { private IntWritable result = new IntWritable(); public void reduce(Text key, Iterable
int sum = 0; for (IntWritable val : values) { sum += val.get(); } result.set(sum); context.write(key, result); } }
public static void main(String[] args) throws Exception { Configuration conf = new Configuration(); Job job = Job.getInstance(conf, "word count"); job.setJarByClass(WordCount.class); job.setMapperClass(WCMapper.class); job.setReducerClass(WCReducer.class); job.setOutputKeyClass(Text.class); job.setOutputValueClass(IntWritable.class); FileInputFormat.addInputPath(job, new Path(args[0])); FileOutputFormat.setOutputPath(job, new Path(args[1])); System.exit(job.waitForCompletion(true)? 0 : 1); } }
Fig. MapReduce paradigm for WordCount