18 Aralık 2014 Perşembe

Hadoop Kümesine Yeni Düğüm Ekleme (Commissioning) - Çıkarma (Decommissioning)

Hadoop kümesinde düğümlerin tanımlı olduğu 3 farklı dosya bulunmaktadır.

  1. slaves
  2. hdfs-site.xml dosyasındaki "dfs.hosts" özelliğinde tanımlı dosya
  3. mapred-site.xml dosyasındaki "mapred.hosts" özelliğinde tanımlı dosya
  4. hdfs-site.xml dosyasındaki "dfs.hosts.exclude" özelliğinde tanımlı dosya
  5. mapred-site.xml dosyasındaki "mapred.hosts.exclude" özelliğinde tanımlı dosya

Slaves Dosyası

Slaves dosyasında kümede kullanılan tüm düğümlerin adresleri tanımlanır. Bu dosya Hadoop tarafından açılış, kapanış yada restart gibi yönetimsel işlemler gerçekleştirilirken kullanılır. Hadoop açılırken bu dosyadaki sunuculara bağlanıp tasktacker ve datanode servislerini ayağa kaldırır.

dfs.hosts Dosyası

hdfs-site.xml dosyasındaki "dfs.hosts" özelliğinin dfs.hosts.file olarak tanımlandığını varsayalım. Slaves dosyasındaki tüm düğümlerde sistem başlatıldığında datanode servisleri çalıştırılır. Daha sonra bu datanode servisleri namenode'a bağlanmaya çalışırlar. Bu esnada Hadoop tarafından dfs.hosts.file dosyası kontrol edilir. Eğer bağlanmaya çalışan düğüm bu dosyada tanımlı değil ise kümeye eklenmez.


mapred.hosts Dosyası

mapred-site.xml dosyasındaki "mapred.hosts" özelliğinin mapred.hosts.file olarak tanımlandığını varsayalım. Slaves dosyasındaki tüm düğümlerde sistem başlatıldığında tasktracker servisleri çalıştırılır. Daha sonra bu tasktracker servisleri JobTracker'a bağlanmaya çalışırlar. Bu esnada Hadoop tarafından mapred.hosts.file dosyası kontrol edilir. Eğer bağlanmaya çalışan düğüm bu dosyada tanımlı değil ise kümeye eklenmez.

dfs.hosts.exclude Dosyası

hdfs-site.xml dosyasındaki "dfs.hosts.exclude" özelliğinin dfs.hosts.exclude.file olarak tanımlandığını varsayalım. dfs.hosts.exclude.file dosyasına kümeden çıkartılmak istenilen datanode düğümlerinin adresleri eklenir. Bu düğümlerde bulunan veriler güvenli bir şekilde taşındıktan sonra düğüm kümeden çıkartılır.


mapred.hosts.exclude Dosyası

mapred-site.xml dosyasındaki "mapred.hosts.exclude" özelliğinin mapred.hosts.exclude.file olarak tanımlandığını varsayalım. mapred.hosts.exclude.file dosyasına kümeden çıkartılmak istenilen tasktracker düğümlerinin adresleri eklenir. Bu düğümlerde çalışmakta olan task'lar güvenli bir şekilde başka düğümlere taşındıktan sonra düğüm kümeden çıkartılır.

Kümeye Yeni Datanode Ekleme (Commissioning)
  • dfs.hosts.file dosyasına eklenmek istenilen yeni datanode düğümünün adresi yazılır.
  • slaves dosyasına eklenmek istenilen yeni datanode düğümünün adresi yazılır.
  • $ hadoop dfsadmin -refreshNodes komutu çalıştırılır.
  • Eklenecek düğüme bağlanılır ve datanode servisi çalıştırılır. 
    • $ hadoop-daemon.sh --config /etc/hadoop/ start datanode)
  • Hadoop namenode web arayüzünden yeni datanode düğümünün eklendiği teyit edilir.

