SlideShare a Scribd company logo
1 of 71
Download to read offline
Hadoop
   devveri.com




       Aralık 2012
               v1.3
Hakkımda


●   Marmara Üni. Elektronik
●   Software Development Supervisor
    @ Gitti Gidiyor / eBay
●   12+ yıl yazılım tecrübesi
●   Java, C, C++, C#
●   Big Data, Search, NoSQL

                                             Hakan İlter
                                                 hilter@ebay.com
                                               twitter: devvericom
                                      http://tr.linkedin.com/in/hakanilter/
Gündem

●   Big Data (Dev veri)
●   Hadoop
●   HDFS
●   MapReduce
●   Hadoop Kurulum
●   Küme Yapısı
●   Hadoop Ekosistemi
Dev Veri
Dev Veri
Dev Veri Nedir
Teknoloji > Internet > Sosyal Medya > Mobil > ...

Dünya'daki verilerin %90'lık kısmı son iki yılda toplandı

Yapılandırılmış (structured) ve Yapılandırılmamış
(unstructured) verilerden meydana gelir

● Yapılandırılmış veriler: ürün, kategori, müşteri,
    fatura, ödeme...
●   Yapılandırılmamış veriler: tweet, paylaşım, beğeni
    (like), e-posta, video, tıklama...

%10 Yapılandırılmış, %90 Yapılandırılmamış
Dev Verinin 3 Boyutu
Büyüklük (Volume)
  ● Facebook 70+PB, eBay 5+PB

Hız (Velocity)
  ● Twitter'da hergün 12TB twit atılıyor

Çeşitlilik (Variety)
  ● Metin, sensör verileri, ses, görüntü, log
     dosyaları
Dev Veri
Dev Veri'nin Önemi
 ● Bu kadar veri tek başına bir anlam ifade etmiyor

 ● Önemli olan Dev Veri içerisinde saklanmış olan
   bilgiyi ortaya çıkartıp yaptığımız işi daha iyi
   anlamak, belki de geleceği tahmin etmeye
   çalışmak

 ● Bu gerçekleştirildiğinde;
   ○ Mutlu müşteriler
   ○ Daha fazla kazanç
   ○ Dolandırıcılıkta azalma
   ○ Daha sağlıklı insanlar
   ○ ...
Geleneksel Sistemlerin Problemleri
 ● RDBMS
   Göreceli olarak küçük boyutta veri, yapılandırılmamış
   verilere uygun değil

 ● Donanım limitleri
   Daha fazla CPU, daha fazla RAM, daha fazla Disk =
   Daha fazla Maliyet

 ● Yazılımsal karmaşıklık
   Senkronizasyon, bant genişliği, erişilebilirlik, hata
   toleransı
Peki ya gerçek problem?
     Gerçek problem: Veriyi işlemciye
             ulaştırabilmek!


       100GB boyutundaki bir veriyi

   tipik bir disk ile (~75 MB/sn) aktarmak

      yaklaşık 22 dakika!
Yeni bir yaklaşım

 ● Ölçeklenebilir

 ● Tutarlı

 ● Veri Garantili

 ● Erişilebilir
Kim çözdü?




  ● Google File System (2003)
  ● MapReduce (2004)
  ● Big Table (2006)
ve Hadoop!


 Veri işleme amaçlı dağıtık uygulamalar
 yazılmasını sağlayan bir platform ve açık
 kaynaklı bir Apache projesidir.
Gündem

●   Big Data (Dev veri)
●   Hadoop
●   HDFS
●   MapReduce
●   Hadoop Kurulum
●   Küme Yapısı
●   Hadoop Ekosistemi
Neden Hadoop
● Esnek
  Her türlü veriyi saklayıp analizini yapabilir

● Ölçeklenebilir
  Binlerce düğüm bir araya getirilebilir

● Ekonomik
  Açık kaynaklı, "commodity" donanımda çalışabilir
Nerede?
Nerede?
Gitti Gidiyor'da Hadoop



                                     İlgili diğer aramalar

                         Nokkia aratılmış ama Nokia olarak
                         düzeltilmiş




Nokia
kelimesiyle
daha ilgili
olduğu için Cep
telefonu
kategorisi daha
üstte yer alıyor
Gitti Gidiyor'da Hadoop
                                            "Metallica" ile ilgili diğer aramalar




                    Mobil uygulama ana sayfada
                    kişiselleştirilmiş ürün gösterimi


                                   Autocomplete verisi
Kimler kullanıyor?
Hadoop

İki ana bileşenden oluşur
   ● Hadoop Distributed File System (HDFS)
   ● MapReduce
Gündem

●   Big Data (Dev veri)
●   Hadoop
●   HDFS
●   MapReduce
●   Hadoop Kurulum
●   Küme Yapısı
●   Hadoop Ekosistemi
HDFS
Verinin saklanmasından sorumludur
  ● Dağıtık bir dosya sistemidir
  ● Veriyi 64MB ya da 128MB'lık bloklar halinde saklar
  ● Her blok küme içerisinde farklı düğümlere dağıtılır
  ● Her bloğun varsayılan 3 kopyası tutulur
  ● Bu sayede verinin erişilebilirliği ve güvenilirliği
      sağlanmış olur
   ● Aynı dosyaya ait bloklar farklı düğümlerde olabilir
HDFS
●   Normal dosya sistemi üzerinde çalışır: ext3, ext4, xfs
●   Büyük miktarda veri için yedekli depolama sağlar
●   Düşük maliyetli sunucular üzerinde çalışmaya uygundur
●   Küçük çok dosya yerine büyük daha az dosya tutulmalıdır
●   Ortalama bir dosya 100MB civarı olmalıdır
●   Rastlantısal erişim yoktur (write once)
●   Büyük ve duraksız (streaming) veri erişimine göre
    optimize edilmiştir
HDFS
Blokların düğümler üzerine dağılım örneği

   blok 1   blok 2                 blok 3   blok 4


   blok 3                          blok 2
                     Data Node 1                     Data Node 2



   blok 3   blok 4                 blok 4   blok 1


   blok 1                          blok 2
                     Data Node 3                     Data Node 4
HDFS Erişimi
HDFS üzerindeki verilere konsol üzerinden hadoop fs
komutu ile erişilebilir:
  hadoop fs -ls                     Dosyaları listeler

  hadoop fs -mkdir <path>           Klasör oluşturur

  hadoop fs -put <local> <target>   Lokalden HDFS'e dosya kopyalar

  hadoop fs -get <source> <local>   HDFS'den lokale dosya kopyalar

  hadoop fs -cat <filename>         Dosya içeriğini konsola basar

  hadoop fs -rmr <filename>         Dosyayı siler
Gündem

●   Big Data (Dev veri)
●   Hadoop
●   HDFS
●   MapReduce
●   Hadoop Kurulum
●   Küme Yapısı
●   Hadoop Ekosistemi
MapReduce
Veriyi işleme yöntemidir
  ● Fonksiyonel programlamadan esinlenilmiştir
  ● Map ve Reduce birer fonksiyondur
  ● Map fonksiyonu ile veri içerisinden istenilen veriler
      anahtar-değer formatında seçilir
   ● Reduce fonksiyonu ile de seçilen bu veriler
      üzerinde işlem yapılır, sonuç yine anahtar-değer
      olarak iletilir
   ● Map ve Reduce arasında Shuffle ve Sort aşamaları
      vardır
