Microsoft Azure – Apache Ambari Kurulumu
Merhaba,
Apache Ambari, Hadoop cluster yönetimini, cluster kurulumunu ve cluster’ın gözlemini kolaylaştırmak için geliştirilmiş bir yazılımdır. API’leri ile Hadoop cluster yönetiminde kolaylık ve genel olarak aşağıdaki faydaları sağlar.Hadoop node’larına, Hadoop servislerini kurmak için step-by-step ilerleyebileceğiniz bir sihirbaz sağlar, cluster konfigürasyonunu yönetir. Cluster genelinde Hadoop servislerinin çalıştırılması, durdurulması ve/veya yeniden yapılandırılması için merkezi yönetim sunar. Hadoop cluster’ın sağlık seviyesi ve genel durumu için dashboard sunar. Metrik toplamak için ambari metric system’inin avantajını kullanır. Sistem uyarıları ve bilgilendirmeler için ambari alert framework’ünün avantajını kullanır. Uygulama geliştiriciler için de ambari rest api’leri mevcuttur.
Apache Ambari’nin an itibarıyla güncel sürümü 2.0.1 ‘dir. 64-bit işletim sistemi desteği mevcuttur. Desteklenen işletim sistemleri RHEL 5 ve 6 , CentOS 5 ve 6 , Oracle Linux Enterprise 5 ve 6 , SuSE Linux Enterprise Server 11 , Ubuntu 12 sürümleridir. Kurulum için hands-on demo ’ya geçmeden önce terminolojisinden bahsedeyim.
Service:
Service, Hadoop stack’indeki servisi ifade eder. Pig,HBase,HDFS, service’e örnek olarak gösterilebilir. Service’in birden fazla bileşeni olabilir.Örneğin HDFS servisi; namenode,secondary namenode, datanode vb. bileşenlere sahiptir.
Component:
Service bir veya daha fazla bileşenden(component) oluşabilir ve birden fazla node üzerine dağıtılabilir. Örneğin HDFS servisinin datanode bileşeni birden fazla sunucu üzerinde yayılabilir.
Node/Host:
Node/Host, cluster’daki bir sunucuyu ifade etmektedir.
Node-Component:
Node-component, belirli bir node’daki bir bileşenin instance’ini gösterir. Örneğin belli bir node’daki datanode istance’I, node-component olarak ifade edilir.
Operation:
Operasyon, cluster’da hedefleden durum değişikliğine ulaşmak için veya kullanıcının talebini gerçekleştirmek için cluster’da uygulanan değişiklikleri ve/veya alınan aksiyonları ifade eder. Operasyon birden fazla aksiyondan oluşabilir.
Task:
Task, yürütmesi(execute) için node’a gönderilen bir birim iştir. Örneğin Node 3’e datanode kurulması “bir” iştir , Node 4’e datanode ve secondery namenode kurulması “iki” iştir.
Stage:
Stage; birbirlerinden bağımsız olan ve operasyonu tamamlamak için gereken task’leri ifade eder. Aynı stage’deki task’ler birbirinden farklı node’lar üzerinde parallel olarak çalışabilir.
Action:
Action bir sunucudaki veya bir sunucu grubundaki task’ten veya task‘lerden oluşur. Her bir action , action id ile izlenir. Node’lar, action’ın durumunu granular seviyede raporlar. Farklı bir ifade ile action, execution aşamasındaki stage ‘dir.
Stage Plan:
Bir operasyon(operation) tipik olarak çeşitli sunucular üzerindeki birden fazla task’ten oluşur ve bu task’lerin, genellikle belirli bir düzende çalıştırılmalarını gerektiren bağımlılıkları vardır. Bazı task’ler tamamlanmadan diğerleri zamanlanamayabilir. Bu nedenle bir Operasyon için gereken task’ler çeşitli adımlara(stage) bölünebilir ve her bir adımın(stage) bir sonrakinden önce tamamlanmış olması gerekir. Fakat aynı adım(stage) içindeki tüm task’ler birbirinden farklı node’lar üzerinde paralel olarak çalışmaları için zamanlanabilir.
Manifest:
Manifest, execution için node’a gönderilen task’ın tanımını ifade eder.
Role:
Role, bir bileşen(component) ile veya bir action ile eşleştirilebilir.
Component örneği: NameNode, DataNode
Action örneği: hdfs re-balancing, admin komutları vb.
Terminolojiden genel olarak bahsetmiş olduk. Mimarisi de aşağıdaki gibidir.
Agent’lar node’lar üzerine kuruluyor(Hadoop cluster node’ları) . Ambari Server’ın dizaynı aşağıdaki şekilde resmedilmiştir.
Ambari Agent’ın dizaynı aşağıdaki şekilde resmedilmiştir.
Bir use case incelemek isterseniz kaynaklar kısmında üstte yazdıklarım içinde alıntı yaptığım bir pdf döküman paylaştım. Fikir edinmek için cluster’a service eklenmesi case’ini okuyabilirsiniz. Case’de, coordinator,dependency tracker , hdfs , zookeeper , Nagios vb. bileşenlerin, service ekleme sırasında neler yaptığını ve aralarındaki süreci anlatıyor.
Şimdi hands-on’a geçelim J Microsoft Azure bulutunda oluşturduğum ortam üzerinde Apache Ambari kurulumunu yapacağım. Sanal sunucu açarken, desteklenen bir işletim sistemi! seçtiğinizden emin olun. Zira Ambari ile Hadoop Cluster kurarken desteklenmeyen işletim sistemleri ile problem yaşıyorsunuz.
Microsoft Azure üzerinde an itibarıyla kullanılabilir D3 tipindeki sanal sunucuları kullandım. Beş adet sanal sunucu oluşturdum.
Not: Azure Pass aboneliğinde 20 cpu core limitiniz var. Sanalları bu limitasyona göre farklı tiplerde de belirleyebilirsiniz.
Sanal sunucuların fqdn’leri(internal) aşağıdaki gibidir.
hadoopn1.hadoopn1.f5.internal.cloudapp.net
hadoopn2.hadoopn2.f9.internal.cloudapp.net
hadoopn3.hadoopn3.f2.internal.cloudapp.net
hadoopn4.hadoopn4.f9.internal.cloudapp.net
hadoopn5.hadoopn5.f6.internal.cloudapp.net
Sunucularınızın, internal fqdn’leri ile birbirlerinin ismini çözebildiklerini kontrol ediniz! Gerekli hallerde mutlaka hosts ve/veya dns yapılandırmanızı gözden geçiriniz! Sunucular arasında passwordless ssh login konfigürasyonu yapınız. Passwordless ssh login yapılandırması için yapılması gerekenleri içeren bir adresi kaynaklar kısmında paylaştım. Komutları aşağıdan da inceleyebilirsiniz.
ssh-keygen
cd ~/.ssh
ls -l
chmod 700 ~/.ssh
chmod 600 ~/.ssh/*
ls -ld ~/.ssh & ls -l ~/.ssh
Aşağıdaki komutları her bir node için çalıştırmalısınız. Test ortamımda beş node için çalıştırmıştım.
ssh [email protected] ‘mkdir -p /home/azureuser/.ssh’
scp /home/azureuser/.ssh/id_rsa.pub [email protected]:/home/azureuser/.ssh/authorized_keys
ssh [email protected] ‘chmod 700 /home/azureuser/.ssh’
ssh [email protected] ‘chmod 600 /home/azureuser/.ssh/*’
Bu işlemlerden sonra node’lardan birine password kullanmadan sertifika ile ssh bağlantısı sağlayabilirsiniz. Mutlaka test edin. Oluşturduğunuz sertifikayı *.pem biçiminde export ediniz. Hadoop Cluster kurulumunu manual olarak yapmak isterseniz bu sertifikaya ihtiyacınız olacak.
*.pem biçiminde export etmek için aşağıdaki komutu kullanabilirsiniz.
openssl rsa -in /home/azureuser/.ssh/id_rsa -outform pem > id_rsa.pem
Hadoop cluster kurulumunu bir sonraki yazımda Microsoft Azure HDInsight servisi ile inceleyeceğim. Apache Ambari kuruluma geçebiliriz. Kullandığınız Linux işletim sisteminin sürümünü aşağıdaki komut ile kontrol ederek, desteklenen bir işletim sistemi kullandığınızdan emin olunuz!
sudo chkconfig ntpd on
sudo chkconfig iptables off
sudo /etc/init.d/iptables stop
sudo service ntpd start
Üstteki komutlar ile iptables firewall’unu kapatınız ve devre dışı bırakınız, time servisini çalıştırınız. Ambari repository’sini aşağıdaki şekilde download edebilirsiniz.
sudo wget -nv http://public-repo-1.hortonworks.com/ambari/centos6/2.x/updates/2.0.1/ambari.repo -O /etc/yum.repos.d/ambari.repo
Sürüm değiştikçe üstteki adres de değişecektir!
Repo’yu download ettikten sonra listeyi üstte görüldüğü gibi güncelleyiniz.
sudo yum install ambari-server komutu ile ambari kurulumunu başlatınız.
Apache ambari kurulumu için download edilecek içerik için üstteki adımı “y” ile devam ettiriniz.
Yine benzer şekilde sihirbazı “y” ile ilerletiniz.
Gereken içerik ve bağımlılıklar üstte görüldüğü gibi yüklendi.
sudo ambari-server setup komutu ile apache ambari’yi yapılandırınız. Sihirbazın sorduğu her soruya ön tanımlı cevabı vererek ilerletebilirsiniz. “Prod” için spesifik yapılandırmalar gerekecektir.
Apache Ambari yapılandırması da tamamlandı. Şimdi de start verelim.
Ambari çalıştı. Artık sunucuza web adresinden bağlanarak devam edebilirsiniz. Azure console üzerinde sanal sunucu oluşturduğunuzda(open logic 6.5), endpoint altına sadece ssh(tcp22) portu ekleniyor! Apache Amabri’nin web ui konsolu :8080 ’den hizmet verdiği için, o sanal sunucunun endpoint’ine TCP 8080 portunu ekleyiniz.
Apache ambari web ui açıldı. Varsayılan parola ve kullanıcı ismi “admin” ‘dir. İşlemlerinize devam etmeden önce varsayılan parolayı değiştiriniz!
Apache ambari konsolu üstteki gibidir. Lokal data center’ınızda Apach Ambari kurulumu için gerekecek adımlar genel olarak bu şekildedir. Hadoop cluster’ını üstte görülen Create a Cluster sihirbazını kullanarak oluşturabilirsiniz. Sonraki yazımda Microsoft Azure HDInsight sevisi ile Hadoop cluster kurulumundan bahsedeceğim.
Herkese sorunsuz ve neşeli günler dilerim.
Kaynaklar:
http://azure.microsoft.com/en-gb/pricing/details/hdinsight/
https://cwiki.apache.org/confluence/display/AMBARI/Install+Ambari+2.0.1+from+Public+Repositories
https://cwiki.apache.org/confluence/display/AMBARI/Installation+Guide+for+Ambari+2.0.1
https://github.com/apache/ambari/blob/trunk/ambari-server/docs/api/v1/index.md
https://cwiki.apache.org/confluence/display/AMBARI/Ambari
https://issues.apache.org/jira/secure/attachment/12559939/Ambari_Architecture.pdf
http://askubuntu.com/questions/465183/how-to-convert-rsa-key-to-pem-using-x-509-standard
http://www.firedaemon.com/blog/passwordless-root-ssh-public-key-authentication-on-centos-6