Anasayfa / Hadoop Cluster Kurulumu / BG8: Uzman Seviyesi Linux Kernel Ayarları

BG8: Uzman Seviyesi Linux Kernel Ayarları

Linux kernel ayarlarını varsayılanda bıraksak da sıkıntı olmaz ancak biz bu makineleri big data için kullanacağız bu sebeple bazı konfigürasyon değişikliği yapmak hem faydalı hem de performans artırıcı olacaktır. Bu ayarları yapmadan devam edebilirsiniz.

1. Tavsiye Edilen Linux Kernel Parametreleri:

Değiştireceğimiz temel kernel ayarları   /etc/sysctl.conf dosyasındadır.

Girdiğimiz değerleri kontrol edelim.

Evet değiştirdik.

2. Disk ve Dizinler için noatime ve noadiratime atama

POSIX ailesi İşletim sistemleri her dosya için en son erişim zamanına ait bir metadata tutar. Access time anlamında atime denir. Diğer iki değer değiştirme (ctime) ve modifiye (mtime) zamanıdır. Bu güzel özeliğin bazı sıkıntıları var. Örneğin okumaya biz sadece okuma olarak bakarız ancak en son erişim zamanı tutulduğu için aslında her okuma bir yazma operasyonunu da gerektirir. Bildiğimiz gibi yazma hep daha maliyetlidir. Bir programın çalışırken onlarca kütüphaneyi gidip biryerlerden okuduğunu düşünün. Aşağıdaki değişiklikleri yapıyoruz.

Kontrol edelim

3. Testing Disk I/O Speed

Disk hızını ölçmek için küçük bir programcık kuralım. Sonra test edelim

Makinem SSD üzerinde olduğu için fena bir performans göstermedi. HDD için 70 MB/s iyi sayılır.

4. Sunucu BIOS Ayarlarını Kontrolü

BIOS ayarları optimal performans için ayarlandığından emin olun. Örneğin disk sürücülerinin IDE emülasyonu kapalı olmalıdır. Diskleri mount etmeden önce tüm Hadoop dizinlerinin dosya yetkilerinin 700’e ayarlayın.

5. NIC Bonding

Verimliliği ve performansı ve güvenirliği arttırmak için NIC bounding kullanın.

6. NTP Kullanma

Cluster’daki tüm sunucuların saatlerinin senkronize olduğundan emin olun. Bunu NTP ile yapabilirsiniz. Eğer clusterınız internete erişmiyorsa sunuculardan birini NTP server yapabilirsiniz. Bu özellikle  ZooKeeper, Kerberos and HBase servisleri için önemlidir.

7. DNS

Cluster içindeki her bir sunucu hem ip hem de sunucu ismi ile birbirine erişebilmelidir ( forward lookup (of its hostname) and a reverse lookup (with its IP address)). Bunu DNS servisinden ya da tüm /etc/hosts dosyalarını güncelleyerek yapabilirsiniz.

Hadoop tabiatı gereği dağıtık hesaplama yaptığı için ağı çok kullanır dolayısıyla DNS hizmetini de. Dolayısıyla isim sunucusunun tampon belleğini (name server cache deamon) açmak iyi bir fikirdir. Bu ayarlama isim çözümlemesinden kaynaklı gecikmeleri asgariye indirir. 

8. Swap’i Kapatma

İşletim sistemi RAM’a ilave olarak diskte bir alanı RAM gibi kullanır. Swapiness değeri düştükçe RAM’i kullanma ve diske başvurma oranı da azalır. Değer sıfır ise bellek taşması aşamasına gelmedikçe disk kullanılmaz. Bu oran arttıkça diske müracaat da artar dolayısıyla performans düşer. Bu değeri 10 yapabiliriz. nano editör ile /etc/sysctl.conf içine girip son satıra değeri ekliyoruz.

grep ile eklediğimiz değeri kontrol ettik. Sunucuyu yeniden başlatmalıyız.

9. ipv6 Kapatma

Aşağıdaki komutları giriyoruz.

Ayarın kalıcı olması için /etc/sysctl.conf içine girip aşağıdaki satırları dosyanın son satırına ekliyoruz.

Tekrar başladıktan sonra kontrol yapalım:

Sonuçta 1 görmeliyiz. Bu ipv6’nın kapandığı anlamına gelir.

10. Ulimits’i Ayarlama

Bir dosyayı açtığımızda işletim sistemi bu dosyayı temsil eden bir kayıt (entry) açar. Yüz dosya açılmışsa çekirdekte (kernel) bir yerde bunu temsil eden 100 kayıt açılır. Bu kayıtlar 1,2,3…100 şeklinde rakamlarla numaralandırılır. Bu kayıt numaralarına dosya tarifleyicisi (file descriptor) denir. Bu kayıt sayısı parametrelerle ayarlanır eğer bir kullanıcı yada hizmet (process) bu sayıyı taşarsa file descriptor error alır. Biz clusterımızda bu hatayı almamak için bu parametreyi yükselteceğiz. Kullanıcılar için shell limitleri belirliyoruz. nofile özelliği her bir kullanıcı prosesi için açık file descriptor için sınır tanımlar. nproc, proses sayısının üst değerini, soft uyarı limitini ve hard limit settings are the actual resource limits. nano editör ile limits.conf dosyasının en altına aşağıdaki satırları ekliyoruz.

Değerleri kontrol edelim:

ulimit -a komutuyla açılan listede open files (-n) 32768 ve max user processes (-u) 32768 olduğunu görüyoruz.

11. Transparent Huge Pages (THP) Compaction’ı Kapatma

Cloudera ve Hortonworks uzmanlarına göre THP sıkılaştırması Hadoop performansını kötüleştiriyor. Bu sebeple birleştirmeyi (dfragmentation) kapatmak gerekiyor. Önce THP ne durumda görelim:

Açık. Temelli kapatmak için aşağıdaki işlemleri yapıyoruz.

Systemd deamon u çalıştırıyoruz ve oluşturduğumuz scriptleri (disable-thp.service ve disable-thp.service) çalıştırıyoruz.

Sunucuyu tekrar başlattıktan sonra tekrar kontrol edelim kapanmışlar mı?

Evet gördüğümüz gibi ikisi de never oldu.

Böylelikle uzman seviyesinde yapılacak Linux kernel ayarlarını bitirdik. Bu ayarları şuan kurduğumuz gibi eğitim amaçlı küçük zorlama clusterler için yapmasak da olur ancak gerçek clusterlerda canlı ortamda mutlaka yapılmalıdır. Söylentilere göre %30-40 performans artışı sağlıyormuş.


Hakkında Erkan ŞİRİN

GÖZ ATMAK İSTEYEBİLİRSİNİZ

BG2: Cluster Ağ ve IP Planlaması

1. VMware Sanal Ağ Ayarları Editörü (Virtual Network Editor) Hadoop Big Data Cluster için basit …

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir