MYSQL ile HIVE Metastore Nasıl Kurulur ve Yapılandırılır

⚡ Akıllı Özet

Hive metastore, Apache Hive'ın arkasında her tablo tanımını, sütun adını ve veri türünü saklar ve bu depoyu varsayılan Derby veritabanından taşımak... MySQL Bu, birden fazla kullanıcının aynı anda bağlanmasına olanak tanır.

  • 🗄️ İçindekiler: Metastore, şema meta verilerini ilişkisel tablolarda saklarken, tablo verilerinin kendisi HDFS'de kalır.
  • ???? Derby'nin başarısız olmasının nedenleri: Derby metastore paketi yalnızca bir aktif oturumu kabul eder; bu da onu paylaşımlı veya üretim ortamındaki kümeler için uygunsuz hale getirir.
  • 🔧 Dört özellik: KomuniteURLhive-site.xml dosyasındaki ConnectionDriverName, ConnectionUserName ve ConnectionPassword alanları Hive'ı şu konuma yönlendirir: MySQL.
  • 🔗 Sürücü yerleşimi: MKS MySQL Herhangi bir bağlantı girişiminin başarılı olabilmesi için JDBC bağlayıcısının Hive lib dizinine bağlanması gerekir.
  • 🧱 Önce şema: Schematool yardımcı programı metastore tablolarını oluşturur ve Hive, başlatılmamış bir şemaya karşı çalışmayı reddeder.
  • 🔎 Şurada doğrula: MySQL: Hive'da oluşturulan bir tablo, metastore veritabanının TBLS tablosunda anında bir satır olarak görünür.

Hive metastore'u nasıl kurup yapılandırabilirsiniz? MySQL

HIVE Metastore nedir?

Hive metastore, ilgili meta verileri (sütun adları, veri tipleri, yorumlar vb.) depolayan bir depodur. Apaçi Kovanı kullanma MySQL or PostgreSQL. Bu Hive meta deposu, ilişkisel bir veritabanındaki tablolar kullanılarak uygulanır.

Metastore'da satırların kendisi tutulmaz. Kayıtlar HDFS'de kalır ve metastore yalnızca her tablonun nerede bulunduğunu ve sütunlarının adlarını kaydeder; bu nedenle kaybolması verilerden ziyade şemanın kaybına neden olur.

Neden Kullanılmalı MySQL Hive'da Metastore olarak

Metastore arka ucu, Hive'ın sabit bir parçası değil, bir tercih meselesidir ve varsayılan olarak sunulan ayarlar kasıtlı olarak minimaldir. Üç sınırlama, neredeyse her kurulumu bu ayarlardan uzaklaştırır.

  • Varsayılan olarak, Hive meta veri deposu olarak Derby veritabanıyla birlikte gelir.
  • Derby aynı anda yalnızca tek bir aktif kullanıcıyı destekleyebilir.
  • Derby üretim ortamında tavsiye edilmez.

Dolayısıyla buradaki çözüm şu:

  • Kullanım MySQL Arka uçta meta depolama olarak, aynı anda birden fazla kullanıcının Hive'a bağlanmasını sağlar.
  • MySQL bağımsız metastore için en iyi seçimdir.

Hive Metastore Nasıl Kurulur ve Yapılandırılır MySQL veritabanı

Aşağıdaki dokuz adım, Hadoop ve Hive'ın zaten kurulu olduğu bir makinede sırayla çalıştırılır. Her adım, gerçek terminal veya shell çıktısının ekran görüntüsüyle sona erer.

Adım 1) Kurulum MySQL sunucu
Bu adımda iki görevi gerçekleştireceğiz

  1. MySQL sunucusunun kurulumu
  2. MySQL sunucusunu ve sürecini kontrol etme

Kullanma sudo apt-get install mysql sunucusu komutla indirebiliriz MySQL sunucu. Kurulum MySQL Aşağıdaki ekran görüntüsünde gösterildiği gibi.

Terminalde `sudo apt-get install mysql-server` komutunu çalıştırıyorum. Ubuntu

