Corso Big Data

Download Report

Transcript Corso Big Data

Corso di programmazione su Hadoop
Questo corso sui Big Data è tenuto dal Dottor Stefano Fantin per un aggiornamento
interno del personale D&T.
Stefano Fantin è CEO a F-O-O-D ed il sito personale è
https://www.stefanofantin.it
Stefano Fantin vuole condividere con i lettori interessati questo documento sui big
data e in particolare su come sviluppare codice sorgente su Apache Hadoop.
1
Corso di programmazione su Hadoop
Scaricare l’ultima release stabile di Hadoop:
http://hadoop.apache.org/common/releases.html
Configurazione:
File conf/hadoop-env.sh
Specificare le variabili d’ambiente:
LINUX: export JAVA_HOME=/usr/local/lib/...
MAC OS: export JAVA_HOME=/Library/Java/Home
Nota: devono sempre essere controllate le impostazioni
locali della vostra macchina.
2
Corso di programmazione su Hadoop
Configurazione:
File conf/hadoop-env.sh
Opzionale: Specificare la massima quantità di memoria
assegnabile a Java heap:
# The maximum amount of heap to use, in MB. Default
is 1000.
export HADOOP_HEAPSIZE=2000
3
Corso di programmazione su Hadoop
Configurazione:
File core-site.xml
Opzionale: specificare la directory in cui Hadoop andrà a
scrivere l'output temporaneo
<property>
<name>hadoop.tmp.dir</name>
% Sostituire questo valore con la directory
specificata
<value>/tmp/hadoop-tmp${user.name}</value>
<description>A base for other temporary
directories.<description>
</property>
4
Corso di programmazione su Hadoop
5
Corso di programmazione su Hadoop
Mapper
6
Corso di programmazione su Hadoop
7
Corso di programmazione su Hadoop
8
Corso di programmazione su Hadoop
9
Corso di programmazione su Hadoop
10
Corso di programmazione su Hadoop
11
Corso di programmazione su Hadoop
Esempio word count
12
Corso di programmazione su Hadoop
13
Corso di programmazione su Hadoop
14
Corso di programmazione su Hadoop
15
Corso di programmazione su Hadoop
16
Corso di programmazione su Hadoop
Esempio word count
package mapred; import java.io.IOException;
import java.util.Iterator;
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.mapred.FileInputFormat;
import org.apache.hadoop.mapred.FileOutputFormat;
import org.apache.hadoop.mapred.JobClient;
import org.apache.hadoop.mapred.JobConf;
import org.apache.hadoop.mapred.MapReduceBase;
import org.apache.hadoop.mapred.Mapper;
17
Corso di programmazione su Hadoop
import org.apache.hadoop.mapred.OutputCollector;
import org.apache.hadoop.mapred.Reducer;
import org.apache.hadoop.mapred.Reporter;
import org.apache.hadoop.mapred.TextInputFormat;
import org.apache.hadoop.mapred.TextOutputFormat;
18
Corso di programmazione su Hadoop
public class WordCount {
public static class Map extends MapReduceBase implements Mapper<LongWritable, Text, Text, IntWritable> {
private Text word = new Text();
private IntWritable one = new IntWritable(1);
public void map(LongWritable key,
Text value, OutputCollector<Text, IntWritable> output, Reporter reporter) throws IOException {
String line = value.toString(); String [] words = line.split(" ");
for(String term: words){ word.set(term); output.collect(word,one); } } }
19
Corso di programmazione su Hadoop
public static class Reduce extends MapReduceBase implements Reducer<Text, IntWritable, Text, IntWritable> {
public void reduce(Text key, Iterator<IntWritable> values, OutputCollector<Text, IntWritable> output, Reporter
reporter) throws IOException {
int sum = 0; while (values.hasNext()) {
double value = values.next().get(); sum += value; }
20
Corso di programmazione su Hadoop
IntWritable sumValue = new IntWritable(sum); output.collect(key, sumValue); } }
public static void main(String arg[]) throws IOException, ClassNotFoundException, InterruptedException {
if (arg.length != 2) { System.out.println("Usage:"); System.out.println("inputPath outputPath"); System.exit(1); }
String inputPath = arg[0]; String outputPath = arg[1];
JobConf conf = new JobConf(WordCount.class);
21
Corso di programmazione su Hadoop
conf.setJobName("WordCount");
conf.setMapOutputValueClass(IntWritable.class);
conf.setMapOutputKeyClass(Text.class);
conf.setOutputKeyClass(Text.class);
conf.setOutputValueClass(IntWritable.class);
conf.setMapperClass(Map.class);
conf.setCombinerClass(Reduce.class);
conf.setReducerClass(Reduce.class);
conf.setInputFormat(TextInputFormat.class);
conf.setOutputFormat(TextOutputFormat.class);
22
Corso di programmazione su Hadoop
FileInputFormat.setInputPaths(conf, new Path(inputPath));
FileOutputFormat.setOutputPath(conf, new
Path(outputPath));
JobClient.runJob(conf); } }
23
Corso di programmazione su Hadoop
Risultato sort:
the
to
of
in
and
a9
that
on
is 7
he
has
26
15
14
9
9
7
7
6
6
had 6
for 6
at
6
are
6
who 5
players 5
have 5
club 5
been 5
The 5
not
4
Ashley 4
was 3
sale 3
said 3
new 3
his
3
be3
as3
….
24
Corso di programmazione su Hadoop
Esempio utilizzando il software GATE
25
Corso di programmazione su Hadoop
26
Corso di programmazione su Hadoop
27
Corso di programmazione su Hadoop
28
Corso di programmazione su Hadoop
29
Corso di programmazione su Hadoop
30
Corso di programmazione su Hadoop
31
Corso di programmazione su Hadoop
32
Corso di programmazione su Hadoop
33
Corso di programmazione su Hadoop
34
Corso di programmazione su Hadoop
35
Corso di programmazione su Hadoop
36
Corso di programmazione su Hadoop
37
Corso di programmazione su Hadoop
38
Corso di programmazione su Hadoop
Esempio deviazione standard
39
Corso di programmazione su Hadoop
40
Corso di programmazione su Hadoop
41
Corso di programmazione su Hadoop
42
Corso di programmazione su Hadoop
43
Corso di programmazione su Hadoop
44
Corso di programmazione su Hadoop
45
Corso di programmazione su Hadoop
46
Corso di programmazione su Hadoop
Continua su:
http://svn.apache.org/viewvc/hadoop/common/trunk/hadoop-mapreduce-project/hadoopmapreduce-examples/src/main/java/org/apache/hadoop/examples/
47