Hive'ı Yüksek Kullanılabilirlikle Kurma ve Yapılandırma - Bölüm 7


Hive, Hadoop Eko-Sistemindeki bir Veri Ambarı modelidir. Hadoop'un üzerinde bir ETL aracı olarak çalışabilir. Hive'da Yüksek Kullanılabilirliği (HA) etkinleştirmek, Namenode ve Resource Manager gibi Ana Hizmetlerde yaptığımıza benzer değildir.

Hive'da (Hiveserver2) otomatik yük devretme gerçekleşmez. Herhangi bir Hiveserver2 (HS2) başarısız olursa, bu başarısız HS2 üzerinde çalışan işler başarısız olur. İşin diğer HiveServer2'de çalışabilmesi için işi yeniden göndermemiz gerekiyor. Dolayısıyla, HS2'de HA'yı etkinleştirmek, Küme'deki HS2 bileşenlerinin sayısını artırmaktan başka bir şey değildir.

Bu makalede, Hive'ın Yüksek Kullanılabilirliğini yükleme ve etkinleştirme adımlarını göreceğiz.

Gereksinimler

  • Hadoop Sunucusunu CentOS/RHEL 7'de Dağıtmaya Yönelik En İyi Uygulamalar – Bölüm 1
  • Hadoop Ön Koşullarını Kurma ve Güvenlik Güçlendirmesi – Bölüm 2
  • CentOS/RHEL 7'de Cloudera Manager Nasıl Kurulur ve Yapılandırılır - Bölüm 3
  • CentOS/RHEL 7'de CDH Nasıl Kurulur ve Hizmet Yerleşimleri Nasıl Yapılandırılır – Bölüm 4
  • Namenode için Yüksek Erişilebilirlik Nasıl Kurulur – Bölüm 5
  • Kaynak Yöneticisi için Yüksek Kullanılabilirlik Nasıl Kurulur – Bölüm 6

Başlayalım…

Kovan Kurulumu ve Yapılandırması

1. Aşağıdaki URL'den Cloudera Manager'da oturum açın ve Cloudera Manager –> Hizmet Ekle'ye gidin .

http://13.233.129.39:7180/cmf/home

2. 'Hive' hizmetini seçin.

3. Hizmetleri düğümlere atayın.

  • Ağ Geçidi – Kullanıcının Hive'a erişebileceği istemci hizmetidir. Genellikle bu hizmet, kullanıcılara ayrılmış Edge düğümlerine yerleştirilir.
  • Hive Metastore – Hive Meta Verilerini depolamak için merkezi bir depodur.
  • WebHCat Sunucusu – HCatalog ve diğer Hadoop Hizmetleri için bir Web API'sidir.
  • Hiveserver2 – Hive'da sorgu yürütmeye yönelik istemcilerin arayüzüdür.

Sunucuları seçtikten sonra devam etmek için 'Devam'ı tıklayın.

4. Hive Metastore'un, Meta Verileri depolamak için temel bir Veritabanına ihtiyacı vardır. Burada CDH ile yerleşik olan varsayılan PostgreSQL veritabanını kullanıyoruz.

Aşağıda belirtilen veritabanı ayrıntıları otomatik olarak girilecek, söz konusu veritabanı anında oluşturulacağından 'Bağlantıyı Test Et' atlanacaktır. Gerçek zamanlı olarak, daha ileri gitmek için harici veritabanında Veritabanını oluşturmamız ve bağlantıyı test etmemiz gerekir. İşiniz bittiğinde lütfen "Devam"ı tıklayın.

5. Hive Warehouse dizinini yapılandırın; /user/hive/warehouse, Hive tablolarını depolamak için varsayılan dizin yoludur. 'Devam'ı tıklayın.

6. Hive kurulumu başlatıldı.

7. Kurulum tamamlandıktan sonra "Bitti" durumunu alabilirsiniz. Devam etmek için 'Devam'ı tıklayın.

8. Hive kurulumu ve Yapılandırması başarıyla tamamlandı. Kurulum prosedürünü tamamlamak için 'Son'u tıklayın.