Başarılı kurulumun ardından, MySQL Aşağıdaki ekran görüntüsünde gösterildiği gibi çalışacaktır; işlem kontrolü hizmetin çalıştığını doğrular.

Kurulum sonrasında mysql-server işleminin çalıştığını doğrulayan terminal mesajı.

Adım 2) Kurulum MySQL Java Bağlayıcı
Takma MySQL Java Bağlantı elemanı. Bu, şunun için: Java Bağımlılıklar ve bağlantı amaçları için, çünkü Hive erişim sağlar. MySQL JDBC üzerinden. Sonraki ekran görüntüsü paket kurulumunu gösteriyor.

libmysql-java'yı terminale yükleme MySQL Java bağlantı paketi

Adım 3) Bağlayıcı için yumuşak bağlantı oluşturun
Hive lib dizininde bağlayıcı için bir sembolik bağlantı oluşturuluyor. Bu, bağlayıcı ile bağlayıcı arasındaki sembolik bağlantıdır. Java hem de MySQLBu komut, sürücü JAR dosyasını Hive sınıf yoluna ekler. Komut ve sonucu aşağıda yer almaktadır.

Terminal, sembolik bir bağlantı oluşturuyor. MySQL Hive lib dizinindeki connector JAR dosyası.

Adım 4) Yapılandırma MySQL Hive'da depolama
MKS MySQL Aşağıda gösterildiği gibi, herhangi bir Hive kullanıcısı oluşturulmadan önce shell'in root hesabı olarak açılması gerekir.

Terminalin açılışı MySQL mysql -u root -p komutuyla shell

  • Öncelikle mysql –u root –p komutunu, ardından da şifrenizi girin.
  • Burada –u, root kullanıcı adını, –p ise parolayı temsil eder.
  • Yukarıdaki komutu girdikten sonra, kullanıcının geçerli bir parola girmesi ve ardından Enter tuşuna basması gerekir.
  • Sonra içine girecek MySQL kabuk modu

Adım 5) Kullanıcı adı ve şifre oluşturun
Kullanıcı adı ve parola oluşturma MySQLve ayrıcalıklar tanıma. Aşağıdaki ekran görüntüsü, içinde çalışan üç ifadeyi göstermektedir. MySQL kabuk.

MySQL shell, hiveuser hesabını oluşturuyor ve ayrıcalıklar veriyor.

Aşağıda gösterildiği gibi komutları uygulamamız gerekiyor,

mysql> CREATE USER 'hiveuser'@'%' IDENTIFIED BY 'hivepassword'; 
mysql> GRANT all on *.* to 'hiveuser'@localhost identified by 'hivepassword';
mysql>  flush privileges;

On MySQL 8. İkinci ifadenin birleştirilmiş hali artık ayrıştırılamıyor çünkü GRANT'tan IDENTIFIED BY kaldırıldı. Önce hesabı oluşturun, ardından ona yetki verin ve CREATE USER satırını hem localhost ana bilgisayarı hem de joker karakter ana bilgisayarı için tekrarlayın.

Adım 6) hive-site.xml dosyasının yapılandırılması

  • 5. Adımdan sonra bir kullanıcı adı ve şifre atanır. MySQL veritabanına erişim sağlar ve ayrıcalıklar tanır.
  • Burada, Hive ile bağlantı kurmak için bazı özellikleri yapılandıracağız. MySQL veri tabanı.

Aşağıdaki ekran görüntüsünde de görüldüğü gibi, yapılandırma dosyası Hive conf dizininden açılır.

Terminal, Hive yapılandırma dizinindeki hive-site.xml dosyasını düzenlemek üzere açıyor.

Aşağıdaki ekran görüntüsü, dört özelliğin de yerleştirildiği tamamlanmış dosyayı göstermektedir.

hive-site.xml dosyasında javax.jdo.option bağlantı özelliklerinin dördü gösterilmektedir.

Yukarıdaki ekran görüntüsünden şunları gözlemliyoruz. Burada, oluşturmak için gerekli olan 4 özelliği tanımlıyoruz. MySQL Hive'daki metastore olarak.

