IT & IoT Security | Cloud | It's all about the life itself

Nothing in life is as important as you think it is, while you are thinking about it.

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.

clip_image001

Agent’lar node’lar üzerine kuruluyor(Hadoop cluster node’ları) . Ambari Server’ın dizaynı aşağıdaki şekilde resmedilmiştir.

clip_image002

Ambari Agent’ın dizaynı aşağıdaki şekilde resmedilmiştir.

clip_image003

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.

clip_image004

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!

clip_image005

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!

clip_image007

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.

clip_image008

Apache ambari kurulumu için download edilecek içerik için üstteki adımı “y” ile devam ettiriniz.

clip_image009

Yine benzer şekilde sihirbazı “y” ile ilerletiniz.

clip_image010

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.

clip_image011

Apache Ambari yapılandırması da tamamlandı. Şimdi de start verelim.

clip_image012

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.

clip_image014

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!

clip_image016

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

https://en.wikipedia.org/wiki/Apache_Hadoop

https://azure.microsoft.com/en-us/documentation/articles/hdinsight-hadoop-tutorial-get-started-windows/