MapReduce
Daha kolay anlaşılabilir olması için SQL'e benzetmek
gerekirse;


● WHERE ile yapılan filtreleme gibi Map aşamasında
   sadece ihtiyacımız olan veriler seçilir
● Reduce aşamasında ise SUM, COUNT, AVG gibi
   birleştirme işlemleri yapılır
MapReduce
● Map aşamasındaki işlemler küme üzerinde paralel
   olarak çalışır
● Bu sayede kümenin büyüklüğüne göre veriler hızlı bir
   şekilde işlenebilir hale gelmiş olur
● Her iş parçacığı verinin belirli bir parçasını işler
● İş parçacıkları mümkünse üzerinde çalıştığı
   düğümdeki verileri işler. Buna Data Localization
   denir
MapReduce
MapReduce ile akış örneği
MapReduce
● Uygulama geliştirilirken sadece Map ve Reduce
   metodları yazılır, geri kalan işleyiş otomatik
   gerçekleşir
● Hadoop tamamen Java ile geliştirildiği için
   MapReduce uygulamaları Java ile yazılır, jar olarak
   paketlenir
● Streaming özelliği sayesinde Python, C++, Php gibi
   farklı dillerde de kullanılabilir
Word Count
Map Metodu
public void map(LongWritable key, Text value, Context context)
    throws IOException, InterruptedException
{
    String line = value.toString().toLowerCase();
    StringTokenizer tokenizer = new StringTokenizer(line);
    while (tokenizer.hasMoreTokens()) {
         Text word = new Text(tokenizer.nextToken());
         context.write(word, new IntWritable(1));
    }
}
Word Count
Reduce Metodu
public void reduce(Text key, Iterable<IntWritable> values, Context context)
    throws IOException, InterruptedException
{
    int sum = 0;
    for (IntWritable value : values) {
         sum += value.get();
    }
    context.write(key, new IntWritable(sum));
}
Word Count
Tool sınıfı metodları
public int run(String[] args) throws Exception
{
    if (args.length != 2) {
        System.err.printf("Usage: %s [generic options] <input> <output>n", getClass().getSimpleName());
        ToolRunner.printGenericCommandUsage(System.err);
        return -1;
    }

    Job job = new Job();
    job.setJarByClass(WordCount.class);

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

    job.setMapperClass(WordCountMapper.class);
    job.setReducerClass(WordCountReducer.class);

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

    return job.waitForCompletion(true) ? 0 : 1;
}

public static void main(String[] args) throws Exception {
    int exitCode = ToolRunner.run(new WordCount(), args);
    System.exit(exitCode);
}
Word Count
MapReduce programını çalıştırma
$ hadoop jar <jarfile> <classname> <args...>
$ hadoop jar devveri-mapreduce-0.0.1-SNAPSHOT.jar com.devveri.hadoop.mapreduce.WordCount test.txt devveri
12/07/09 23:44:41 WARN mapred.JobClient: Use GenericOptionsParser for parsing the arguments. Applications should
implement Tool for the same.
12/07/09 23:44:41 INFO input.FileInputFormat: Total input paths to process : 1
12/07/09 23:44:41 INFO mapred.JobClient: Running job: job_201204231254_5522
12/07/09 23:44:42 INFO mapred.JobClient: map 0% reduce 0%
12/07/09 23:44:56 INFO mapred.JobClient: map 100% reduce 0%
12/07/09 23:45:08 INFO mapred.JobClient: map 100% reduce 100%
12/07/09 23:45:13 INFO mapred.JobClient: Job complete: job_201204231254_5522
12/07/09 23:45:13 INFO mapred.JobClient: Counters: 29
12/07/09 23:45:13 INFO mapred.JobClient:   Job Counters
12/07/09 23:45:13 INFO mapred.JobClient:     Launched reduce tasks=1
12/07/09 23:45:13 INFO mapred.JobClient:     SLOTS_MILLIS_MAPS=11984
12/07/09 23:45:13 INFO mapred.JobClient:     Total time spent by all reduces waiting after reserving slots (ms)=0
12/07/09 23:45:13 INFO mapred.JobClient:     Total time spent by all maps waiting after reserving slots (ms)=0
12/07/09 23:45:13 INFO mapred.JobClient:     Launched map tasks=1
12/07/09 23:45:13 INFO mapred.JobClient:     Data-local map tasks=1
12/07/09 23:45:13 INFO mapred.JobClient:     SLOTS_MILLIS_REDUCES=10033
12/07/09 23:45:13 INFO mapred.JobClient:   File Output Format Counters
12/07/09 23:45:13 INFO mapred.JobClient:     Bytes Written=31
12/07/09 23:45:13 INFO mapred.JobClient:   FileSystemCounters
12/07/09 23:45:13 INFO mapred.JobClient:     FILE_BYTES_READ=61
...
Gündem

●   Big Data (Dev veri)
●   Hadoop
●   HDFS
●   MapReduce
●   Hadoop Kurulum
●   Küme Yapısı
●   Hadoop Ekosistemi
Hadoop Kurulumu
 ● Apache sürümü dışında Cloudera, Hortonworks gibi
    firmaların dağıtımları da kullanılabilir
 ● Farklı sürümleri bulunuyor
       1.0.X - current stable version, 1.0 release
       1.1.X - current beta version, 1.1 release
       2.X.X - current alpha version
       0.23.X - simmilar to 2.X.X but missing NN HA.
       0.22.X - does not include security
       0.20.203.X - old legacy stable version
       0.20.X - old legacy version

 ● Küme olarak (full cluster) ya da tek sunucuya (pseudo-
    distributed) kurulabilir
 ● deb, rpm veya tarball olarak indirilip kurulabilir
Örnek kurulum adım 1
 ● JDK 1.6, openssh-server ve rsync sistemde olmalı
    $ sudo apt-get install ssh
    $ sudo apt-get install rsync
Örnek kurulum adım 2
 ● Sunucular arası şifresiz bağlantı gerekir
    $ ssh localhost
    The authenticity of host 'localhost (127.0.0.1)' can't be
    established.
    ECDSA key fingerprint is 00:ab:cd:ef:12:23:56:ab:ba:c4:89:
    11:d8:22:33:1b.
    Are you sure you want to continue connecting (yes/no)? yes


    ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa
    cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys
Örnek kurulum adım 3
 ● Kurulumun yapılacağı klasörler ayarlanır
    $ sudo mkdir /usr/java
    $ sudo chown -R devveri:devveri /usr/java
    $ mkdir /usr/java/hadoop-data
Örnek kurulum adım 4
 ● Apache sunucusundan son sürüm indirilir
    $ cd /usr/java/
    $ wget "http://www.eu.apache.org/dist/hadoop/
    common/hadoop-1.0.4/hadoop-1.0.4.tar.gz"
    $ gzip -dc hadoop-1.0.4.tar.gz | tar xf -
    $ ln -s /usr/java/hadoop-1.0.4 /usr/java/hadoop
Örnek kurulum adım 5
 ● Küme ile ilgili genel ayarlar conf/core-site.xml
    dosyasında bulunur
    <configuration>
        <property>
             <name>fs.default.name</name>
             <value>hdfs://localhost:9000</value>
        </property>
        <property>
             <name>hadoop.tmp.dir</name>
             <value>/usr/java/hadoop-data</value>
        </property>
    </configuration>