9. Cluster'a eklenen Hive hizmetini Cloudera Manager Dashboard aracılığıyla görebilirsiniz.

10. Hiveserver2'yi Hive'ın Örneklerinde görüntüleyebilirsiniz. Hiveserver2'yi master1'e ekledik.

Cloudera Manager –> Hive –> Örnekler –> Hiveserver2.

Hive'da Yüksek Erişilebilirliği Etkinleştirme

11. Daha sonra Cloudera Manager –> Hive –> Eylemler –> 'e giderek Hive rolünü ekleyin. Rol Örnekleri Ekle.

12. Fazladan Hiveserver2 yerleştirmek istediğiniz sunucuları seçin. İkiden fazla ekleyebilirsiniz, sınır yoktur. Burada master2'ye fazladan bir Hiveserver2 ekliyoruz.

13. Sunucuyu seçtikten sonra 'Devam'ı tıklayın.

14. Hive Örneklerine bir Hiverserver2 eklenecektir, bunu Cloudera Manager'a giderek başlatmanız gerekir. –> Hive –> Örnekler –> (Select Hiveserver2 yeni eklendi) –> Seçilenler için Eylem –> < Strong>Başlat'a tıklayın.

15. Hiveserver2, master2'de başlatıldığında, "Bitti" durumunu alırsınız. Kapat'ı tıklayın.

16. Her iki Hiveserver2'nin de çalıştığını görebilirsiniz.

Hive Kullanılabilirliğini Doğrulama

Hiveserver2'yi ince istemci ve komut satırı olan beeline üzerinden bağlayabiliriz. Bağlantıyı kurmak için JDBC sürücüsünü kullanır.

17. Hive Gateway'in çalıştığı Sunucuda oturum açın.

[tecmint@master1 ~]$ beeline

18. Hiveserver2'ye bağlanmak için JDBC bağlantı dizesini girin. Bu bağlamda, bahsettiğimiz string, varsayılan bağlantı noktası numarası 10000 olan Hiverserver2'dir (master2). Bu bağlantı dizesi yalnızca master2 üzerinde çalışan Hiveserver2'ye bağlanacaktır.

beeline> !connect "jdbc:hive2://master1.linux-console.net:10000"

19. Örnek bir sorgu çalıştırın.

0: jdbc:hive2://master1.linux-console.net:10000> show databases;

Bu, dahili olarak gelen varsayılan veritabanıdır.

20. Hive oturumunu sonlandırmak için aşağıdaki komutu kullanın.

0: jdbc:hive2://master1.linux-console.net:10000> !quit

21. Master2 üzerinde çalışan Hiveserver2'ye bağlanmak için aynı yöntemi kullanabilirsiniz.

beeline> !connect "jdbc:hive2://master2.linux-console.net:10000"

23. Hiveserver2'yi Zookeeper Discovery modunda bağlayabiliriz. Bu yöntemde, bağlantı dizesinde Hiveserver2'den bahsetmemize gerek yok, bunun yerine mevcut Hiveserver2'yi keşfetmek için Zookeeper'ı kullanıyoruz.

Burada yükü mevcut Hiverserver2 arasında dengelemek için üçüncü taraf bir yük dengeleyici kullanabiliriz. Aşağıdaki yapılandırmanın, Cloudera Manager –> Hive –> Yapılandırma'ya giderek Zookeeper Keşif Modu'nu etkinleştirmesi gerekir.

24. Ardından, “HiveServer2 Gelişmiş Yapılandırma Snippet'i” özelliğini arayın ve aşağıdaki özelliği eklemek için + sembolünü tıklayın.

Name : hive.server2.support.dynamic.service.discovery
Value : true
Description : <any description>

25. Özelliğe girdikten sonra 'Değişiklikleri Kaydet'i tıklayın.

26. Yapılandırmada değişiklik yaptığımızdan, hizmetleri yeniden başlatmak için Turuncu Renk Sembolüne tıklayarak etkilenen hizmetleri yeniden başlatmamız gerekiyor.

27. 'Eski Hizmetleri Yeniden Başlat'ı tıklayın.