Kümeye Yeni Tasktracker Ekleme (Commissioning)
  • mapred.hosts.file dosyasına eklenmek istenilen yeni tasktracker düğümünün adresi yazılır.
  • slaves dosyasına eklenmek istenilen yeni tasktracker düğümünün adresi yazılır.
  • $ hadoop mapredadmin -refreshNodes komutu çalıştırılır.
  • Eklenecek düğüme bağlanılır ve tasktracker servisi çalıştırılır. 
    • $ hadoop-daemon.sh --config /etc/hadoop/ start tasktracker)
  • Hadoop jobtracker web arayüzünden yeni tasktracker düğümünün eklendiği teyit edilir.
Kümeden DataNode Çıkarma (Decommissioning)
  • dfs.hosts.exclude.file dosyasına çıkartılmak istenilen datanode düğümünün adresi yazılır.
  • $ hadoop dfsadmin -refreshNodes komutu çalıştırılır.
  • Hadoop namenode web arayüzünden datanode düğümünün kümeden çıkartıldığı teyit edilir.
  • Çıkartılan düğüme bağlanılır ve datanode servisi kapatılır. 
    • $ hadoop-daemon.sh --config /etc/hadoop/ stop datanode)
  • dfs.hosts.file dosyasından kümeden çıkartılmak istenilen datanode düğümünün adresi silinir.
  • $ hadoop dfsadmin -refreshNodes komutu çalıştırılır.
  • slaves dosyasından, kümeden çıkartılmak istenilen datanode düğümünün adresi silinir.

Kümeden Tasktracker Çıkarma (Decommissioning)
  • mapred.hosts.exclude.file dosyasına çıkartılmak istenilen tasktracker düğümünün adresi yazılır.
  • $ hadoop mapredadmin -refreshNodes komutu çalıştırılır.
  • Hadoop jobtracker web arayüzünden tasktracker düğümünün kümeden çıkartıldığı teyit edilir.
  • Çıkartılan düğüme bağlanılır ve tasktracker servisi kapatılır. 
    • $ hadoop-daemon.sh --config /etc/hadoop/ stop tasktracker)
  • mapred.hosts.file dosyasından kümeden çıkartılmak istenilen tasktracker düğümünün adresi silinir.
  • $ hadoop mapredadmin -refreshNodes komutu çalıştırılır.
  • slaves dosyasından, kümeden çıkartılmak istenilen tasktracker düğümünün adresi silinir.

17 Aralık 2014 Çarşamba

Linux Dosya Sistemleri


MINIX :
Eski bir dosya sistemidir. Kısıtları: 
  • En fazla 64 Mb’lık dosya sistemi, 
  • Dosya isimleri 30 karakter ile sınırlı
  • tek tür zaman damgası
Ext
Minix dosya sistemindeki kısıtları kaldırmıştır.

Ext2 
EXT'nin gelişmiş halidir. Yazma işlemi hem ardışık bloklar halinde hemde ayrı ayrı gerçekleşir. Ardışık bloklar halinde depolanmayan dosyalar, parçalanmış dosyalar (fragmented files) olarak adlandırılır. Parçalanmış dosyaların okuma ve yazma süresi daha uzundur.
Kısıtları:
  • En fazla 4 TB disk bölümü kullanılabilir.
  • En fazla 2 GB lık dosyalar oluşturulabilir.

Ext3 
Ext2 dosya sisteminin gelişmiş halidir. Sistemde yapılan tüm işlemlerin kayıtları tutulmakta ve bir hata anında geriye dönülebilmektedir. Bu işlem günlükleme (journalling) olarak adlandırılmaktadır. Herhangi bir sistem çökmesinde yapılan işlemlerin kayıtlarına ulaşılıp bu işlemler tekrar uygulandığında sistemi kurtarmak daha kolay olmaktadır.

Ext4 
Ext3 dosya sisteminin genişletilmiş halidir. Journallinh yapısına ek olarak journal checksum özelliğini sağlamaktadır. Böylelikle disk ahataları hızlı bir şekilde onarılabilmektedir. Performans olarak diğer ext dosya sistemlerinden daha iyidir. Dosya boyutları ile ilgili kısıtları genişletmiştir.
Kısıtları:
  • En fazla 1 EiB(exbibyte) disk bölümü kullanılabilir. 
  • En fazla 16 TB lık dosyalar oluşturulabilir.