Örnek kurulum adım 6
 ● HDFS ile ilgili ayarlar conf/hdfs-site.xml dosyası
    içerisinde bulunur

    <configuration>
        <property>
            <name>dfs.replication</name>
            <value>1</value>
        </property>
    </configuration>
Örnek kurulum adım 7
 ● MapReduce ile ilgili ayarlar conf/mapred-site.xml
    dosyası içerisinde bulunur

    <configuration>
        <property>
            <name>mapred.job.tracker</name>
            <value>localhost:9001</value>
        </property>
    </configuration>
Örnek kurulum adım 8
 ● Hadoop ile ilgili ortam değişkenleri conf/hadoop-env.
    sh dosyasında bulunur

    export JAVA_HOME=/usr/java/jdk
    export HADOOP_HEAPSIZE=512
    export HADOOP_HOME_WARN_SUPPRESS="TRUE"
Örnek kurulum adım 9
 ● .bash_profile ya da .bash_rc dosyalarında $PATH
    değişkeni ayarlanmalıdır

    JAVA_HOME=/usr/java/jdk
    PATH=$PATH:$JAVA_HOME/bin


    HADOOP_HOME=/usr/java/hadoop
    PATH=$PATH:$HADOOP_HOME/bin
Örnek kurulum adım 10
 ● NameNode formatlanmalıdır
   $ hadoop namenode -format
   12/09/05 00:07:06 INFO namenode.NameNode: STARTUP_MSG:
   /************************************************************
   STARTUP_MSG: Starting NameNode
   STARTUP_MSG: host = devveri-HP-ProBook-6540b/127.0.1.1
   STARTUP_MSG: args = [-format]
   STARTUP_MSG: version = 1.0.3
   STARTUP_MSG: build = https://svn.apache.org/repos/asf/hadoop/common/branches/branch-1.0 -r 1335192; compiled by
   'hortonfo' on Tue May 8 20:31:25 UTC 2012
   ************************************************************/
   12/09/05 00:07:06 INFO util.GSet: VM type   = 32-bit
   12/09/05 00:07:06 INFO util.GSet: 2% max memory = 9.1025 MB
   12/09/05 00:07:06 INFO util.GSet: capacity = 2^21 = 2097152 entries
   12/09/05 00:07:06 INFO util.GSet: recommended=2097152, actual=2097152
   12/09/05 00:07:07 INFO namenode.FSNamesystem: fsOwner=devveri
   12/09/05 00:07:07 INFO namenode.FSNamesystem: supergroup=supergroup
   12/09/05 00:07:07 INFO namenode.FSNamesystem: isPermissionEnabled=true
   12/09/05 00:07:07 INFO namenode.FSNamesystem: dfs.block.invalidate.limit=100
   12/09/05 00:07:07 INFO namenode.FSNamesystem: isAccessTokenEnabled=false accessKeyUpdateInterval=0 min(s),
   accessTokenLifetime=0 min(s)
   12/09/05 00:07:07 INFO namenode.NameNode: Caching file names occuring more than 10 times
   12/09/05 00:07:07 INFO common.Storage: Image file of size 111 saved in 0 seconds.
   12/09/05 00:07:07 INFO common.Storage: Storage directory /usr/java/hadoop-data/dfs/name has been successfully formatted.
   12/09/05 00:07:07 INFO namenode.NameNode: SHUTDOWN_MSG:
   /************************************************************
   SHUTDOWN_MSG: Shutting down NameNode at devveri-HP-ProBook-6540b/127.0.1.1
   ************************************************************/
Gündem

●   Big Data (Dev veri)
●   Hadoop
●   HDFS
●   MapReduce
●   Hadoop Kurulum
●   Küme Yapısı
●   Hadoop Ekosistemi
Küme Yapısı
 ● Hadoop kümesini durdurup başlatmak için bin
    klasörü altındaki script'ler kullanılır

  start-all.sh                 Kümeyi çalıştırır

  stop-all.sh                  Kümeyi durdurur

  start-dfs.sh                 Sadece HDFS süreçlerini çalıştırır

  stop-dfs.sh                  HDFS süreçlerini durdurur

  start-mapred.sh              Sadece MapReduce süreçlerini çalıştırır

  stop-mapred.sh               MapReduce süreçlerini durdurur
Hadoop Süreçleri
 Hadoop kümesi içerisinde birlikte çalışan birkaç farklı
 süreç vardır
    ●   NameNode
    ●   SecondaryNameNode
    ●   DataNode
    ●   JobTracker
    ●   TaskTracker
NameNode
Ana (master) düğümdür
  ● Hangi blok, hangi dosya nerededir takip eder
  ● Her türlü dosya işleminden sorumludur
  ● Veri değil sadece metadata saklar
  ● Her zaman ayakta olmak zorundadır
NameNode çalışmaz ise tüm küme çalışmaz hale gelir
   ● Hızlı erişim açısından verileri hafızada tutar
   ● Çökmeye karşı diske bilgileri senkronize eder
   ● Bu verileri mutlaka yedeklenmelidir
SecondaryNameNode
NameNode yedeği değildir!
  ● Sadece NameNode tarafından yapılmayan bazı
     görevleri yerine getirir
DataNode
Verilerin bulunduğu düğümdür
  ● Blok halinde dosyaları saklar
  ● Yedekli olduğu için kapanması halinde veri kaybı
      yaşanmaz
   ● Veriler bu düğümlerde olduğu için analiz işlemleri
      de bu düğümler üzerinde çalışır
   ● Küme içerisinde birden fazla olabilir (olmalıdır)
   ● 4000+ düğüme kadar büyüyebilir
   ● Sayısı arttıkça performansı lineer olarak artar!
JobTracker
 MapReduce işlerini takip eder
   ● NameNode gibi tektir
   ● İstemciler MapReduce işlerini JobTracker'a
       gönderir
    ● İşleri diğer düğümlere dağıtır
    ● İş parçacıklarının durumunu takip eder
    ● Bir iş parçacığında sorun olursa bunu sonlandırarak
       yeni bir tekrar çalıştırır
    ● Bazı durumlarda aynı işi yapan birden fazla iş
       parçacığı çalıştırabilir
TaskTracker
 MapReduce işlemlerini çalıştırır
   ● DataNode ile aynı düğümde bulunur
   ● JobTracker tarafından gönderilen iş
       parçacıklarından sorumludur
    ● Map ve Reduce görevlerini çalıştırıp sonuçlarını
       JobTracker'a iletir
Kümeye bakış

     NameNode   JobTracker


     SNNode
                       Node 1



     DataNode   TaskTracker     DataNode   TaskTracker


                       Node 2                     Node 3



     DataNode   TaskTracker     DataNode   TaskTracker


                       Node 4                     Node 5
NameNode Arayüzü
JobTracker Arayüzü
Gündem

●   Big Data (Dev veri)
●   Hadoop
●   HDFS
●   MapReduce
●   Hadoop Kurulum
●   Küme Yapısı
●   Hadoop Ekosistemi
Hadoop Ecosystem

