3 Haziran 2016 Cuma

Hadoop

Hadoop ile ilgili aldığım notlar aşağıda. Hadooop bir ağaç gibidir. İşlemler alt düğümlere dağıtılır. Daha sonra sonuçlar birleştirilir. Aslında map reduce için Java ile geliştirilmiş en iyi yazılım Hadoop.

MAP REDUCE
Metin Satırı için Mapper
Şu satırı dahil ederiz.
import org.apache.hadoop.mapreduce.Mapper;
İskeleti şöyledir
public class Stringmap extends Mapper<LongWritable, Text, Text, IntWritable> {
  public void map(LongWritable key, Text value, Context context)
  throws IOException, InterruptedException {
    ...
  }
}
Mapper için Kullanılan Ayraç
Buradaki soruda Mapper arayüzüne gelen key/value çiftlerini ayırmak için kullanılan ayraç anlatılıyor. İlk başlangıçta tab karakteri ayraç olarak kullanılıyor. 

Reducer
İskeleti şöyledir
public class ReceiptReducer extends Reducer<Text, IntWritable, Text, IntWritable> 
{
  public void reduce(Text key, Iterable<IntWritable> values,Context context) 
  throws IOException, InterruptedException {
  ...
  }
}
Buradaki soruda Reducer örneği verilmiş.

Job Sınıfı
waitForCompletion metodu
Şöyle yaparız.
Configuration conf = new Configuration();
Job job = new Job(conf, "Stringfound");

job.setJarByClass(ReceiptCount.class);

job.setMapperClass(ReceiptMapper.class);
job.setReducerClass(ReceiptReducer.class);
job.setMapOutputKeyClass(LongWritable.class);

job.setMapOutputValueClass(LongWritable.class);
job.setOutputKeyClass(Text.class);
job.setOutputValueClass(IntWritable.class);

FileInputFormat.addInputPath(job, new Path(args[0]));
FileOutputFormat.setOutputPath(job, new Path(args[1]));
        //setMapOutputKeyClass();

        //setMapOutputValueClass();
Path outputDir = new Path( args[1] );
outputDir.getFileSystem( conf ).delete( outputDir, true );
FileOutputFormat.setOutputPath( job, outputDir );

System.exit(job.waitForCompletion(true) ? 0 : 1);

FILESYSTEM
Hadoop ile gelen dosya sisteminde veri bloklarını saklayan birimlere Data Node deniyor. Aşağıdaki şekilde bir çok Data Node olabileceğini görmek mümkün.

HDFS node'lara erişmek için ssh bağlantısına ihtiyaç duyuyor.
Aşağıdaki şekilde NameNode'un tüm diğer DataNode'lardaki blok bilgisini sakladığını görmek mümkün. Okuma işlemi için önce NameNode'a gidip hangi bloğun nerede bulunduğunu öğrenmek gerekiyor.
 

HDFS Shell Komutları
fs
Dosyaları listeler. Örnek:
hadoop fs -ls
Bu komut ile dosyanın boyutunu ve kaç defa çoklandığını görmek mümkün.
Şu çıktı verir
Found 1 items
-rw-r--r--   1 hduser supergroup  45956 2012-07-19 20:57 /user/hduser/input/sou

dfs
fs ile aynıdır.
hadoop dfs -ls
 şu çıktıyı verir
Found 3 items
drwxr-xr-x   - hduser supergroup   0 2014-03-20 03:53 /user/hduser/gutenberg
drwxr-xr-x   - hduser supergroup   0 2014-03-24 22:34 /user/hduser/mytext-output
-rw-r--r--   1 hduser supergroup   126 2014-03-24 22:30 /user/hduser/text.txt
 
FileSystem
fs paketi ile kullanılabilen sınıflar FileSystem , Path , FSDataInputStream.
Burada bu sınıfları kullanarak bir Mapper'ın setup() metodunu kullanarak bir dosyayı yükleme örneği var.

HIVE
Create External Table
Şöyle yaparız.

create external table if not exists tableA (
....your existing DDL
)
location 'tableA path';
Drop Table
Şöyle yaparız.

drop tableA;



Hiç yorum yok:

Yorum Gönder