Bunlar şöyledir:

  1. Bu özellik bağlantı içindir. URLBurada bağlantıyı tanımlıyoruz.URL Bu özellik, JDBC bağlantı dizesi görevi görür ve aynı zamanda metastore konumunu da temsil eder.
  2. Bu özellik, bağlantı sürücüsünün adı içindir. Burada `com.mysql.jdbc.Driver`, `value` etiketinde belirtmemiz gereken değerdir.
  3. Bu özellik, bağlantı kullanıcı adını tanımlamak için kullanılır. Burada, kullanıcı adı olarak "hiveuser" tanımladık.
  4. Bu özellik, bağlantı şifresini belirtmek için kullanılır. Burada, kullanıcı şifresi olarak "hivepassword" tanımladık.

Özellikler hive-site.xml dosyasına yerleştirildikten sonra, dosyayı manuel olarak kaydetmemiz (Ctrl+S) ve kapatmamız gerekiyor. Bu dosyayı kapattıktan sonra, bir Hive tablosu oluşturmalı ve tablo ayrıntılarını kontrol etmeliyiz. MySQL depolama.

Bu kodu Hive-site.xml dosyasına yerleştirin

kovan-site.xml

<configuration>
	<property>
		<name>javax.jdo.option.ConnectionURL</name>
		<value>jdbc:mysql://localhost/metastore?createDatabaseIfNotExist=true</value>
		<description>metadata is stored in a MySQL server</description>
	</property>
	<property>
		<name>javax.jdo.option.ConnectionDriverName</name>
		<value>com.mysql.jdbc.Driver</value>
		<description>MySQL JDBC driver class</description>
	</property>
	<property>
		<name>javax.jdo.option.ConnectionUserName</name>
		<value>hiveuser</value>
		<description>user name for connecting to mysql server</description>
	</property>
	<property>
		<name>javax.jdo.option.ConnectionPassword</name>
		<value>hivepassword</value>
		<description>password for connecting to mysql server</description>
	</property>
</configuration>

Yukarıdaki iki değer, kullanılan konektör sürümüne bağlıdır. MySQL Connector/J 8, sürücü sınıfının adını com.mysql.cj.jdbc.Driver olarak değiştirdi ve ayrıca açık bir port ve SSL ayarı bekliyor, bu nedenle modern bir URL Genellikle şu şekilde okunur: jdbc:mysql://localhost:3306/metastore?createDatabaseIfNotExist=true&useSSL=false. Parola açık metin olarak bulunduğundan, dosya yalnızca Hive hizmet hesabı tarafından okunabilir olmalıdır.

Adım 7) Tablo oluşturun
Aşağıdaki Hive kabuğunda gösterildiği gibi, Hive'da "guru99" tablosunu oluşturun.

Hive shell, bir tamsayı ve bir metin sütunu içeren guru99 tablosunu oluşturuyor.

Yukarıdaki ekran görüntüsünden aşağıdakileri gözlemleyebiliriz:

  • “guru99” adında, iki sütun adına sahip bir tablo oluşturulması.
  • Sütun adları veri türleriyle birlikte belirtilmiştir; biri tamsayı, diğeri metin dizesidir.

Bir sonraki adımda, depolanıp depolanmadığını kontrol edeceğiz. MySQL veya olmasın.

Adım 8) İçeri girin MySQL kabuk modu
Öncelikle metastore veritabanı seçilir ve ardından aşağıdaki tablo listesi gösterilir.

MySQL shell çalıştırılıyor, `use metastore` ve `show tables` komutları çalıştırılarak metastore tabloları listeleniyor.

Yukarıdaki ekran görüntüsünden aşağıdakileri gözlemleyebiliriz:

  • Öncelikle "metastore kullan" seçeneğini kullanarak veritabanını seçmeliyiz.
  • Metastore seçildikten sonra, ekran görüntüsünde gösterildiği gibi "show tables" komutunu kullanarak içinde bulunan tabloları kontrol edebiliriz.
  • Hive'da oluşturulan tablolar ne olursa olsun, bu tablolara karşılık gelen meta veriler TBLS altında saklanır. MySQL veritabanı
  • Hive'da "guru99" tablosu oluşturulduğu için ilgili meta veriler burada saklanır. MySQL TBLS kapsamında