Hadoop çatısı altında birçok proje barınır
●   Hive
●   Pig
●   HBase
●   Mahout
●   Impala
●   Diğerleri: Sqoop, Flume, Avro, Zookeeper, Oozie,
    Cascading...
Hive
● Facebook tarafından geliştirilmiştir
● SQL benzeri HiveQL dili ile Java kullanmadan
   MapReduce uygulamaları yazılmasını sağlar
● Öncelikle HDFS üzerindeki dosyalar tablo olarak
   tanıtılır
   ○ create table member_visits (member_id string,
       visit_count int) row format delimited fields
       terminated by 't' stored as textfile;
   ○ load data inpath '/usr/hadoop/anyfile' into table
       members;
● Daha sonra bu sanal tablolar sorgulanabilir
   ○ select avg(visit_count) from member_visits where
       visit_count > 0;
Pig
 ● Yahoo tarafından geliştirilmiştir
 ● MapReduce yazmak için "DataFlow" dili olarak
      adlandırılan, SQL'den farklı kendine özgü PigLatin dili
      kullanılır
 ● Join destekler, daha kolay ve performanslı
      MapReduce programaları yazmayı sağlar
      ○ A = LOAD 'companies.csv' USING PigStorage() AS
         (productId:int, productName:chararray);
         B = FILTER A BY productId > 3;
         C = FOREACH B GENERATE *;
         DUMP C;
HBase
● Hadoop üzerinde çalışan NoSQL veritabanıdır
● Google Big Table örnek alınarak geliştirilmiştir
● Esnek şema yapısı ile binlerce kolon, petabyte'larca
   satırdan oluşan veriyi saklayabilir
● HDFS üzerinde çalıştığından MapReduce destekler
● Veriye erişiminde bazı kısıtlar vardır
● Verilere anahtar üzerinden ya da partial table scan
   ile erişilebilir
● İkincil indeks, karmaşık sorgu çalıştırma desteği
   yoktur
Mahout
● Hadoop üzerinde çalışabilen Machine Learning
   algoritmalarını içeren bir kütüphanedir
● Recommendation
● Clustering
● Classification
Impala
 ●   Google Dremel (2010) projesinden esinlenmiştir
 ●   Cloudera tarafından geliştirilmiştir
 ●   MapReduce yapmadan verilere direkt erişir
 ●   HiveQL destekler, 7-45 kat daha hızlı çalışır
Sorular




          ?
DevVeri.com Hakkında




  Big Data, Search, NoSQL her türlü yazılarınızı bekliyoruz!
Kaynaklar
http://hadoop.apache.org
http://www.cloudera.com
http://www-01.ibm.com/software/data/bigdata/
http://en.wikipedia.org/wiki/Google_File_System
http://en.wikipedia.org/wiki/MapReduce
http://en.wikipedia.org/wiki/BigTable
http://www.evolven.com/images/stories/blog/blog_infographic_big_data_autonomy-big-data.jpg
http://architects.dzone.com/articles/big-data-rich-compendium-big
http://devveri.com
Teşekkürler!

More Related Content

What's hot

Hbase Kullanım Senaryoları
Hbase Kullanım SenaryolarıHbase Kullanım Senaryoları
Hbase Kullanım SenaryolarıTalat UYARER
 
Big Data Analytics
Big Data AnalyticsBig Data Analytics
Big Data AnalyticsMudur Alkan
 
Hadoop,Pig,Hive ve Oozie ile Büyük Veri Analizi
Hadoop,Pig,Hive ve Oozie ile Büyük Veri AnaliziHadoop,Pig,Hive ve Oozie ile Büyük Veri Analizi
Hadoop,Pig,Hive ve Oozie ile Büyük Veri AnaliziSerkan Sakınmaz
 
Apache Spark : Genel Bir Bakış
Apache Spark : Genel Bir BakışApache Spark : Genel Bir Bakış
Apache Spark : Genel Bir BakışBurak KÖSE
 
Veri işleme üzerine, Hakan Sarıbıyık
Veri işleme üzerine, Hakan SarıbıyıkVeri işleme üzerine, Hakan Sarıbıyık
Veri işleme üzerine, Hakan SarıbıyıkHakan Sarıbıyık
 
Berkeley Data Analytics Stack Genel Bakış
Berkeley Data Analytics Stack Genel Bakış Berkeley Data Analytics Stack Genel Bakış
Berkeley Data Analytics Stack Genel Bakış Veysel Taşcıoğlu
 

What's hot (7)

Hbase Kullanım Senaryoları
Hbase Kullanım SenaryolarıHbase Kullanım Senaryoları
Hbase Kullanım Senaryoları
 
Big Data Analytics
Big Data AnalyticsBig Data Analytics
Big Data Analytics
 
Hadoop,Pig,Hive ve Oozie ile Büyük Veri Analizi
Hadoop,Pig,Hive ve Oozie ile Büyük Veri AnaliziHadoop,Pig,Hive ve Oozie ile Büyük Veri Analizi
Hadoop,Pig,Hive ve Oozie ile Büyük Veri Analizi
 
Hadoop nedir
Hadoop nedirHadoop nedir
Hadoop nedir
 
Apache Spark : Genel Bir Bakış
Apache Spark : Genel Bir BakışApache Spark : Genel Bir Bakış
Apache Spark : Genel Bir Bakış
 
Veri işleme üzerine, Hakan Sarıbıyık
Veri işleme üzerine, Hakan SarıbıyıkVeri işleme üzerine, Hakan Sarıbıyık
Veri işleme üzerine, Hakan Sarıbıyık
 
Berkeley Data Analytics Stack Genel Bakış
Berkeley Data Analytics Stack Genel Bakış Berkeley Data Analytics Stack Genel Bakış
Berkeley Data Analytics Stack Genel Bakış
 

Similar to Hadoop @ devveri.com

AnkaraJUG Haziran 2013 - No SQL / Big Data
AnkaraJUG Haziran 2013 - No SQL / Big DataAnkaraJUG Haziran 2013 - No SQL / Big Data
AnkaraJUG Haziran 2013 - No SQL / Big DataAnkara JUG
 
Ankara JUG Big Data Presentation
Ankara JUG Big Data PresentationAnkara JUG Big Data Presentation
Ankara JUG Big Data PresentationSerkan Özal
 
Hepsistream real time click-stream data analytics platform
Hepsistream real time click-stream  data analytics platformHepsistream real time click-stream  data analytics platform
Hepsistream real time click-stream data analytics platformHepsiburada
 
TBD Bilişim 2014 Veri Analitiği
TBD Bilişim 2014 Veri AnalitiğiTBD Bilişim 2014 Veri Analitiği
TBD Bilişim 2014 Veri Analitiğiisa ölmez
 
Dspace Migration and Dspace Piwik Integration
Dspace Migration and Dspace Piwik IntegrationDspace Migration and Dspace Piwik Integration
Dspace Migration and Dspace Piwik IntegrationMesut Güngör
 
Mongodb Ödev- İnternet programcılığı- IP2-Vize 2
Mongodb Ödev- İnternet programcılığı- IP2-Vize 2Mongodb Ödev- İnternet programcılığı- IP2-Vize 2
Mongodb Ödev- İnternet programcılığı- IP2-Vize 2gulindasdan
 
