Merhaba,
Bugünkü
yazımıza, hbase’e biraz ara verip artık java kodlaması ile bigdata ortamına
nasıl erişim yapabildiğimize bakacağız. Yani kodlama işine başlıyoruz. Bigdata
ortamını ve teknolojisini anlatırken önceki blog yazımda aşağıdaki yazıyı
yazmıştım.
Bigdata öğrenmek
isteyenlere şunu söylüyorum: Bigdata pek çok disiplini bir arada
barındırıyor.Sistem bilginiz olması gerekiyor. Yani linux, kurulum, shell
komutları vs. Database,veriambarı,veri, structered olmayan data vs. vs.
bilginiz olması gerekir.
Programlama bilginiz olması gerekir. map-reduce komutları yazabilmek için başta java bilmeniz gerekiyor. Hadoop ve diğer tüm bileşenleri hive-pig-hbase-sqoop-flume vs. vs. hepsi java ile yazılmıştır. Klasik relational databaseden farklı bir ortam yer almaktadır burada.
Programlama bilginiz olması gerekir. map-reduce komutları yazabilmek için başta java bilmeniz gerekiyor. Hadoop ve diğer tüm bileşenleri hive-pig-hbase-sqoop-flume vs. vs. hepsi java ile yazılmıştır. Klasik relational databaseden farklı bir ortam yer almaktadır burada.
Bugüne kadar
hadoop-hdfs-hbase kurulumları yaparak sistem tarafına adım atmıştık. Peki
yazılım tarafı?
Bu yazımızla birlikte map-reduce java yazımına hafiften girmiş olacağız. Sonra ki blog yazılarımda tekrar hbase ortamına geri dönüp java ile yani kodlama ile hbase tablo create etme, kayıt insert etme, silme, sorgulama vs. kısımlarını göstermek isterim.
Şunu şimdiden belirteyim. İlla ki java diliyle mi map-reduce kodlaması yapılabiliyor? Elbette hayır. Java, Python. diğer dillere çok girmek istemiyorum.
Bu yazımızla birlikte map-reduce java yazımına hafiften girmiş olacağız. Sonra ki blog yazılarımda tekrar hbase ortamına geri dönüp java ile yani kodlama ile hbase tablo create etme, kayıt insert etme, silme, sorgulama vs. kısımlarını göstermek isterim.
Şunu şimdiden belirteyim. İlla ki java diliyle mi map-reduce kodlaması yapılabiliyor? Elbette hayır. Java, Python. diğer dillere çok girmek istemiyorum.
Önemli:
Aşağıdaki örnekleri anladıktan sonra kendinize ait bir hdfs explorer yazabilirsiniz. Tıpkı windows explorer gibi tree şiklinde klasörlerin ve dosyaların listelenmesi, silme, rename yapma, taşıma vs. işlemlerini gerçekleştiren bir uygulamayı yazması çok kolay olacaktır.
Açıkcası vakitsizlikten bu tür şeyleri yazamıyorum.
Bakın aşağıda bir örnek var.
http://bigdata.red-gate.com/hdfs-explorer.html
Aşağıdaki örnekleri anladıktan sonra kendinize ait bir hdfs explorer yazabilirsiniz. Tıpkı windows explorer gibi tree şiklinde klasörlerin ve dosyaların listelenmesi, silme, rename yapma, taşıma vs. işlemlerini gerçekleştiren bir uygulamayı yazması çok kolay olacaktır.
Açıkcası vakitsizlikten bu tür şeyleri yazamıyorum.
Bakın aşağıda bir örnek var.
http://bigdata.red-gate.com/hdfs-explorer.html
Hatırlatma:
Hdfs web ortamı için localhost:50070 giriş yapmanız yeterlidir. Böylece aşağıdaki program sonuçlarını daha iyi görebilirsiniz.
Yada bin/hadoop dfs -ls şeklinde shell komutlarını kullanabilirsiniz.
Hdfs web ortamı için localhost:50070 giriş yapmanız yeterlidir. Böylece aşağıdaki program sonuçlarını daha iyi görebilirsiniz.
Yada bin/hadoop dfs -ls şeklinde shell komutlarını kullanabilirsiniz.
Ben kodlamaları
eclipse ile yaptım. Hadoop yüklü klasörde yer alan lib klasöründeki tüm jar’
ları add external jars… seçeneği ile kodlamanızıa eklemeyi unutmayınız.
LOCAL’ den
DOSYAYI HDFS’ e YAZMA
import java.io.*;
import org.apache.hadoop.conf.*;
import org.apache.hadoop.fs.*;
import org.apache.hadoop.util.*;
import java.io.*;
import org.apache.hadoop.conf.*;
import org.apache.hadoop.fs.*;
import org.apache.hadoop.util.*;
public class
SAMPLE10 extends Configured implements Tool {
@Override
public int run(String[] args) throws Exception {
//parametreler aşağıdaki şekilde verilmelidir. birinci parametre local file olan yer ikincisi ise hdfs e yazılacak yer anlamındadır.
//args[0] =”/home/bigdata/Desktop/HRECB_SOURCE/weblog_entries.txt”;
//args[1] =”/data/CH2_HDFSWRITER”;
public int run(String[] args) throws Exception {
//parametreler aşağıdaki şekilde verilmelidir. birinci parametre local file olan yer ikincisi ise hdfs e yazılacak yer anlamındadır.
//args[0] =”/home/bigdata/Desktop/HRECB_SOURCE/weblog_entries.txt”;
//args[1] =”/data/CH2_HDFSWRITER”;
if(
args.length<2)
{
System.out.println("parametreler kismini okuyunuz. eksik parametre var");
return 1;
}
{
System.out.println("parametreler kismini okuyunuz. eksik parametre var");
return 1;
}
//hadoop/conf
klasöründe core-site.xml e bakarak aşağıdaki hdfs://localhost:54310
bulunabilir.
Configuration conf = new Configuration();
conf.set("fs.default.name","hdfs://localhost:54310");
FileSystem fs = FileSystem.get(conf);
Configuration conf = new Configuration();
conf.set("fs.default.name","hdfs://localhost:54310");
FileSystem fs = FileSystem.get(conf);
String
localInputPath = args[0];
Path outputPath = new Path(args[1]);
Path outputPath = new Path(args[1]);
OutputStream
os=fs.create(outputPath); //hdfs üzerinde ilgili dosya-dizin olmasa bile
oluşturur
InputStream is =
new BufferedInputStream(new FileInputStream(localInputPath));
org.apache.hadoop.io.IOUtils.copyBytes(is, os, conf);
org.apache.hadoop.io.IOUtils.copyBytes(is, os, conf);
return 0;
}
}
public static
void main(String[] args) throws Exception {
System.out.println("Program basliyor");;
int returnCode = ToolRunner.run(new SAMPLE10(), args);
System.out.println(returnCode);
System.out.println("Program bitti");;
}
System.out.println("Program basliyor");;
int returnCode = ToolRunner.run(new SAMPLE10(), args);
System.out.println(returnCode);
System.out.println("Program bitti");;
}
}
HDFS’ ten DOSYA
OKUYUP LOCAL’ e YAZMA:
import java.io.*;
import org.apache.hadoop.conf.*;
import org.apache.hadoop.fs.*;
import org.apache.hadoop.io.IOUtils;
import org.apache.hadoop.util.*;
import java.io.*;
import org.apache.hadoop.conf.*;
import org.apache.hadoop.fs.*;
import org.apache.hadoop.io.IOUtils;
import org.apache.hadoop.util.*;
public class SAMPLE10B
extends Configured implements Tool {
@Override
public int run(String[] args) throws Exception {
//parametreler aşağıdaki şekilde verilmelidir. birinci parametre hdfs’ ten okunan dosya ikinci ise okunan dosyanın yazıldığı local yerdir.
//args[0] =”/data/CH2_HDFSWRITER”;
//args[1] =”/home/bigdata/Desktop/HRECB_SOURCE/weblog_entries_READ.txt”;
public int run(String[] args) throws Exception {
//parametreler aşağıdaki şekilde verilmelidir. birinci parametre hdfs’ ten okunan dosya ikinci ise okunan dosyanın yazıldığı local yerdir.
//args[0] =”/data/CH2_HDFSWRITER”;
//args[1] =”/home/bigdata/Desktop/HRECB_SOURCE/weblog_entries_READ.txt”;
if(
args.length<2)
{
System.out.println("parametreler kismini okuyunuz. eksik parametre var");
return 1;
}
{
System.out.println("parametreler kismini okuyunuz. eksik parametre var");
return 1;
}
//hadoop/conf
klasöründe core-site.xml e bakarak aşağıdaki hdfs://localhost:54310
bulunabilir.
Configuration conf = new Configuration();
conf.set("fs.default.name","hdfs://localhost:54310");
FileSystem fs = FileSystem.get(conf);
Configuration conf = new Configuration();
conf.set("fs.default.name","hdfs://localhost:54310");
FileSystem fs = FileSystem.get(conf);
Path inputPath =
new Path(args[0]);
String localOutputPath = args[1];
String localOutputPath = args[1];
InputStream is =
fs.open(inputPath);
OutputStream os=new BufferedOutputStream(new FileOutputStream(localOutputPath));
IOUtils.copyBytes(is, os, conf);
OutputStream os=new BufferedOutputStream(new FileOutputStream(localOutputPath));
IOUtils.copyBytes(is, os, conf);
return 0;
}
}
public static
void main(String[] args) throws Exception {
System.out.println("Program basliyor");;
int returnCode = ToolRunner.run(new SAMPLE10B(), args);
System.out.println(returnCode);
System.out.println("Program bitti");;
}
System.out.println("Program basliyor");;
int returnCode = ToolRunner.run(new SAMPLE10B(), args);
System.out.println(returnCode);
System.out.println("Program bitti");;
}
}
EK BİLGİLER:
Dosya var mı yok mu kontrolü için?: boolean exists = fs.exists(inputPath);
Dosya var mı yok mu kontrolü için?: boolean exists = fs.exists(inputPath);
Geçerli bir
dosyamı ?: boolean isFile = fs.isFile(inputPath);
Dosya Adı Nasıl
Değiştirilir?: boolean renamed = fs.rename(inputPath, new
Path(“old_file.txt”));
Daha fazla bilgi
için aşağıdaki site incelenebilir.
http://myjavanotebook.blogspot.com.tr/2008/05/hadoop-file-system-tutorial.html
http://myjavanotebook.blogspot.com.tr/2008/05/hadoop-file-system-tutorial.html
Bugünkü blog
yazımız bu kadar.
Bir sonraki blog yazımda görüşmek dileğiyle.
Bir sonraki blog yazımda görüşmek dileğiyle.
Lütfen,
yorumlarınızı bekliyorum.
mmetin
Hiç yorum yok:
Yorum Gönder