Adım 9) TBLS'den select * girin
Oluşturulan tablonun mevcut olup olmadığını kontrol etme MySQL Ya da değil. Sorgu ve sonucu aşağıdaki ekran görüntüsünde yer almaktadır.

MySQL `select * from TBLS` komutunu çalıştıran ve guru99 tablosundaki satırı görüntüleyen shell.

TBLS'den select * girerek Hive kabuk modunda oluşturduğumuz tabloları görüntüleyecektir.

Yukarıdaki ekran görüntüsünden şunları gözlemleyebiliriz:

  • Hive'da oluşturulan "guru99" adlı tablo şu şekilde görüntülenebilir: MySQL kabuk modu
  • Bunun yanı sıra, yukarıdaki ekran görüntüsünde gösterildiği gibi tablo oluşturma zamanı, erişim zamanı ve diğer özellikler gibi bilgiler de sağlayacaktır.

Schematool kullanarak Hive Metastore şemasını nasıl başlatabilirsiniz?

Bağlantıdaki createDatabaseIfNotExist bayrağı URL Boş bir metastore veritabanı oluşturur, ancak Hive'ın içinde beklediği yaklaşık yetmiş tabloyu oluşturmaz. Hive 1.x ve sonraki sürümlerde bu iş schematool yardımcı programına aittir ve atlanmalıdır.ping Yeni yapılandırılmış bir metastore'un başlatılamamasının en yaygın nedeni budur.

$HIVE_HOME/bin/schematool -dbType mysql -initSchema

Bu komut, hive-site.xml dosyasından aynı dört özelliği okur, hiveuser hesabıyla bağlantı kurar ve Hive sürümüne uygun paketlenmiş SQL betiğini çalıştırır. Başarılı bir çalıştırma, bir tamamlama mesajıyla sona erer ve sonrasında durum her zaman doğrulanabilir.

$HIVE_HOME/bin/schematool -dbType mysql -info

Aşağıdaki bayraklar, bir metastore şemasının tüm yaşam döngüsünü kapsar.

Opsiyon Ne yapar
-dbType MySQL, Derby, PostgreSQL, Oracle veya MSSQL gibi arka uç veritabanının adını belirtir.
-Şemayı başlat Geçerli Hive sürümü için metastore tablolarını oluşturur.
-bilgi Veritabanında kaydedilen şema sürümünü raporlar.
-Şemayı yükselt Hive yükseltmesinden sonra mevcut bir şemayı taşır.
-doğrulamak Şemada eksik tabloları ve sürüm uyuşmazlıklarını kontrol eder.

İlk çalıştırmadan önce bilinmesi gereken ilgili bir özellik var. hive.metastore.schema.verification değeri true olduğunda, Hive şema sürümünü karşılaştırır. MySQL Kendi sistemine karşı kontrol eder ve uyumsuzluk durumunda çalışmayı reddeder. Bu kontrol bir güvenlik önlemidir, bu nedenle doğru yanıt, yükseltmeyi kapatmak yerine çalıştırmaktır. Aynı şekilde MySQL Arka uç, aşağıda açıklanan Hive kurulumu tarafından kullanılmaktadır. Hive'ı kurun Ubuntu.

Hive Metastore'da Sık Karşılaşılan Hatalar ve Bunların Nasıl Düzeltileceği

Bu aşamada yaşanan başarısızlıkların çoğu, birkaç mesajdan birini üretir ve bunların her biri Hive'ın kendisinden ziyade bir üst aşamaya işaret eder.