XFS 
Günlükleme altyapısının en kararlı çalıştığı dosya sistemidir. Büyük boyutlu dosyaları desteklemektedir.
Kısıtları:
  • En fazla 9.000 Pbyte disk bölümü kullanılabilir. 
  • En fazla 18.000 Pbyte lık dosyalar oluşturulabilir.
  • Blok büyüklüğü 64 KB

Linux Dizin Yapısı


/bin    : Çalıştırılabilir Programların bulunduğu dizin.

/boot  : Açılış için gerekli dosyaların bulunduğu dizin.

/dev    : Donanım aygıtları ile ilgili dosyaları içeren dizin.
  • /dev/dsp : Ses aygıtı
  • /dev/lp0 : Paralel port (LPT 1); Yazıcı gibi aygıtlar için
  • /dev/psaux : PS/2 girişi
  • /dev/sda : Flash Bellekler, harici diskler gibi SCSI aygıtlar için
  • /dev/scd : SCSI CD-ROM için
  • /dev/ttyS0 : Seri port (COM 1), fare gibi aygıtlar için
  • /dev/usb : USB
/etc : Yapılandırma dosyalarının bulunduğu dizin.

/home : Kullanıcıların dosyalarının bulunduğu dizin.

/lib : Kernel kütüphanelerini ve uygulamalara ait kütüphaneleri barındıran dizin.

/lost+found : Hatalı bir durumdan sonra zarar görmüş dosyaların bulunduğu dizin.

/media : Çıkarılabilir aygıtların bulunduğu dizin. (Harici disk, CD-Rom, USB...)

/mnt : Dosya sistemlerinin bağlandığı dizindir.

/opt : Windowsda bulunan Program files dizininin eşleneğidir.

/proc : Sistemin çalışma anındaki bilgilerinin yazıldıüı dizindir. 
  • cpuinfo: İşlemci ile ilgili bilgiler
  • devices: aygıtlar ile ilgili bilgiler
  • dma: Dma kanalalrı ile ilgili bilgiler
  • filesystems: Desteklenen dosya sistemleri ile ilgili bilgiler
  • interrupts: Kullanılan kesintiler ile ilgili bilgiler
  • iports: Giriş, çıkış portları ile ilgili bilgiler
  • kcore: Bellek ile ilgili bilgiler.
/root : Root kullanıcısının kendine at dizini.

/sbin : Root kullanıcısının çalıştırabileceği yönetimsel komutların bulunduğu dizindir.

/selinux : Güvenlik ile ilgili bilgilerin tutulduğu dizindir.

/srv : http ve ftp gibi hizmetlere ait bilgilerin tutulduğu dizidir.

/sys : Kernel hakkında bilgilerin tutulduğu dizindir.

/tmp : Geçici dosyaların tutulduğu dizindir.

/usr : İşletim sistemi tarafından yada paket olarak yüklenen programların tutulduğu dizindir.
  • Root haricinde ki kullanıcılarında çalıştırması gereken yönetimsel komutlar /usr/sbin altında turulur.
  • /usr/local/ altındaki tüm komutlar bulunduğu makinaya özeldir ve ağ üzerinden değer makinalardan erişilemez. /usr/altındakiler ise diğer istemcilerden erişilebilir.
/var : Log dosyaları gibi dosyaların tutulduğu dizindir.

16 Aralık 2014 Salı

Hadoop Balancer

Büyük veri içeren bir Hadoop kümesinde zaman içerisinde datanode 'larda bulunan verilerin yoğunluğu birbirine eşit olmayabilir. Veri silme işlemerleri gibi işlemler ile küme üzerindeki denge bozulabilir. Bu durumda mapreduce programları çalıştırılmaya başlandığında bazı datanode'larda fazla bazılarında az iş çalıştırılır (veri yoğunluğu ile orantılı olarak).