28. İki seçenek mevcuttur. Küme canlı üretimdeyse kesintiyi en aza indirmek için sürekli yeniden başlatmayı tercih etmemiz gerekir. Yeni kurulum yaptığımız için ikinci seçenek olan 'İstemci Yapılandırmasını Yeniden Dağıt'ı seçip 'Şimdi Yeniden Başlat'ı tıklayabiliriz.

29. Yeniden başlatma başarıyla tamamlandıktan sonra 'Bitti' durumunu alacaksınız. İşlemi tamamlamak için 'Son'u tıklayın.

30. Şimdi Hiveserver2'yi Zookeeper Discovery modunu kullanarak bağlayacağız. JDBC bağlantısında 2081 bağlantı noktası numarasıyla Zookeeper sunucularını kullanmamız gereken dize. Cloudera Manager –> Zookeeper –> Örnekler –> seçeneğine giderek Zookeeper sunucularını toplayın (Sunucu adlarını not edin).

Bunlar Zookeeper'a sahip üç sunucudur, 2181 port numarasıdır.

master1.linux-console.net:2181
master2.linux-console.net:2181
worker1.linux-console.net:2181

31. Şimdi Beeline'a girin.

[tecmint@master1 ~]$ beeline

32. Aşağıda belirtildiği gibi JDBC bağlantı dizesini girin. Hizmet Keşif Modu ve Zookeeper Ad Alanı'ndan bahsetmemiz gerekiyor. 'hiveserver2', Hiveserver2'nin varsayılan Ad Alanıdır.

beeline>!connect "jdbc:hive2://master1.linux-console.net:2181,master2.linux-console.net:2181,worker1.linux-console.net:2181/;serviceDiscoveryMode=zookeeper;zookeeperNamespace=hiveserver2"

33. Artık oturum, ana1 üzerinde çalışan Hiveserver2'ye bağlandı. Doğrulamak için örnek bir sorgu çalıştırın. Veritabanı oluşturmak için aşağıdaki komutu kullanın.

0: jdbc:hive2://master1.linux-console.net:2181,mast> create database tecmint;

34. Veritabanını listelemek için aşağıdaki komutu kullanın.

0: jdbc:hive2://master1.linux-console.net:2181,mast> show databases;

35. Şimdi Zookeeper Keşif Modunda Yüksek Kullanılabilirliği doğrulayacağız. Cloudera Manager'a gidin ve yukarıda test ettiğimiz master1 üzerindeki Hiveserver2'yi durdurun.

Cloudera Manager –> Hive –> Örnekler –> (master1'de Hiveserver2'yi seçin) ) –> Seçilenler için işlem –> Durdur.

36. 'Durdur'u tıklayın. Durdurduğunuzda "Bitti" durumunu alacaksınız. Hive –> Örnekler'e giderek ana1 üzerinde Hiveserver2'yi doğrulayın.

37. Beeline'a girin ve Zookeeper Discovery ile aynı JDBC bağlantı dizesini kullanarak Hiveserver2'yi bağlayın Modu yukarıdaki adımlarda yaptığımız gibi kullanın.

[tecmint@master1 ~]$ beeline

beeline>!connect "jdbc:hive2://master1.linux-console.net:2181,master2.linux-console.net:2181,worker1.linux-console.net:2181/;serviceDiscoveryMode=zookeeper;zookeeperNamespace=hiveserver2"

Artık master2 üzerinde çalışan Hiveserver2'ye bağlanacaksınız.

38. Örnek bir sorguyla doğrulayın.

0: jdbc:hive2://master1.linux-console.net:2181,mast> show databases;

Çözüm

Bu makalede, Hive Veri Ambarı modelinin Yüksek Kullanılabilirlik ile Kümemizde yer almasına yönelik ayrıntılı adımları inceledik. Gerçek zamanlı bir üretim ortamında, üçten fazla Hiveserver2, Zookeeper Keşif Modu etkin olarak yerleştirilecektir.

Burada, tüm Hiveserver2'ler ortak bir Ad Alanı altında Zookeeper'a kaydoluyor. Zookeeper Dynamically, kullanılabilir Hiveserver2'yi keşfeder ve Hive oturumunu oluşturur.