Kyuubi Gateway, Java Database Connectivity (JDBC) ve Open Database Connectivity (ODBC) arabirimleri sağlar. Bu arabirimler sayesinde Serverless Spark'ı Tableau ve Power BI gibi SQL sorgu araçlarına ve iş zekası (BI) araçlarına bağlayarak verilerinize verimli bir şekilde erişebilir ve analiz edebilirsiniz. Ağ geçidi ayrıca çok kiracılı kaynak yalıtımı özelliğiyle kurumsal uygulamaları destekler.
Kyuubi Ağ Geçidi Oluşturma
-
Ağ Geçidi sayfasına gidin.
EMR konsolu üzerinden oturum açın.
Sol gezinme bölmesinde EMR Serverless > Spark seçeneklerini seçin.
Spark sayfasında hedef çalışma alanının adını tıklayın.
EMR Serverless Spark sayfasında sol gezinme bölmesinden yolunu izleyin.
Kyuubi Gateway sayfasında Create Kyuubi Gateway seçeneğini tıklayın.
-
Kyuubi Ağ Geçidi Oluştur sayfasında parametreleri yapılandırın ve create seçeneğini tıklayın.
Parametre
Açıklama
Name
Yeni ağ geçidinin adı. Ad en fazla 64 karakter uzunluğunda olabilir ve yalnızca harfler, rakamlar, tire (-), alt çizgi (_) ve boşluk içerebilir. Bir harfle başlamalıdır.
Kyuubi Gateway Resources
Varsayılan değer
2 CPU, 8 GBşeklindedir.Desteklenen teknik özellikler ve önerilen maksimum eşzamanlılık sayısı aşağıdaki gibidir:
-
1 CPU, 4 GB: 10 -
2 CPU, 8 GB: 20 -
4 CPU, 16 GB: 30 -
8 CPU, 32 GB: 45 -
16 CPU, 64 GB: 85 -
32 CPU, 128 GB: 135
NotBirçok Spark yapılandırma öğesi, Spark görevleri için anlık gönderim eşzamanlılığını azaltabilir.
Kyuubi Version
Geçerli ağ geçidi tarafından kullanılan Kyuubi sürümü.
NotCatalogs bölümünde DLF (eski adıyla DLF 2.5) kullanıyorsanız Kyuubi Version ayarını 1.9.2-0.0.1 veya daha yeni bir sürüme ayarlamanız gerekir.
Engine Version
Geçerli ağ geçidi tarafından kullanılan altyapı sürümü. Altyapı sürüm numaraları hakkında daha fazla bilgi için bkz. Engine versions.
Associated Queue
Oluşturulan ağ geçidi seçili kuyrukta dağıtılır. Ağ geçidi üzerinden bir Spark görevi gönderdiğinizde görev, ağ geçidi oluşturucusunun kimliği kullanılarak gönderilir.
Authentication Method
Yalnızca belirteç tabanlı kimlik doğrulama desteklenir.
Bir ağ geçidi oluşturduktan sonra bu ağ geçidi için benzersiz bir kimlik doğrulama belirteci oluşturmanız gerekir. Bu belirteç, sonraki isteklerde kimlik doğrulama ve erişim kontrolü için kullanılır. Belirteç oluşturma hakkında daha fazla bilgi için bkz. Gateway management.
Service High Availability
Hizmet yüksek kullanılabilirliğini (HA) etkinleştirdikten sonra yüksek kullanılabilirliği sağlamak üzere üç veya daha fazla Kyuubi Sunucusu dağıtılır.
Bu anahtarı açtıktan sonra aşağıdaki parametreleri de yapılandırmanız gerekir:
-
Number of Kyuubi Servers: Kyuubi sunucularının sayısı.
-
Zookeeper cluster address: Yüksek kullanılabilirliğe sahip bir Kyuubi Ağ Geçidi bir Zookeeper kümesine bağlıdır. Zookeeper kümesi uç noktasını girin. Birden çok düğümü virgül (,) ile ayırın. Ağ bağlantısının kurulduğundan emin olun. Örneğin:
zk1:2181,zk2:2181,zk3:2181.
Network Connection
Bir VPC'deki veri kaynaklarına veya harici hizmetlere erişmek için mevcut bir ağ bağlantısı. Daha fazla bilgi için bkz. Network connectivity between EMR Serverless Spark and other VPCs.
Endpoint(Public)
Bu özellik varsayılan olarak devre dışıdır. Bu özelliği etkinleştirirseniz sistem Kyuubi'ye genel bir uç nokta üzerinden erişir. Aksi takdirde Kyuubi'ye varsayılan olarak aynı bölgedeki dahili uç nokta üzerinden erişilir.
Kyuubi Configuration
Kyuubi yapılandırma bilgilerini girin. Parametreler varsayılan olarak boşluklarla ayrılır. Örneğin:
kyuubi.engine.pool.size 1.Yalnızca aşağıdaki Kyuubi yapılandırmaları desteklenir.
kyuubi.engine.pool.size kyuubi.engine.pool.size.threshold kyuubi.engine.share.level kyuubi.engine.single.spark.session kyuubi.session.engine.idle.timeout kyuubi.session.engine.initialize.timeout kyuubi.engine.security.token.max.lifetime kyuubi.session.engine.check.interval kyuubi.session.idle.timeout kyuubi.session.engine.request.timeout kyuubi.session.engine.login.timeout kyuubi.backend.engine.exec.pool.shutdown.timeout kyuubi.backend.server.exec.pool.shutdown.timeout kyuubi.backend.server.exec.pool.keepalive.time kyuubi.frontend.thrift.login.timeout kyuubi.operation.status.polling.timeout kyuubi.engine.pool.selectPolicy kyuubi.authentication kyuubi.kinit.principal kyuubi.kinit.keytab kyuubi.authentication.ldap.* kyuubi.hadoop.proxyuser.hive.hosts kyuubi.hadoop.proxyuser.hive.groups kyuubi.hadoop.proxyuser.kyuubi.hosts kyuubi.hadoop.proxyuser.kyuubi.groups kyuubi.ha.*Spark Configuration
Spark yapılandırma bilgilerini girin. Parametreler varsayılan olarak boşluklarla ayrılır.
spark.kubernetes.*türündeki parametreler hariç tüm parametreler desteklenir. Örneğin:spark.sql.catalog.paimon.metastore dlf. -
Kyuubi Ağ Geçidi sayfasında oluşturduğunuz ağ geçidini bulun ve İşlemler sütunundaki START seçeneğini tıklayın.
Belirteçleri yönetme
Kyuubi Gateway sayfasında hedef ağ geçidini bulun ve İşlemler sütunundaki Token Management seçeneğini tıklayın.
Create Token seçeneğini tıklayın.
-
Create Token iletişim kutusunda parametreleri yapılandırın ve OK seçeneğini tıklayın.
Parametre
Açıklama
Name
Yeni belirtecin adı.
Expired At
Belirteç için yaşam süresini (TTL) ayarlayın. Gün sayısı 1 veya daha büyük olmalıdır. Bu özellik varsayılan olarak etkindir ve belirteç 365 gün sonra sona erer.
Assign Object
Not-
Catalogs sekmesinde varsayılan olarak DLF (eski adıyla DLF 2.5) kullanıyorsanız bu parametreyi yapılandırmanız gerekir.
-
Yapılandırılan Resource Access Management (RAM) kullanıcısının veya RAM rolünün DLF'ye erişim izinlerine sahip olduğundan emin olun. İzinlerin nasıl verileceği hakkında daha fazla bilgi için bkz. Add an authorization.
-
RAM kullanıcısı veya RAM rolü Assign Object açılır listesinde görünmeden önce Spark çalışma alanına eklenmelidir. Daha fazla bilgi için bkz. Manage users and roles.
Açılır listeden Access Control bölümünde eklediğiniz RAM kullanıcısını veya RAM rolünü seçin.
Belirtecin atanacağı RAM kullanıcısını veya RAM rolünü belirtin. Bu kullanıcı veya rol, bir Spark görevi göndermek için Kyuubi Ağ Geçidine bağlandığınızda DLF'ye erişmek için kullanılır.
-
-
Belirteç bilgilerini kopyalayın.
ÖnemliBir belirteç oluşturulduktan sonra belirteç bilgilerini hemen kopyalamanız gerekir çünkü daha sonra bu bilgileri görüntüleyemezsiniz. Bir belirtecin süresi dolarsa veya kaybolursa belirteci yeniden oluşturmanız veya sıfırlamanız gerekir.
Kyuubi Ağ Geçidine Bağlanma
Kyuubi Ağ Geçidine bağlanırken JDBC URL'sindeki yer tutucuları gerçek bilgilerinizle değiştirin:
<endpoint>: Overview sekmesinden elde edebileceğiniz uç nokta.<port>: Bağlantı noktası numarası. Genel uç nokta erişimi için 443 bağlantı noktasını, aynı bölgedeki dahili uç nokta erişimi için 80 bağlantı noktasını kullanın.<token>: Token Management sekmesinden kopyaladığınız belirteç.<tokenname>: Belirteç adı. Adı Token Management sekmesinden elde edebilirsiniz.<UserName/RoleName>: Access Control bölümünde eklediğiniz RAM kullanıcısı veya RAM rolü.
Beeline kullanarak bağlanma
Kyuubi Ağ Geçidine bağlanırken Beeline sürümünüzün Kyuubi sunucu tarafı sürümüyle uyumlu olduğundan emin olun. Beeline yüklü değilse bkz. Getting Started - Apache Kyuubi.
Catalogs sayfasında kullanılan varsayılan kataloga bağlı olarak aşağıdaki işlemlerden birini gerçekleştirin.
DLF Kullanma (eski adıyla DLF 2.5)
beeline -u "jdbc:hive2://<endpoint>:<port>/;transportMode=http;user=<UserName/RoleName>;httpPath=cliservice/token/<token>"
Diğer katalogları kullanma
beeline -u "jdbc:hive2://<endpoint>:<port>/;transportMode=http;httpPath=cliservice/token/<token>"
Beeline kullanarak bağlanırken oturum parametrelerini değiştirebilirsiniz. Örneğin: beeline -u "jdbc:hive2://<endpoint>:<port>/;transportMode=http;httpPath=cliservice/token/<token>;#spark.sql.shuffle.partitions=100;spark.executor.instances=2;".
Java kullanarak bağlanma
-
pom.xml dosyasını güncelleyin.
hadoop-commonvehive-jdbcbağımlılıklarını uygun sürümlerle değiştirin.<dependencies> <dependency> <groupId>org.apache.hadoop</groupId> <artifactId>hadoop-common</artifactId> <version>3.0.0</version> </dependency> <dependency> <groupId>org.apache.hive</groupId> <artifactId>hive-jdbc</artifactId> <version>2.3.9</version> </dependency> </dependencies> -
Kyuubi Ağ Geçidine bağlanmak için Java kodu yazın.
Catalogs sayfasında kullanılan varsayılan kataloga bağlı olarak aşağıdaki işlemlerden birini gerçekleştirin.
DLF Kullanma (eski adıyla DLF 2.5)
import org.apache.hive.jdbc.HiveStatement; import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.ResultSetMetaData; public class Main { public static void main(String[] args) throws Exception { String url = "jdbc:hive2://<endpoint>:<port>/;transportMode=http;httpPath=cliservice/token/<token>;user=<UserName/RoleName>"; Class.forName("org.apache.hive.jdbc.HiveDriver"); Connection conn = DriverManager.getConnection(url); HiveStatement stmt = (HiveStatement) conn.createStatement(); String sql = "select * from students;"; System.out.println("Running " + sql); ResultSet res = stmt.executeQuery(sql); ResultSetMetaData md = res.getMetaData(); String[] columns = new String[md.getColumnCount()]; for (int i = 0; i < columns.length; i++) { columns[i] = md.getColumnName(i + 1); } while (res.next()) { System.out.print("Row " + res.getRow() + "=["); for (int i = 0; i < columns.length; i++) { if (i != 0) { System.out.print(", "); } System.out.print(columns[i] + "='" + res.getObject(i + 1) + "'"); } System.out.println(")]"); } conn.close(); } }Diğer katalogları kullanma
import org.apache.hive.jdbc.HiveStatement; import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.ResultSetMetaData; public class Main { public static void main(String[] args) throws Exception { String url = "jdbc:hive2://<endpoint>:<port>/;transportMode=http;httpPath=cliservice/token/<token>"; Class.forName("org.apache.hive.jdbc.HiveDriver"); Connection conn = DriverManager.getConnection(url); HiveStatement stmt = (HiveStatement) conn.createStatement(); String sql = "select * from students;"; System.out.println("Running " + sql); ResultSet res = stmt.executeQuery(sql); ResultSetMetaData md = res.getMetaData(); String[] columns = new String[md.getColumnCount()]; for (int i = 0; i < columns.length; i++) { columns[i] = md.getColumnName(i + 1); } while (res.next()) { System.out.print("Row " + res.getRow() + "=["); for (int i = 0; i < columns.length; i++) { if (i != 0) { System.out.print(", "); } System.out.print(columns[i] + "='" + res.getObject(i + 1) + "'"); } System.out.println(")]"); } conn.close(); } }
Python kullanarak bağlanma
-
PyHive ve Thrift paketlerini yüklemek için aşağıdaki komutu çalıştırın.
pip3 install pyhive thrift -
Kyuubi Ağ Geçidine bağlanmak için bir Python betiği yazın.
Aşağıdaki örnekte bir Kyuubi Ağ Geçidine bağlanan ve veritabanı listesini gösteren bir Python betiği gösterilmektedir.
Catalogs sayfasında kullanılan varsayılan kataloga bağlı olarak aşağıdaki işlemlerden birini gerçekleştirin.
DLF Kullanma (eski adıyla DLF 2.5)
from pyhive import hive if __name__ == '__main__': cursor = hive.connect('<endpoint>', port="<port>", scheme='http', username='<UserName/RoleName>', password='<token>').cursor() cursor.execute('show databases') print(cursor.fetchall()) cursor.close()Diğer katalogları kullanma
from pyhive import hive if __name__ == '__main__': cursor = hive.connect('<endpoint>', port="<port>", scheme='http', username='<tokenname>', password='<token>').cursor() cursor.execute('show databases') print(cursor.fetchall()) cursor.close()
REST API kullanarak bağlanma
Kyuubi Gateway, HTTP üzerinden Kyuubi hizmetiyle etkileşimi destekleyen açık kaynak uyumlu REST API'leri sağlar. Şu anda yalnızca aşağıdaki API yolları desteklenmektedir:
/api/v1/sessions/*/api/v1/operations/*/api/v1/batches/*
Aşağıdaki örneklerde REST API kullanılarak bir Kyuubi Ağ Geçidine nasıl bağlanılacağı gösterilmektedir.
-
Örnek 1: Oturum başlatma ve SQL sorgusu gerçekleştirme.
-
Bir oturum oluşturun ve Spark yapılandırmalarını belirtin.
Catalogs sayfasında kullanılan varsayılan kataloga bağlı olarak aşağıdaki işlemlerden birini gerçekleştirin.
Notspark.emr.serverless.kyuubi.engine.queueparametresi Spark görevinin çalışma zamanında kullandığı kuyruğu belirtir.<dev_queue>yer tutucusunu gerçek kuyruk adıyla değiştirin.<UserName/Rolename>yer tutucusunu gerçek kullanıcı adı veya rol adıyla değiştirin.<password>bir yer tutucudur. Herhangi bir değer girebilirsiniz.
DLF Kullanma (eski adıyla DLF 2.5)
curl -X 'POST' \ 'http://<endpoint>:<port>/api/v1/sessions/token/<token>' \ -H 'accept: application/json' \ -H 'Content-Type: application/json' \ -u '<UserName/Rolename>:<password>' \ -d '{ "configs": { "set:hivevar:spark.emr.serverless.kyuubi.engine.queue": "<dev_queue>" } }'Diğer katalogları kullanma
curl -X 'POST' \ 'http://<endpoint>:<port>/api/v1/sessions/token/<token>' \ -H 'accept: application/json' \ -H 'Content-Type: application/json' \ -d '{ "configs": { "set:hivevar:spark.emr.serverless.kyuubi.engine.queue": "<dev_queue>" } }'Aşağıdakine benzer bir ileti döndürülür. İletideki
identifierdeğeri, bir oturumu benzersiz şekilde tanımlayan Kyuubi oturum tanıtıcısıdır. Bu konuda bu değer<sessionHandle>olarak adlandırılır.{"identifier":"619e6ded-xxxx-xxxx-xxxx-c2a43f6fac46","kyuubiInstance":"0.0.0.0:10099"} -
Bir ifade oluşturun.
DLF Kullanma (eski adıyla DLF 2.5)
curl -X 'POST' \ 'http://<endpoint>:<port>/api/v1/sessions/<sessionHandle>/operations/statement/token/<token>' \ -H 'accept: application/json' \ -H 'Content-Type: application/json' \ -u '<UserName/RoleName>:<password>' \ -d '{ "statement": "select * from test;", "runAsync": true, "queryTimeout": 0, "confOverlay": { "additionalProp1": "string", "additionalProp2": "string" } }'Diğer katalogları kullanma
curl -X 'POST' \ 'http://<endpoint>:<port>/api/v1/sessions/<sessionHandle>/operations/statement/token/<token>' \ -H 'accept: application/json' \ -H 'Content-Type: application/json' \ -d '{ "statement": "select * from test;", "runAsync": true, "queryTimeout": 0, "confOverlay": { "additionalProp1": "string", "additionalProp2": "string" } }'Aşağıdakine benzer bir ileti döndürülür. İletideki
identifierdeğeri, belirli bir işlemi benzersiz şekilde tanımlayan Kyuubi işlem tanıtıcısıdır. Bu konuda bu değer<operationHandle>olarak adlandırılır.{"identifier":"a743e8ff-xxxx-xxxx-xxxx-a66fec66cfa4"} -
İfade durumunu alın.
DLF Kullanma (eski adıyla DLF 2.5)
curl --location -X 'GET' \ 'http://<endpoint>:<port>/api/v1/operations/<operationHandle>/event/token/<token>' \ -H 'accept: application/json' \ -u '<UserName/RoleName>:<password>'Diğer katalogları kullanma
curl --location -X 'GET' \ 'http://<endpoint>:<port>/api/v1/operations/<operationHandle>/event/token/<token>' \ -H 'accept: application/json' -
İfade sonucunu alın.
DLF Kullanma (eski adıyla DLF 2.5)
curl --location -X 'GET' \ 'http://<endpoint>:<port>/api/v1/operations/<operationHandle>/rowset/token/<token>/?maxrows=100&fetchorientation=FETCH_NEXT' \ -H 'accept: application/json' \ -u '<UserName/RoleName>:<password>'Diğer katalogları kullanma
curl --location -X 'GET' \ 'http://<endpoint>:<port>/api/v1/operations/<operationHandle>/rowset/token/<token>/?maxrows=100&fetchorientation=FETCH_NEXT' \ -H 'accept: application/json'
-
-
Örnek 2: Toplu iş API'sini kullanarak toplu iş gönderme.
REST API kullanarak bir Spark toplu işleme görevini Kyuubi Ağ Geçidine gönderin. Kyuubi Ağ Geçidi, istekteki parametrelere dayalı olarak bir Spark uygulaması başlatır ve belirtilen görevi yürütür.
Bu örnekte
<endpoint>,<port>ve<token>gibi bilgileri değiştirmenin yanı sıra test JAR paketini indirmek için spark-examples_2.12-3.3.1.jar bağlantısını tıklamanız gerekir.NotBu JAR paketi, Pi (π) değerini hesaplamak için kullanılan ve Spark ile birlikte sağlanan basit bir örnektir.
DLF Kullanma (eski adıyla DLF 2.5)
curl --location \ --request POST 'http://<endpoint>:<port>/api/v1/batches/token/<token>' \ --user '<UserName/RoleName>:<password>' \ --form 'batchRequest="{ \"batchType\": \"SPARK\", \"className\": \"org.apache.spark.examples.SparkPi\", \"name\": \"kyuubi-spark-pi\", \"resource\": \"oss://bucket/path/to/spark-examples_2.12-3.3.1.jar\" }";type=application/json'Diğer katalogları kullanma
curl --location \ --request POST 'http://<endpoint>:<port>/api/v1/batches/token/<token>' \ --form 'batchRequest="{ \"batchType\": \"SPARK\", \"className\": \"org.apache.spark.examples.SparkPi\", \"name\": \"kyuubi-spark-pi\", \"resource\": \"oss://bucket/path/to/spark-examples_2.12-3.3.1.jar\" }";type=application/json'
Apache Superset kullanarak bağlanma
Apache Superset, zengin grafik çeşitliliğine sahip modern bir veri keşfi ve görselleştirme platformudur. Superset hakkında daha fazla bilgi için Superset belgelerine bakın.
Superset kullanarak bir Kyuubi Ağ Geçidine bağlanmadan önce Thrift 0.20.0 veya daha yeni bir sürümü yüklediğinizden emin olun. Yüklemediyseniz aşağıdaki komutu çalıştırarak yükleyin:
pip install thrift==0.20.0
Superset'i başlatın ve Superset arayüzüne gidin. Superset'in nasıl başlatılacağı hakkında daha fazla bilgi için bkz. Superset documentation.
Sayfanın sağ üst köşesinde veritabanına bağlanma sayfasına gitmek için DATABASE seçeneğini tıklayın.
Veritabanına bağlanma sayfasında Apache Spark SQL seçeneğini seçin.
-
SQLAlchemy URI alanında erişim yöntemine karşılık gelen bağlantı dizesini girin.
Genel ağ erişimi
hive+https://<username>:<token>@<endpoint>:443/<db_name>VPC ağ erişimi
hive+http://<username>:<token>@<endpoint>:80/<db_name>Parametreler aşağıdaki tabloda açıklanmıştır.
Parametre
Açıklama
username
Kullanıcı adı. Herhangi bir değer girebilirsiniz.
Token
Erişim belirteci.
Endpoint
Kyuubi Ağ Geçidinin erişim uç noktası. Genel uç nokta ile dahili uç nokta arasında ayrım yapmanız gerekir.
db_name
Veritabanı adı. Bağlantı yapılandırmasını tamamlamak için Connect seçeneğini tıklayın.
HUE kullanarak bağlanma
HUE kullanarak bir Kyuubi Ağ Geçidine bağlanmadan önce Thrift 0.20.0 sürümünü yüklediğinizden emin olun. Yüklemediyseniz aşağıdaki komutu çalıştırarak yükleyin:
pip install thrift==0.20.0
-
HUE yapılandırma dosyasını
/etc/hue/hue.confdüzenleyin ve erişim yönteminize karşılık gelen yapılandırmayı ekleyin.Genel ağ erişimi
[[[sparksql]]] name = Spark Sql interface=sqlalchemy options='{"url": "hive+https://<username>:<token>@<endpoint>:443/"}'VPC ağ erişimi
[[[sparksql]]] name = Spark Sql interface=sqlalchemy options='{"url": "hive+http://<username>:<token>@<endpoint>:80/"}'Parametreler aşağıdaki tabloda açıklanmıştır.
Parametre
Açıklama
username
Kullanıcı adı. Herhangi bir değer girebilirsiniz.
Token
Erişim belirteci.
Endpoint
Kyuubi Ağ Geçidinin erişim uç noktası. -
HUE hizmetini yeniden başlatın.
sudo service hue restart HUE web kullanıcı arayüzünde oturum açın. Sol gezinme bölmesinde bağlantıyı doğrulamak için Query > Editor > SparkSql yolunu izleyin.
DataGrip kullanarak bağlanma
DataGrip kullanarak bir Kyuubi Ağ Geçidine bağlanmadan önce Apache Spark JDBC Driver'ı (Spark 3.x uyumluluğu için sürüm 1.2.2) indirdiğinizden emin olun.
DataGrip'i açın ve yeni bir proje oluşturun.
Sağ taraftaki Database Explorer panelinde + simgesini tıklayın ve Data Source > Other > Apache Spark seçeneklerini seçin.
-
Data Sources and Drivers iletişim kutusunda aşağıdaki parametreleri yapılandırın.
Parametre
Açıklama
Name
Özel bir bağlantı adı.
Authentication
No auth veya User & Password seçeneğini seçin. Herhangi bir kullanıcı adı girebilirsiniz.
Driver
Apache Spark ver. 1.2.2 seçeneğini seçin.
URL
Genel ağ erişimi
jdbc:hive2://<endpoint>:443/;transportMode=http;httpPath=cliservice/token/<token>VPC ağ erişimi
jdbc:hive2://<endpoint>:80/;transportMode=http;httpPath=cliservice/token/<token>Burada
<endpoint>Kyuubi Ağ Geçidinin erişim uç noktasıdır ve<token>erişim belirtecidir. Bağlantıyı doğrulamak için Test Connection seçeneğini tıklayın. Succeeded mesajı görüntülenirse bağlantı testi başarılı olmuştur.
Yapılandırmayı kaydetmek için OK seçeneğini tıklayın.
Yüksek kullanılabilirliğe sahip bir Kyuubi Ağ Geçidini yapılandırma ve bağlanma
-
Bir ağ bağlantısı kurun.
Ağ bağlantısı kurmak için bkz. Establish network connectivity between EMR Serverless Spark and other VPCs. İstemcinizin hedef VPC'deki Zookeeper kümesine erişebildiğinden emin olun. Örneğin Alibaba Cloud MSE veya EMR on ECS üzerindeki Zookeeper bileşenini kullanabilirsiniz.
-
Kyuubi Ağ Geçidi için yüksek kullanılabilirliği etkinleştirin.
Bir Kyuubi Ağ Geçidi oluştururken veya düzenlerken Service High Availability seçeneğini etkinleştirin, ilgili parametreleri yapılandırın ve Network Connection için kurulan ağ bağlantısını seçin.
-
Yüksek kullanılabilirliğe sahip Kyuubi Ağ Geçidine bağlanın.
Önceki yapılandırmaları tamamladıktan sonra Kyuubi Ağ Geçidi Zookeeper kullanarak yüksek kullanılabilirlik sağlar. Kullanılabilirliği bir REST API veya JDBC bağlantısı kullanarak doğrulayabilirsiniz.
Kyuubi Ağ Geçidine bağlanırken JDBC URL'sindeki yer tutucuları gerçek bilgilerinizle değiştirin:
<endpoint>: Overview sekmesinden elde edebileceğiniz uç nokta.<port>: Bağlantı noktası numarası. Genel uç nokta erişimi için 443 bağlantı noktasını, aynı bölgedeki dahili uç nokta erişimi için 80 bağlantı noktasını kullanın.<token>: Token Management sekmesinden kopyaladığınız belirteç.<tokenname>: Belirteç adı. Adı Token Management sekmesinden elde edebilirsiniz.<UserName/RoleName>: Access Control bölümünde eklediğiniz RAM kullanıcısı veya RAM rolü.
Aşağıdaki örneklerde yüksek kullanılabilirliğe sahip bir Kyuubi Ağ Geçidine nasıl bağlanılacağı gösterilmektedir.
Beeline kullanarak bağlanma
JDBC Sürücü JAR dosyasını indirmek için kyuubi-hive-jdbc-1.9.2.jar bağlantısını tıklayın.
-
JDBC Sürücü JAR dosyasını değiştirin.
-
Orijinal JDBC Sürücü JAR dosyasını yedekleyin ve taşıyın.
mv /your_path/apache-kyuubi-1.9.2-bin/beeline-jars /bak_pathNotEMR on ECS kullanıyorsanız Kyuubi için varsayılan yol
/opt/apps/KYUUBI/kyuubi-1.9.2-1.0.0/beeline-jarsşeklindedir. Kyuubi yükleme yolundan emin değilsenizenv | grep KYUUBI_HOMEkomutunu çalıştırarak yolu bulabilirsiniz. -
Yeni JDBC Sürücü JAR dosyasıyla değiştirin.
cp /download/serverless-spark-kyuubi-hive-jdbc-1.9.2.jar /your_path/apache-kyuubi-1.9.2-bin/beeline-jars
-
-
Beeline kullanarak bağlanın.
/your_path/apache-kyuubi-1.9.2-bin/bin/beeline -u 'jdbc:hive2://<endpoint>:<port>/;transportMode=http;httpPath=cliservice/token/<token>'
Java kullanarak bağlanma
Gölge paketi indirmek için serverless-spark-kyuubi-hive-jdbc-shaded-1.9.2.jar bağlantısını tıklayın.
-
JDBC Sürücüsünü Maven deposuna yükleyin.
Serverless Spark tarafından sağlanan JDBC Sürücüsünü yerel Maven deponuza yüklemek için aşağıdaki komutu çalıştırın.
mvn install:install-file \ -Dfile=/download/serverless-spark-kyuubi-hive-jdbc-shaded-1.9.2.jar \ -DgroupId=org.apache.kyuubi \ -DartifactId=kyuubi-hive-jdbc-shaded \ -Dversion=1.9.2-ss \ -Dpackaging=jar -
pom.xmldosyasını değiştirin.Projenizin
pom.xmldosyasına aşağıdaki bağımlılıkları ekleyin.<dependencies> <dependency> <groupId>org.apache.hadoop</groupId> <artifactId>hadoop-common</artifactId> <version>3.0.0</version> </dependency> <dependency> <groupId>org.apache.kyuubi</groupId> <artifactId>kyuubi-hive-jdbc-shaded</artifactId> <version>1.9.2-ss</version> </dependency> </dependencies> -
Örnek Java kodunu yazın.
import org.apache.kyuubi.jdbc.hive.KyuubiStatement; import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.ResultSetMetaData; public class Main { public static void main(String[] args) throws Exception { String url = "jdbc:hive2://<endpoint>:<port>/;transportMode=http;httpPath=cliservice/token/<token>"; Class.forName("org.apache.kyuubi.jdbc.KyuubiHiveDriver"); Connection conn = DriverManager.getConnection(url); KyuubiStatement stmt = (KyuubiStatement) conn.createStatement(); String sql = "select * from test;"; ResultSet res = stmt.executeQuery(sql); ResultSetMetaData md = res.getMetaData(); String[] columns = new String[md.getColumnCount()]; for (int i = 0; i < columns.length; i++) { columns[i] = md.getColumnName(i + 1); } while (res.next()) { System.out.print("Row " + res.getRow() + "=["); for (int i = 0; i < columns.length; i++) { if (i != 0) { System.out.print(", "); } System.out.print(columns[i] + "='" + res.getObject(i + 1) + "'"); } System.out.println(")]"); } conn.close(); } }
Kyuubi tarafından gönderilen Spark görevlerinin listesini görüntüleme
Kyuubi üzerinden gönderilen Spark görevlerinin ayrıntılarını Job History sayfasının Kyuubi Application sekmesinde görüntüleyebilirsiniz. Ayrıntılar arasında ID, Name, Application Status ve Started At bilgileri yer alır. Bu bilgiler, Kyuubi tarafından gönderilen Spark görevlerini hızlı bir şekilde anlamanıza ve yönetmenize yardımcı olur.
Kyuubi Gateway sayfasında hedef Kyuubi Ağ Geçidinin adını tıklayın.
-
Sağ üst köşede Applications seçeneğini tıklayın.
Sayfada uygulama adı, uygulama durumu, başlangıç zamanı, süre, bitiş zamanı ve kaynak kuyruğu görüntülenir. İşlemler sütununda Stop, Details ve Spark UI bağlantıları bulunur.
Bu sayfada bu Kyuubi örneği üzerinden gönderilen tüm Spark görevlerinin ayrıntılarını görüntüleyebilirsiniz. ID (spark-xxxx) Spark altyapısı tarafından oluşturulur ve Kyuubi istemcisine bağlandığınızda görüntülenen Uygulama Kimliği ile aynıdır. Bir görev örneğini benzersiz şekilde tanımlar.
show tableskomutunu çalıştırdıktan sonra Kyuubi Beeline istemcisi tarafından çıktılanan Spark uygulama bilgileri aşağıdaki gibidir. Uygulama kimliği ilgili uygulama kimliğidir:Beeline version 1.9.2 by Apache Kyuubi 0: jdbc:hive2://emr-spark-kyuubi-gateway-cn-s> show tables; 2025-03-12 15:54:52.110 INFO KyuubiSessionManager-exec-pool: Thread-13802 org.apache.kyuubi.operation.ExecuteStatemen -> RUNNING_STATE, statement: show tables 2025-03-12 15:54:52 INFO [SparkSQLSessionManager-exec-pool: Thread-93] ExecuteStatement:64 - Processing anonymous's t: show tables 2025-03-12 15:54:52 INFO [SparkSQLSessionManager-exec-pool: Thread-93] ExecuteStatement:64 - Spark application name: kyuubi_USER_SPARK_SQL_anonymous_default_1750bae2-axxx application ID: spark-1c2d1a31xxx application web UI: http://21.13xxx master: k8s://https://kubernetes.default:6443 deploy mode: cluster version: 3.5.2-emr Start time: 2025-03-12T15:53:54.727 User: anonymous