ccs 334 bigdata manual
ccs 334 bigdata manual
LAB MANUAL
(Regulation 2021)
LIST OF EXPERIMENTS:
1. Downloading and installing Hadoop; Understanding different Hadoop modes. Startup
scripts, Configuration files.
2. Hadoop Implementation of file management tasks, such as Adding files and directories,
retrieving files and Deleting files
3. Implement of Matrix Multiplication with Hadoop Map Reduce
4. Run a basic Word Count Map Reduce program to understand Map Reduce Paradigm.
5. Installation of Hive along with practice examples.
6. Installation of HBase, Installing thrift along with Practice examples
7. Practice importing and exporting data from various databases. Software Requirements:
Cassandra, Hadoop, Java, Pig, Hive and HBase.
.
EXPT.NO.1(a) Downloading and installing Hadoop; Understanding different Hadoop modes.
Startup scripts, Configuration files.
DATE:
AIM:
PROCEDURE:
DATE:
AIM:
To Downloading and installing Hadoop; Understanding different Hadoop modes.
Startup scripts, Configuration files.
STEP 1:Setup Configuration
a) Setting Up the environment variables
Edit .bashrc- Edit the bashrc and therefore add hadoop in a path:
$nano bash.bashrc
export HADOOP_HOME=/home/cse/hadoop-3.3.6
export HADOOP_INSTALL=$HADOOP_HOME
export HADOOP_MAPRED_HOME=$HADOOP_HOME
export HADOOP_COMMON_HOME=$HADOOP_HOME
export HADOOP_HDFS_HOME=$HADOOP_HOME
export YARN_HOME=$HADOOP_HOME
exportHADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native
export PATH=$PATH:$HADOOP_HOME/sbin:$HADOOP_HOME/bin
Edit mapred-site.xml
$sudo nano $HADOOP_HOME/etc/hadoop/mapred-site.xml
#Add below lines in this file(between "<configuration>" and "<"/configuration>")
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
Edit yarn-site.xml
$sudo nano $HADOOP_HOME/etc/hadoop/yarn-site.xml
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.nodemanager.aux-services.mapreduce.shuffle.class</name>
<value>org.apache.hadoop.mapred.ShuffleHandler</value>
</property>
<property>
<name>yarn.resourcemanager.hostname</name>
<value>127.0.0.1</value>
</property>
<property>
<name>yarn.acl.enable</name>
<value>0</value>
</property>
<property>
<name>yarn.nodemanager.env-whitelist</name>
<value>JAVA_HOME,HADOOP_COMMON_HOME,HADOOP_HDFS_HOME,HADO
OP_CONF_DIR,CLASSPATH_PERPEND_DISTCACHE,HADOOP_YARN_HOME,HA
DOOP_MAPRED_HOME</value>
</property>
Step 2: Start the cluster
We will now start the single node cluster with the following commands.
a) Format the namenode
$hdfs namenode –format
Result:
Downloaded and installed Hadoop and also understand different Hadoop modes. Startup
scripts, Configuration files are successfully implemented
EXPT.NO.2 Hadoop Implementation of file management tasks, such as Adding files and
directories, retrieving files and Deleting files
DATE:
After loading the information in the server, we can find the list of files in a directory, status
of a file, using ls Given below is the syntax of ls that you can pass to a directory or a
filename as an argument.
Transfer and store a data file from local systems to the Hadoop file system using the put
command.
$ stop-dfs.sh
Result:
Thus the Installing of Hadoop in three operating modes has been successfully completed
EXPT.NO.3(a)
Implement of Matrix Multiplication with Hadoop Map Reduce
DATE:
#!/usr/bin/env python
import sys
from operator import itemgetter
prev_index = None
value_list = []
for line in sys.stdin:
curr_index, index, value = line.rstrip().split("\t")
index, value = map(int,[index,value])
if curr_index == prev_index:
value_list.append((index,value))
else:
if prev_index:
value_list = sorted(value_list,key=itemgetter(0))
i=0
result = 0
while i < len(value_list) - 1:
if value_list[i][0] == value_list[i + 1][0]:
result += value_list[i][1]*value_list[i + 1][1]
i += 2
else:
i += 1
print "%s,%s"%(prev_index,str(result))
prev_index = curr_index
value_list = [(index,value)]
if curr_index == prev_index:
value_list = sorted(value_list,key=itemgetter(0))
i=0
result = 0
while i < len(value_list) - 1:
if value_list[i][0] == value_list[i + 1][0]:
result += value_list[i][1]*value_list[i + 1][1]
i += 2
else:
i += 1
print "%s,%s"%(prev_index,str(result))
Step 4. To view this file using cat command
$cat *.txt |python mapper.py
$ chmod +x ~/Desktop/mr/matrix/Mapper.py
$ chmod +x ~/Desktop/mr/matrixl/Reducer.py
$ hadoop jar /usr/lib/hadoop-mapreduce/hadoop-streaming.jar \
> -input /user/cse/matrices/ \
> -output /user/cse/mat_output \
> -mapper ~/Desktop/mr/matrix/Mapper.py \
> -reducer ~/Desktop/mr/matrix/Reducer.py
Step 5: To view this full output
Result:
Thus the MapReduce program to implement Matrix Multiplication was successfully executed
EXPT.NO.4 Run a basic Word Count Map Reduce program to understand Map Reduce
Paradigm
DATE:
hadoop version
javac –version
Put the output files in one jar file (There is a dot at the end)
jar -cvf WordCount.jar -C tutorial_classes .
Step 9. Now, we run the jar file on Hadoop.
hadoop jar WordCount.jar WordCount /WordCountTutorial/Input
/WordCountTutorial/Output
Step 10. Output the result:
package PackageDemo;
import java.io.IOException;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.Path;
import
org.apache.hadoop.io.IntWritable;
import
org.apache.hadoop.io.LongWritable;
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;
import org.apache.hadoop.util.GenericOptionsParser;
public class WordCount {
public static void main(String [] args) throws Exception
{
Configuration c=new Configuration();
String[] files=new
GenericOptionsParser(c,args).getRemainingArgs(); Path
input=new Path(files[0]);
Path output=new
Path(files[1]); Job j=new
Job(c,"wordcount");
j.setJarByClass(WordCount.c
lass);
j.setMapperClass(MapForWordCount.class);
j.setReducerClass(ReduceForWordCount.class);
j.setOutputKeyClass(Text.class);
j.setOutputValueClass(IntWritable.class);
FileInputFormat.addInputPath(j, input);
FileOutputFormat.setOutputPath(j, output);
System.exit(j.waitForCompletion(true)?0:1);
}
public static class MapForWordCount extends Mapper<LongWritable, Text,
Text,IntWritable>{
public void map(LongWritable key, Text value, Context con) throws IOException,
InterruptedException
{
String line = value.toString();
String[]
words=line.split(",");
for(String word: words
)
{
Text outputKey = new
Text(word.toUpperCase().trim());IntWritable
outputValue = new IntWritable(1);
con.write(outputKey, outputValue);
}
}
}
public static class ReduceForWordCount extends Reducer<Text, IntWritable,
Text,IntWritable>
{
public void reduce(Text word, Iterable<IntWritable> values, Context con)
throwsIOException,
InterruptedException
{
int sum = 0;
for(IntWritable value : values)
{
sum += value.get();
}
con.write(word, new IntWritable(sum));
}
}
}
The output is stored in /r_output/part-00000
OUTPUT:
Result:
Thus the Word Count Map Reduce program to understand Map Reduce Paradigm was
successfully execu
EXPT.NO.5(a)
Installation hive
DATE:
step 3:
source ~/.bashrc
step 4:
Edit hive-config.sh file
====================================
sudo nano $HIVE_HOME/bin/hive-config.sh
export HADOOP_HOME=/home/cse/hadoop-3.3.6
step 5:
Create Hive directories in HDFS
===================================
hdfs dfs -mkdir /tmp
hdfs dfs -chmod g+w /tmp
hdfs dfs -mkdir -p /user/hive/warehouse
hdfs dfs -chmod g+w /user/hive/warehouse
step 6:
rm $HIVE_HOME/lib/guava-19.0.jar
cp $HADOOP_HOME/share/hadoop/hdfs/lib/guava-27.0-jre.jar $HIVE_HOME/lib/
cp hive-default.xml.template hive-site.xml
Access the hive-site.xml file using the nano text editor:
sudo nano hive-site.xml
Show Database
Result:
Thus Installation hive was successfully installed and executed with example
EXPT.NO.6(a)
Installation of HBase, Installing thrift along with Practice examples
DATE:
AIM:
To Install HBase on Ubuntu 18.04 HBase in Standalone Mode
PROCEDURE:
Pre-requisite:
If any Error Occured While Execute this command , then java is not installed in your system
and then open .bashrc file and mention HBASE_HOME path as shown in below
export HBASE_HOME=/home/prasanna/hbase-2.5.5
here you can change name according to your local machine name
eg : export HBASE_HOME=/home/<your_machine_name>/hbase-2.5.5
Result:
ANJALAI
EXPT.NO.6(b)
HBase, Installing thrift along with Practice examples
DATE:
Aim:
3) insert data
syntax:
put ‘table_name’,’row_key’,’column_family:attribute’,’value’
code :
this data will enter data into the dept column family
put 'aamec','cse','dept:studentname','prasanna'
put 'aamec','cse','dept:year','third'
put 'aamec','cse','dept:section','A'
This data will enter data into the year column family
put 'aamec','cse','year:joinedyear','2021'
put 'aamec','cse','year:finishingyear','2025'
4) Scan Table
syntax:
scan ‘table_name’
code:
scan ‘aamec’
syntax:
get ‘table_name’,’row_key’,[optional column family: attribute]
code :
get ‘aamec’,’cse’
6. update table value
The same put command is used to update the table value ,if the row key is aldready present in the
database then it will update data according to the value ,if not present the it will create new row with the
given row key
previously the value for the section in cse is A ,But after running this command the value will be
changed into B
syntax:
delete ‘table_name’,’row_key’,’column_family:attribute’
code :
delete 'aamec','cse','year:joinedyear'
8.De
lete Table
first we need to disable the table before dropping it
To Disable:
syntax:
disable ‘table_name’
code:
disable ‘aamec’
Result:
Aim:
To import or export, the order of columns in MySQL and Hive
Pre-requisite
Hadoop and Java
MySQL
Hive
SQOOP
sudo apt install mysql-server ( use this command to install MySQL server)
COMMANDS:
~$ sudo su
After this enter your linux user password,then the root mode will be open here we don’t
need any authentication for mysql.
~root$ mysql
Note: This step is not required if you just use the root user to make CRUD
operations in the MySQL
Mysql> CREATE USER ‘bigdata’@’127.0.0.1' IDENTIFIED BY ‘ bigdata’;
Mysql>grant all privileges on *.* to [email protected];
Note: Here, *.* means that the user we create has all the privileges on all the tables
of all the databases.
Now, we have created user profiles which will be used to make CRUD operations in the
mysql
Step 3: Create a database and table and insert data.
Example:
create database Employe;
create table Employe.Emp(author_name varchar(65), total_no_of_articles int, phone_no
int, address varchar(65));
insert into Emp values(“Rohan”,10,123456789,”Lucknow”);
Step 3: Create a database and table in the hive where data should be imported.
create table geeks_hive_table(name string, total_articles int, phone_no int, address string)
row format delimited fields terminated by ‘,’;
Step 4: SQOOP INSTALLATION :
After downloading the sqoop , go to the directory where we downloaded the sqoop
and then extract it using the following command :
Next to move that to the usr/lib which requires a super user privilege
Goto .bashrc: $ sudo nano .bashrc , and then add the following
export SQOOP_HOME=/usr/lib/sqoop
export PATH=$PATH:$SQOOP_HOME/bin
$ source ~/.bashrc
Then configure the sqoop, goto the directory of the config folder of sqoop_home and then move the
contents of template file to the environment file.
$ cd $SQOOP_HOME/conf
$ mv sqoop-env-template.sh sqoop-env.sh
Then open the sqoop-environment file and then add the following,
export HADOOP_COMMON_HOME=/usr/local/Hadoop
export HADOOP_MAPRED_HOME=/usr/local/hadoop
Note : Here we add the path of the Hadoop libraries and files and it may different from the path which
we mentioned here. So, add the Hadoop path based on your installation.
Next, to extract the file and place it to the lib folder of sqoop
$ tar -zxf mysql-connector-java-5.1.30.tar.gz
$ su
$ cd mysql-connector-java-5.1.30
$ mv mysql-connector-java-5.1.30-bin.jar /usr/lib/sqoop/lib
Note : This is library file is very important don’t skip this step because it contains the libraries to
connect the mysql databases to jdbc.
Verify sqoop: sqoop-version
Step 3: hive database Creation
hive> create database sqoop_example;
hive>use sqoop_example;
hive>create table sqoop(usr_name string,no_ops int,ops_names string);
Hive commands much more alike mysql commands.Here, we just create the structure to store the data
which we want to import in hive.
Step 6: Importing data from MySQL to hive :
sqoop import --connect \
jdbc:mysql://127.0.0.1:3306/database_name_in_mysql \
--username root --password cloudera \
--table table_name_in_mysql \
--hive-import --hive-table database_name_in_hive.table_name_in_hive \
--m 1
OUTPUT:
Result:
Thus the import and export, the order of columns in MySQL queries are exported
to hive successfully