Bu gibi problemleri aşabilmek için Hadoop altyapısının "Balancer" adı verilen bir uygulaması mevcut. Balancer çalıştırılarak küme tekrar dengeli veri paylaşımı olacak şekilde ayarlanabilmekte. Balancer sistemini çalıştırabilmek için aşağıdaki komut kullanılır:

$ start-balancer.sh

Bu komut çalıştırıldığında fazla yüke sahip datanode'lardan daha az veri yoğunluğu olan datanode'lara veri aktarımı olur. Bu veri aktarımı ağda yüke sebep oalcağından ve çalışan diğer işleri etkilememsi için varsayılan olarak 1MB ile sınırlandırılmıştır. Bu değer hdfs-site.xml dosyasındaki "dfs.balance.bandwithPerSec" parametresi ile değiştirilebilmektedir.

12 Aralık 2014 Cuma

Doküman Benzerliği (Shingling, Minhashing ve LSH)


Doküman benzerliği bulurken uygulanacak farklı yöntemler mevcut. Bu yöntemlere örnek olarak Shingling, Minhashing ve LSH verilebilir. Benzerliği bulurken bu metodları hangi sıra ile ve ne amaçla kullanabileceğimiz aşağıdaki resimde belirtilmiştir.

Resim: Courdera - Mining Massive Datasets .

Shingling:

Doküman belirlenen sayı adedince shingle şeklinde bölünür. Buna k-sjingle denilir. Mantık n-gramlardaki gibidir.  Ki doküman arasındaki farkı incelerken dokümanlardaki farklı olan ve aynı olan shingle sayıları göz önünde bulundurulur.

Örn:
Doküman = kakules
k=2
2-shingles = {ka,ak,ku,ul,le,es}


Shingle'lar çok uzun olduklarında 4 byte yer kaplayacaklşekilde sıkıştırma yapılır. Sıkıştırılmış nesnelere "token" adı verilir. Dokümanlar arasındaki karşılaştırmalar token'lar ile yapılır.

Minhashing:

  • Jaccard Similarity: 1. dokümanda  6 ikinci dokümanda 8 shingle var ise ve bunlardan 3 tanesi ortak ise jaccard smilarity 3/11 'dir. Bunun için doküman shingle larından oluşan bir matrix oluşturulur. Bu matrixde iki dokumanda da geçen (1,1) doküman sayısı/herhangi birinde 1 değeri olanların toplamı(1,0 yada 0,1) olarak hesaplanır.
Minhashig 'de hash fonksiyonu hesaplanırken Matrix üzerinde satırlar random olarak dağıtılır ve hangi sırayı hangi satırın doldurduğuna bakılarak bir hash matrix oluşturulur. (1. satırdan başlanarak doldurma işlemi yapılır.) Col/Col 'da kolonlardaki benzerlik Sig/Sig de signature matrixdeki benzerlik bulunur.

Resim: Courdera - Mining Massive Datasets .


Bu yöntemi büyük veri setlerinde uygulamak zordur. Bunun için hash metodları ile hashmatrix oluşturulur. Hash matrix oluşturulurken:


  • Hash metodu değere göre hesaplanır.
  • Ana matriste kolon için değeri 1 ise :
    • Hash metodunun sonucu hash matrisdeki kolondaki değerden küçük ise, hash matrisindeki değer hash metodundaki ile güncellenir.
    • Değil ise aynen bir sonraki adıma yansıtılır.

Resim: Courdera - Mining Massive Datasets .

Son çıkan matristeki değerlerin aynı olmasına göre kolonların benzerlikleri bulunur.

LSH- Locality Sensitive Hashing:

Tüm bu işlemlerden sonra büyük veriler ile çalışırken elimizde çok sayıda imza olşacaktır ve bunların karşılaştırılması da uzun zaman alıcaktır. Bu işlem süresini kısaltmak için imzalar üzerinde tekrar bir hash işlemler dizisi gerçekleştirilir ve çıkan sonuçlara göre kutularda duruplanır. Ortak bir kutuya bir kez girenler benzer olarak kabul edilir ve bu imzaya sahip belgelerde benzer olarak oylanır.