Ceph Türkiye 2.meetup İstanbul
Ceph Türkiye 2.meetup İstanbulCeph Türkiye 2.meetup İstanbul
Ceph Türkiye 2.meetup İstanbulHuseyin Cotuk
 
Sunucularımızı Gözleyelim
Sunucularımızı GözleyelimSunucularımızı Gözleyelim
Sunucularımızı GözleyelimOguz Yarimtepe
 
Active Directory ve Powershell ile Hyper-V Taşıma
Active Directory ve Powershell ile Hyper-V TaşımaActive Directory ve Powershell ile Hyper-V Taşıma
Active Directory ve Powershell ile Hyper-V TaşımaMustafa
 
Eticaret akademi Yazılım ve IT süreçleri
Eticaret akademi Yazılım ve IT süreçleriEticaret akademi Yazılım ve IT süreçleri
Eticaret akademi Yazılım ve IT süreçleriMurat Kader
 
Symfony2 ve Doctrine ile PostgreSQL'i Kullanarak Performanslı Mimari Oluşturma
Symfony2 ve Doctrine ile PostgreSQL'i Kullanarak Performanslı Mimari OluşturmaSymfony2 ve Doctrine ile PostgreSQL'i Kullanarak Performanslı Mimari Oluşturma
Symfony2 ve Doctrine ile PostgreSQL'i Kullanarak Performanslı Mimari OluşturmaHüseyin Mert
 
Istanbul Datascience Academy Talks
Istanbul Datascience Academy TalksIstanbul Datascience Academy Talks
Istanbul Datascience Academy TalksMetin Uslu
 
Berkeley Data Analytics Stack Genel Bakış
Berkeley Data Analytics Stack Genel BakışBerkeley Data Analytics Stack Genel Bakış
Berkeley Data Analytics Stack Genel Bakıştechbase
 
Bağlı Veri Bulutu Üzerinde Yazılım Geliştirme
Bağlı Veri Bulutu Üzerinde Yazılım GeliştirmeBağlı Veri Bulutu Üzerinde Yazılım Geliştirme
Bağlı Veri Bulutu Üzerinde Yazılım GeliştirmeTayfun Gökmen Halaç
 

Similar to Hadoop @ devveri.com (20)

MongoDB Overview
MongoDB OverviewMongoDB Overview
MongoDB Overview
 
AnkaraJUG Haziran 2013 - No SQL / Big Data
AnkaraJUG Haziran 2013 - No SQL / Big DataAnkaraJUG Haziran 2013 - No SQL / Big Data
AnkaraJUG Haziran 2013 - No SQL / Big Data
 
NoSQL Sunumu
NoSQL SunumuNoSQL Sunumu
NoSQL Sunumu
 
Ankara JUG Big Data Presentation
Ankara JUG Big Data PresentationAnkara JUG Big Data Presentation
Ankara JUG Big Data Presentation
 
Hepsistream real time click-stream data analytics platform
Hepsistream real time click-stream  data analytics platformHepsistream real time click-stream  data analytics platform
Hepsistream real time click-stream data analytics platform
 
TBD Bilişim 2014 Veri Analitiği
TBD Bilişim 2014 Veri AnalitiğiTBD Bilişim 2014 Veri Analitiği
TBD Bilişim 2014 Veri Analitiği
 
Dspace Migration and Dspace Piwik Integration
Dspace Migration and Dspace Piwik IntegrationDspace Migration and Dspace Piwik Integration
Dspace Migration and Dspace Piwik Integration
 
Mongodb Ödev- İnternet programcılığı- IP2-Vize 2
Mongodb Ödev- İnternet programcılığı- IP2-Vize 2Mongodb Ödev- İnternet programcılığı- IP2-Vize 2
Mongodb Ödev- İnternet programcılığı- IP2-Vize 2
 
Delphi 7
Delphi 7Delphi 7
Delphi 7
 
Ceph Türkiye 2.meetup İstanbul
Ceph Türkiye 2.meetup İstanbulCeph Türkiye 2.meetup İstanbul
Ceph Türkiye 2.meetup İstanbul
 
Mongo sunum
Mongo sunumMongo sunum
Mongo sunum
 
Sunucularımızı Gözleyelim
Sunucularımızı GözleyelimSunucularımızı Gözleyelim
Sunucularımızı Gözleyelim
 
MongoDB ve C# Driver'ı
MongoDB ve C# Driver'ıMongoDB ve C# Driver'ı
MongoDB ve C# Driver'ı
 
Active Directory ve Powershell ile Hyper-V Taşıma
Active Directory ve Powershell ile Hyper-V TaşımaActive Directory ve Powershell ile Hyper-V Taşıma
Active Directory ve Powershell ile Hyper-V Taşıma
 
Web Programlama
Web ProgramlamaWeb Programlama
Web Programlama
 
Eticaret akademi Yazılım ve IT süreçleri
Eticaret akademi Yazılım ve IT süreçleriEticaret akademi Yazılım ve IT süreçleri
Eticaret akademi Yazılım ve IT süreçleri
 
Symfony2 ve Doctrine ile PostgreSQL'i Kullanarak Performanslı Mimari Oluşturma
Symfony2 ve Doctrine ile PostgreSQL'i Kullanarak Performanslı Mimari OluşturmaSymfony2 ve Doctrine ile PostgreSQL'i Kullanarak Performanslı Mimari Oluşturma
Symfony2 ve Doctrine ile PostgreSQL'i Kullanarak Performanslı Mimari Oluşturma
 
Istanbul Datascience Academy Talks
Istanbul Datascience Academy TalksIstanbul Datascience Academy Talks
Istanbul Datascience Academy Talks
 
Berkeley Data Analytics Stack Genel Bakış
Berkeley Data Analytics Stack Genel BakışBerkeley Data Analytics Stack Genel Bakış
Berkeley Data Analytics Stack Genel Bakış
 
Bağlı Veri Bulutu Üzerinde Yazılım Geliştirme
Bağlı Veri Bulutu Üzerinde Yazılım GeliştirmeBağlı Veri Bulutu Üzerinde Yazılım Geliştirme
Bağlı Veri Bulutu Üzerinde Yazılım Geliştirme
 

Hadoop @ devveri.com

  • 1. Hadoop devveri.com Aralık 2012 v1.3
  • 2. Hakkımda ● Marmara Üni. Elektronik ● Software Development Supervisor @ Gitti Gidiyor / eBay ● 12+ yıl yazılım tecrübesi ● Java, C, C++, C# ● Big Data, Search, NoSQL Hakan İlter hilter@ebay.com twitter: devvericom http://tr.linkedin.com/in/hakanilter/
  • 3. Gündem ● Big Data (Dev veri) ● Hadoop ● HDFS ● MapReduce ● Hadoop Kurulum ● Küme Yapısı ● Hadoop Ekosistemi
  • 6. Dev Veri Nedir Teknoloji > Internet > Sosyal Medya > Mobil > ... Dünya'daki verilerin %90'lık kısmı son iki yılda toplandı Yapılandırılmış (structured) ve Yapılandırılmamış (unstructured) verilerden meydana gelir ● Yapılandırılmış veriler: ürün, kategori, müşteri, fatura, ödeme... ● Yapılandırılmamış veriler: tweet, paylaşım, beğeni (like), e-posta, video, tıklama... %10 Yapılandırılmış, %90 Yapılandırılmamış
  • 7. Dev Verinin 3 Boyutu Büyüklük (Volume) ● Facebook 70+PB, eBay 5+PB Hız (Velocity) ● Twitter'da hergün 12TB twit atılıyor Çeşitlilik (Variety) ● Metin, sensör verileri, ses, görüntü, log dosyaları
  • 9. Dev Veri'nin Önemi ● Bu kadar veri tek başına bir anlam ifade etmiyor ● Önemli olan Dev Veri içerisinde saklanmış olan bilgiyi ortaya çıkartıp yaptığımız işi daha iyi anlamak, belki de geleceği tahmin etmeye çalışmak ● Bu gerçekleştirildiğinde; ○ Mutlu müşteriler ○ Daha fazla kazanç ○ Dolandırıcılıkta azalma ○ Daha sağlıklı insanlar ○ ...
  • 10. Geleneksel Sistemlerin Problemleri ● RDBMS Göreceli olarak küçük boyutta veri, yapılandırılmamış verilere uygun değil ● Donanım limitleri Daha fazla CPU, daha fazla RAM, daha fazla Disk = Daha fazla Maliyet ● Yazılımsal karmaşıklık Senkronizasyon, bant genişliği, erişilebilirlik, hata toleransı
  • 11. Peki ya gerçek problem? Gerçek problem: Veriyi işlemciye ulaştırabilmek! 100GB boyutundaki bir veriyi tipik bir disk ile (~75 MB/sn) aktarmak yaklaşık 22 dakika!
  • 12. Yeni bir yaklaşım ● Ölçeklenebilir ● Tutarlı ● Veri Garantili ● Erişilebilir
  • 13. Kim çözdü? ● Google File System (2003) ● MapReduce (2004) ● Big Table (2006)
  • 14. ve Hadoop! Veri işleme amaçlı dağıtık uygulamalar yazılmasını sağlayan bir platform ve açık kaynaklı bir Apache projesidir.
  • 15. Gündem ● Big Data (Dev veri) ● Hadoop ● HDFS ● MapReduce ● Hadoop Kurulum ● Küme Yapısı ● Hadoop Ekosistemi
  • 16. Neden Hadoop ● Esnek Her türlü veriyi saklayıp analizini yapabilir ● Ölçeklenebilir Binlerce düğüm bir araya getirilebilir ● Ekonomik Açık kaynaklı, "commodity" donanımda çalışabilir
  • 19. Gitti Gidiyor'da Hadoop İlgili diğer aramalar Nokkia aratılmış ama Nokia olarak düzeltilmiş Nokia kelimesiyle daha ilgili olduğu için Cep telefonu kategorisi daha üstte yer alıyor
  • 20. Gitti Gidiyor'da Hadoop "Metallica" ile ilgili diğer aramalar Mobil uygulama ana sayfada kişiselleştirilmiş ürün gösterimi Autocomplete verisi
  • 22. Hadoop İki ana bileşenden oluşur ● Hadoop Distributed File System (HDFS) ● MapReduce
  • 23. Gündem ● Big Data (Dev veri) ● Hadoop ● HDFS ● MapReduce ● Hadoop Kurulum ● Küme Yapısı ● Hadoop Ekosistemi
  • 24. HDFS Verinin saklanmasından sorumludur ● Dağıtık bir dosya sistemidir ● Veriyi 64MB ya da 128MB'lık bloklar halinde saklar ● Her blok küme içerisinde farklı düğümlere dağıtılır ● Her bloğun varsayılan 3 kopyası tutulur ● Bu sayede verinin erişilebilirliği ve güvenilirliği sağlanmış olur ● Aynı dosyaya ait bloklar farklı düğümlerde olabilir
  • 25. HDFS ● Normal dosya sistemi üzerinde çalışır: ext3, ext4, xfs ● Büyük miktarda veri için yedekli depolama sağlar ● Düşük maliyetli sunucular üzerinde çalışmaya uygundur ● Küçük çok dosya yerine büyük daha az dosya tutulmalıdır ● Ortalama bir dosya 100MB civarı olmalıdır ● Rastlantısal erişim yoktur (write once) ● Büyük ve duraksız (streaming) veri erişimine göre optimize edilmiştir
  • 26. HDFS Blokların düğümler üzerine dağılım örneği blok 1 blok 2 blok 3 blok 4 blok 3 blok 2 Data Node 1 Data Node 2 blok 3 blok 4 blok 4 blok 1 blok 1 blok 2 Data Node 3 Data Node 4
  • 27. HDFS Erişimi HDFS üzerindeki verilere konsol üzerinden hadoop fs komutu ile erişilebilir: hadoop fs -ls Dosyaları listeler hadoop fs -mkdir <path> Klasör oluşturur hadoop fs -put <local> <target> Lokalden HDFS'e dosya kopyalar hadoop fs -get <source> <local> HDFS'den lokale dosya kopyalar hadoop fs -cat <filename> Dosya içeriğini konsola basar hadoop fs -rmr <filename> Dosyayı siler
  • 28. Gündem ● Big Data (Dev veri) ● Hadoop ● HDFS ● MapReduce ● Hadoop Kurulum ● Küme Yapısı ● Hadoop Ekosistemi
  • 29. MapReduce Veriyi işleme yöntemidir ● Fonksiyonel programlamadan esinlenilmiştir ● Map ve Reduce birer fonksiyondur ● Map fonksiyonu ile veri içerisinden istenilen veriler anahtar-değer formatında seçilir ● Reduce fonksiyonu ile de seçilen bu veriler üzerinde işlem yapılır, sonuç yine anahtar-değer olarak iletilir ● Map ve Reduce arasında Shuffle ve Sort aşamaları vardır
  • 30. MapReduce Daha kolay anlaşılabilir olması için SQL'e benzetmek gerekirse; ● WHERE ile yapılan filtreleme gibi Map aşamasında sadece ihtiyacımız olan veriler seçilir ● Reduce aşamasında ise SUM, COUNT, AVG gibi birleştirme işlemleri yapılır
  • 31. MapReduce ● Map aşamasındaki işlemler küme üzerinde paralel olarak çalışır ● Bu sayede kümenin büyüklüğüne göre veriler hızlı bir şekilde işlenebilir hale gelmiş olur ● Her iş parçacığı verinin belirli bir parçasını işler ● İş parçacıkları mümkünse üzerinde çalıştığı düğümdeki verileri işler. Buna Data Localization denir
  • 33. MapReduce ● Uygulama geliştirilirken sadece Map ve Reduce metodları yazılır, geri kalan işleyiş otomatik gerçekleşir ● Hadoop tamamen Java ile geliştirildiği için MapReduce uygulamaları Java ile yazılır, jar olarak paketlenir ● Streaming özelliği sayesinde Python, C++, Php gibi farklı dillerde de kullanılabilir
  • 34. Word Count Map Metodu public void map(LongWritable key, Text value, Context context) throws IOException, InterruptedException { String line = value.toString().toLowerCase(); StringTokenizer tokenizer = new StringTokenizer(line); while (tokenizer.hasMoreTokens()) { Text word = new Text(tokenizer.nextToken()); context.write(word, new IntWritable(1)); } }
  • 35. Word Count Reduce Metodu public void reduce(Text key, Iterable<IntWritable> values, Context context) throws IOException, InterruptedException { int sum = 0; for (IntWritable value : values) { sum += value.get(); } context.write(key, new IntWritable(sum)); }
  • 36. Word Count Tool sınıfı metodları public int run(String[] args) throws Exception { if (args.length != 2) { System.err.printf("Usage: %s [generic options] <input> <output>n", getClass().getSimpleName()); ToolRunner.printGenericCommandUsage(System.err); return -1; } Job job = new Job(); job.setJarByClass(WordCount.class); FileInputFormat.addInputPath(job, new Path(args[0])); FileOutputFormat.setOutputPath(job, new Path(args[1])); job.setMapperClass(WordCountMapper.class); job.setReducerClass(WordCountReducer.class); job.setOutputKeyClass(Text.class); job.setOutputValueClass(IntWritable.class); return job.waitForCompletion(true) ? 0 : 1; } public static void main(String[] args) throws Exception { int exitCode = ToolRunner.run(new WordCount(), args); System.exit(exitCode); }
  • 37. Word Count MapReduce programını çalıştırma $ hadoop jar <jarfile> <classname> <args...> $ hadoop jar devveri-mapreduce-0.0.1-SNAPSHOT.jar com.devveri.hadoop.mapreduce.WordCount test.txt devveri 12/07/09 23:44:41 WARN mapred.JobClient: Use GenericOptionsParser for parsing the arguments. Applications should implement Tool for the same. 12/07/09 23:44:41 INFO input.FileInputFormat: Total input paths to process : 1 12/07/09 23:44:41 INFO mapred.JobClient: Running job: job_201204231254_5522 12/07/09 23:44:42 INFO mapred.JobClient: map 0% reduce 0% 12/07/09 23:44:56 INFO mapred.JobClient: map 100% reduce 0% 12/07/09 23:45:08 INFO mapred.JobClient: map 100% reduce 100% 12/07/09 23:45:13 INFO mapred.JobClient: Job complete: job_201204231254_5522 12/07/09 23:45:13 INFO mapred.JobClient: Counters: 29 12/07/09 23:45:13 INFO mapred.JobClient: Job Counters 12/07/09 23:45:13 INFO mapred.JobClient: Launched reduce tasks=1 12/07/09 23:45:13 INFO mapred.JobClient: SLOTS_MILLIS_MAPS=11984 12/07/09 23:45:13 INFO mapred.JobClient: Total time spent by all reduces waiting after reserving slots (ms)=0 12/07/09 23:45:13 INFO mapred.JobClient: Total time spent by all maps waiting after reserving slots (ms)=0 12/07/09 23:45:13 INFO mapred.JobClient: Launched map tasks=1 12/07/09 23:45:13 INFO mapred.JobClient: Data-local map tasks=1 12/07/09 23:45:13 INFO mapred.JobClient: SLOTS_MILLIS_REDUCES=10033 12/07/09 23:45:13 INFO mapred.JobClient: File Output Format Counters 12/07/09 23:45:13 INFO mapred.JobClient: Bytes Written=31 12/07/09 23:45:13 INFO mapred.JobClient: FileSystemCounters 12/07/09 23:45:13 INFO mapred.JobClient: FILE_BYTES_READ=61 ...
  • 38. Gündem ● Big Data (Dev veri) ● Hadoop ● HDFS ● MapReduce ● Hadoop Kurulum ● Küme Yapısı ● Hadoop Ekosistemi
  • 39. Hadoop Kurulumu ● Apache sürümü dışında Cloudera, Hortonworks gibi firmaların dağıtımları da kullanılabilir ● Farklı sürümleri bulunuyor 1.0.X - current stable version, 1.0 release 1.1.X - current beta version, 1.1 release 2.X.X - current alpha version 0.23.X - simmilar to 2.X.X but missing NN HA. 0.22.X - does not include security 0.20.203.X - old legacy stable version 0.20.X - old legacy version ● Küme olarak (full cluster) ya da tek sunucuya (pseudo- distributed) kurulabilir ● deb, rpm veya tarball olarak indirilip kurulabilir
  • 40. Örnek kurulum adım 1 ● JDK 1.6, openssh-server ve rsync sistemde olmalı $ sudo apt-get install ssh $ sudo apt-get install rsync
  • 41. Örnek kurulum adım 2 ● Sunucular arası şifresiz bağlantı gerekir $ ssh localhost The authenticity of host 'localhost (127.0.0.1)' can't be established. ECDSA key fingerprint is 00:ab:cd:ef:12:23:56:ab:ba:c4:89: 11:d8:22:33:1b. Are you sure you want to continue connecting (yes/no)? yes ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys
  • 42. Örnek kurulum adım 3 ● Kurulumun yapılacağı klasörler ayarlanır $ sudo mkdir /usr/java $ sudo chown -R devveri:devveri /usr/java $ mkdir /usr/java/hadoop-data
  • 43. Örnek kurulum adım 4 ● Apache sunucusundan son sürüm indirilir $ cd /usr/java/ $ wget "http://www.eu.apache.org/dist/hadoop/ common/hadoop-1.0.4/hadoop-1.0.4.tar.gz" $ gzip -dc hadoop-1.0.4.tar.gz | tar xf - $ ln -s /usr/java/hadoop-1.0.4 /usr/java/hadoop
  • 44. Örnek kurulum adım 5 ● Küme ile ilgili genel ayarlar conf/core-site.xml dosyasında bulunur <configuration> <property> <name>fs.default.name</name> <value>hdfs://localhost:9000</value> </property> <property> <name>hadoop.tmp.dir</name> <value>/usr/java/hadoop-data</value> </property> </configuration>
  • 45. Örnek kurulum adım 6 ● HDFS ile ilgili ayarlar conf/hdfs-site.xml dosyası içerisinde bulunur <configuration> <property> <name>dfs.replication</name> <value>1</value> </property> </configuration>
  • 46. Örnek kurulum adım 7 ● MapReduce ile ilgili ayarlar conf/mapred-site.xml dosyası içerisinde bulunur <configuration> <property> <name>mapred.job.tracker</name> <value>localhost:9001</value> </property> </configuration>
  • 47. Örnek kurulum adım 8 ● Hadoop ile ilgili ortam değişkenleri conf/hadoop-env. sh dosyasında bulunur export JAVA_HOME=/usr/java/jdk export HADOOP_HEAPSIZE=512 export HADOOP_HOME_WARN_SUPPRESS="TRUE"
  • 48. Örnek kurulum adım 9 ● .bash_profile ya da .bash_rc dosyalarında $PATH değişkeni ayarlanmalıdır JAVA_HOME=/usr/java/jdk PATH=$PATH:$JAVA_HOME/bin HADOOP_HOME=/usr/java/hadoop PATH=$PATH:$HADOOP_HOME/bin
  • 49. Örnek kurulum adım 10 ● NameNode formatlanmalıdır $ hadoop namenode -format 12/09/05 00:07:06 INFO namenode.NameNode: STARTUP_MSG: /************************************************************ STARTUP_MSG: Starting NameNode STARTUP_MSG: host = devveri-HP-ProBook-6540b/127.0.1.1 STARTUP_MSG: args = [-format] STARTUP_MSG: version = 1.0.3 STARTUP_MSG: build = https://svn.apache.org/repos/asf/hadoop/common/branches/branch-1.0 -r 1335192; compiled by 'hortonfo' on Tue May 8 20:31:25 UTC 2012 ************************************************************/ 12/09/05 00:07:06 INFO util.GSet: VM type = 32-bit 12/09/05 00:07:06 INFO util.GSet: 2% max memory = 9.1025 MB 12/09/05 00:07:06 INFO util.GSet: capacity = 2^21 = 2097152 entries 12/09/05 00:07:06 INFO util.GSet: recommended=2097152, actual=2097152 12/09/05 00:07:07 INFO namenode.FSNamesystem: fsOwner=devveri 12/09/05 00:07:07 INFO namenode.FSNamesystem: supergroup=supergroup 12/09/05 00:07:07 INFO namenode.FSNamesystem: isPermissionEnabled=true 12/09/05 00:07:07 INFO namenode.FSNamesystem: dfs.block.invalidate.limit=100 12/09/05 00:07:07 INFO namenode.FSNamesystem: isAccessTokenEnabled=false accessKeyUpdateInterval=0 min(s), accessTokenLifetime=0 min(s) 12/09/05 00:07:07 INFO namenode.NameNode: Caching file names occuring more than 10 times 12/09/05 00:07:07 INFO common.Storage: Image file of size 111 saved in 0 seconds. 12/09/05 00:07:07 INFO common.Storage: Storage directory /usr/java/hadoop-data/dfs/name has been successfully formatted. 12/09/05 00:07:07 INFO namenode.NameNode: SHUTDOWN_MSG: /************************************************************ SHUTDOWN_MSG: Shutting down NameNode at devveri-HP-ProBook-6540b/127.0.1.1 ************************************************************/
  • 50. Gündem ● Big Data (Dev veri) ● Hadoop ● HDFS ● MapReduce ● Hadoop Kurulum ● Küme Yapısı ● Hadoop Ekosistemi
  • 51. Küme Yapısı ● Hadoop kümesini durdurup başlatmak için bin klasörü altındaki script'ler kullanılır start-all.sh Kümeyi çalıştırır stop-all.sh Kümeyi durdurur start-dfs.sh Sadece HDFS süreçlerini çalıştırır stop-dfs.sh HDFS süreçlerini durdurur start-mapred.sh Sadece MapReduce süreçlerini çalıştırır stop-mapred.sh MapReduce süreçlerini durdurur
  • 52. Hadoop Süreçleri Hadoop kümesi içerisinde birlikte çalışan birkaç farklı süreç vardır ● NameNode ● SecondaryNameNode ● DataNode ● JobTracker ● TaskTracker
  • 53. NameNode Ana (master) düğümdür ● Hangi blok, hangi dosya nerededir takip eder ● Her türlü dosya işleminden sorumludur ● Veri değil sadece metadata saklar ● Her zaman ayakta olmak zorundadır NameNode çalışmaz ise tüm küme çalışmaz hale gelir ● Hızlı erişim açısından verileri hafızada tutar ● Çökmeye karşı diske bilgileri senkronize eder ● Bu verileri mutlaka yedeklenmelidir
  • 54. SecondaryNameNode NameNode yedeği değildir! ● Sadece NameNode tarafından yapılmayan bazı görevleri yerine getirir
  • 55. DataNode Verilerin bulunduğu düğümdür ● Blok halinde dosyaları saklar ● Yedekli olduğu için kapanması halinde veri kaybı yaşanmaz ● Veriler bu düğümlerde olduğu için analiz işlemleri de bu düğümler üzerinde çalışır ● Küme içerisinde birden fazla olabilir (olmalıdır) ● 4000+ düğüme kadar büyüyebilir ● Sayısı arttıkça performansı lineer olarak artar!
  • 56. JobTracker MapReduce işlerini takip eder ● NameNode gibi tektir ● İstemciler MapReduce işlerini JobTracker'a gönderir ● İşleri diğer düğümlere dağıtır ● İş parçacıklarının durumunu takip eder ● Bir iş parçacığında sorun olursa bunu sonlandırarak yeni bir tekrar çalıştırır ● Bazı durumlarda aynı işi yapan birden fazla iş parçacığı çalıştırabilir
  • 57. TaskTracker MapReduce işlemlerini çalıştırır ● DataNode ile aynı düğümde bulunur ● JobTracker tarafından gönderilen iş parçacıklarından sorumludur ● Map ve Reduce görevlerini çalıştırıp sonuçlarını JobTracker'a iletir
  • 58. Kümeye bakış NameNode JobTracker SNNode Node 1 DataNode TaskTracker DataNode TaskTracker Node 2 Node 3 DataNode TaskTracker DataNode TaskTracker Node 4 Node 5
  • 61. Gündem ● Big Data (Dev veri) ● Hadoop ● HDFS ● MapReduce ● Hadoop Kurulum ● Küme Yapısı ● Hadoop Ekosistemi
  • 62. Hadoop Ecosystem Hadoop çatısı altında birçok proje barınır ● Hive ● Pig ● HBase ● Mahout ● Impala ● Diğerleri: Sqoop, Flume, Avro, Zookeeper, Oozie, Cascading...
  • 63. Hive ● Facebook tarafından geliştirilmiştir ● SQL benzeri HiveQL dili ile Java kullanmadan MapReduce uygulamaları yazılmasını sağlar ● Öncelikle HDFS üzerindeki dosyalar tablo olarak tanıtılır ○ create table member_visits (member_id string, visit_count int) row format delimited fields terminated by 't' stored as textfile; ○ load data inpath '/usr/hadoop/anyfile' into table members; ● Daha sonra bu sanal tablolar sorgulanabilir ○ select avg(visit_count) from member_visits where visit_count > 0;
  • 64. Pig ● Yahoo tarafından geliştirilmiştir ● MapReduce yazmak için "DataFlow" dili olarak adlandırılan, SQL'den farklı kendine özgü PigLatin dili kullanılır ● Join destekler, daha kolay ve performanslı MapReduce programaları yazmayı sağlar ○ A = LOAD 'companies.csv' USING PigStorage() AS (productId:int, productName:chararray); B = FILTER A BY productId > 3; C = FOREACH B GENERATE *; DUMP C;
  • 65. HBase ● Hadoop üzerinde çalışan NoSQL veritabanıdır ● Google Big Table örnek alınarak geliştirilmiştir ● Esnek şema yapısı ile binlerce kolon, petabyte'larca satırdan oluşan veriyi saklayabilir ● HDFS üzerinde çalıştığından MapReduce destekler ● Veriye erişiminde bazı kısıtlar vardır ● Verilere anahtar üzerinden ya da partial table scan ile erişilebilir ● İkincil indeks, karmaşık sorgu çalıştırma desteği yoktur
  • 66. Mahout ● Hadoop üzerinde çalışabilen Machine Learning algoritmalarını içeren bir kütüphanedir ● Recommendation ● Clustering ● Classification
  • 67. Impala ● Google Dremel (2010) projesinden esinlenmiştir ● Cloudera tarafından geliştirilmiştir ● MapReduce yapmadan verilere direkt erişir ● HiveQL destekler, 7-45 kat daha hızlı çalışır
  • 68. Sorular ?
  • 69. DevVeri.com Hakkında Big Data, Search, NoSQL her türlü yazılarınızı bekliyoruz!