Semptom Sebep ve çözüm
Metastore'da sürüm bilgisi bulunamadı. Şema hiç oluşturulmadı. Bağlantıda belirtilen aynı veritabanına karşı schematool komutunu -initSchema parametresiyle çalıştırın. URL
JDBC sürücüsü için ClassNotFoundException hatası. Hive lib dizininde Connector JAR dosyası eksik veya Connector/J 8 kullanılıyor ve sınıf artık com.mysql.cj.jdbc.Driver. 3. Adımdaki sembolik bağlantıyı tekrar kontrol edin.
hiveuser kullanıcısı için erişim engellendi. Ayrıcalıklar yalnızca bir sunucuya verildi. Hem localhost hem de joker sunucu için hesap oluşturun, ardından flush privileges komutunu çalıştırın.
IDENTIFIED BY yakınında sözdizimi hatası MySQL 8. GRANT ifadesinden IDENTIFIED BY kaldırıldı. Önce CREATE USER, sonra GRANT komutunu verin.
Herkese açık anahtarların alınmasına izin verilmiyor. Connector/J 8 varsayılan olarak şifrelenmemiş el sıkışmayı reddeder. JDBC yapılandırmasına useSSL=false ve allowPublicKeyRetrieval=true ekleyin. URL güvenilir bir ağda
Hive güncellemesinden sonra tablolar kayboldu. Şema hala eski sürümle eşleşiyor. Şema doğrulamasını devre dışı bırakmak yerine, schematool komutunu -upgradeSchema parametresiyle çalıştırın.

Metastore güvenilir bir şekilde yanıt vermeye başladığında, kaydettiği tablo tanımları, aşağıda açıklanan ifadelerle oluşturulur. Hive'da tablo oluşturma, değiştirme ve silme işlemleri.

SSS

Hive, Derby'ye destek veriyor. MySQL, PostgreSQL, Oracle hem de Microsoft SQL ServerSchematool, bunların her birini -dbType bayrağı aracılığıyla kabul eder. Derby varsayılan seçenek olarak kalır ve tek bir oturumla sınırlıdır.

Gömülü çalıştırma, Derby'yi Hive işlemi içinde çalıştırır. Yerel çalıştırma ise metastore kodunu Hive içinde, ancak harici bir veritabanına karşı çalıştırır. MySQLRemote, metastore'u birden fazla istemcinin paylaştığı kendi Thrift hizmeti olarak çalıştırır.

DBS veritabanlarını, TBLS tabloları, COLUMNS_V2 sütun tanımlarını, SDS depolama tanımlayıcılarını ve PARTITIONS bölüm girişlerini kaydeder. Bu isimler dahili olduğundan, elle düzenlemek yerine incelemek için sorgulayın.

Bunu bir Hadoop kimlik bilgisi sağlayıcısı anahtar deposuna kaydedin ve hive.metastore.credential.provider.path'i bu dosyaya yönlendirin, ardından düz değeri kaldırın. hive-site.xml dosyasındaki dosya izinlerini kısıtlamak en düşük yedek önlemdir.

HDFS'deki dosyalar korunur, ancak her tablo, bölüm ve sütun tanımı kaybolur ve Hive artık bunları okuyamaz. MySQL Bu nedenle, metastore veritabanının dökümleri normal küme yedeklemesinin bir parçasıdır.

Thrift metastore hizmeti, hive.metastore.port aracılığıyla varsayılan olarak 9083 numaralı bağlantı noktasında dinleme yapar. İstemciler, veritabanı şifresinin istemci makinelerine erişimini engellemek için doğrudan JDBC kimlik bilgileri yerine hive.metastore.uris ile erişim sağlarlar.

Evet. Metastore sorgu günlükleri üzerinden yapılan anormallik tespiti, işler zaman aşımına uğramadan önce ani çağrı artışlarını, yavaş bölüm listelemelerini ve kontrolsüz tablo büyümesini işaretler. Model adayları vurgular ve bir yönetici yine de nedeni doğrular.

Copilot, kısa bir yorumdan javax.jdo.option özellik bloğunu taslak haline getirir ve ajansal asistanlar tüm kurulumu betikleyebilir. Sürücü sınıfını ve bağlantı noktasını doğrulayın, çünkü eğitim verileri hala eski bağlantı adını tercih ediyor.

Bu yazıyı şu şekilde özetleyin: