如何在我的 cloudera 集群中找到哪个 KUDU DB 的 KUDU 主名称或端口?

Posted

技术标签:

【中文标题】如何在我的 cloudera 集群中找到哪个 KUDU DB 的 KUDU 主名称或端口?【英文标题】:How to find KUDU master name or port in which KUDU DB in my cloudera cluster? 【发布时间】:2018-09-13 21:19:36 【问题描述】:

我正在尝试将 Spark 数据帧写入 Kudu DB,但我不知道 Kudu 大师。我使用的集群是 Cloudera 集群。

如何在集群中找到 Kudu master?

【问题讨论】:

你看***.com/questions/45109355/…了吗? 【参考方案1】:

这是使用 Python 客户端 v3 (https://cloudera.github.io/cm_api/docs/python-client-swagger/) 的 Python 示例:

#!/usr/local/bin/python
import cm_client

# Configure HTTP basic authorization: basic
#configuration = cm_client.Configuration()
cm_client.configuration.username = 'admin'
cm_client.configuration.password = 'admin'

# Create an instance of the API class
api_client = cm_client.ApiClient("http://your-cdh-cluster-cm-host:7180/api/v30")

# create an instance of the ServicesResourceApi class
service_api_instance = cm_client.ServicesResourceApi(api_client)

# create an instance of the HostsResourceApi class
host_api_instance = cm_client.HostsResourceApi(api_client)

# find KUDU_MASTER roles in the CDH cluster
cluster_roles = service_api_instance.read_roles("Cluster 1", "KUDU-1")
for role in cluster_roles.items:
  if role.type == "KUDU_MASTER":
    role_host = host_api_instance.read_host(role.host_ref.host_id, view="full")
    print("Kudu master is located on %s\n" % role_host.hostname)

【讨论】:

【参考方案2】:

这是一个使用 Cloudera Manager Java 客户端 (https://cloudera.github.io/cm_api/docs/java-client-swagger/) 的非常基本的示例

package cloudera.kudu_example;

import java.io.IOException;

import com.cloudera.api.swagger.HostsResourceApi;
import com.cloudera.api.swagger.ServicesResourceApi;
import com.cloudera.api.swagger.client.ApiClient;
import com.cloudera.api.swagger.client.ApiException;
import com.cloudera.api.swagger.client.Configuration;
import com.cloudera.api.swagger.model.ApiHost;
import com.cloudera.api.swagger.model.ApiRole;
import com.cloudera.api.swagger.model.ApiRoleList;

public class App 
    public static void main( String[] args ) throws IOException 
        ApiClient cmClient = Configuration.getDefaultApiClient();

        cmClient.setBasePath(args[0]);
        cmClient.setUsername(args[1]);
        cmClient.setPassword(args[2]);

        cmClient.setVerifyingSsl(false);
        HostsResourceApi hostsApiInstance = new HostsResourceApi();
        ServicesResourceApi servicesApiInstance = new ServicesResourceApi();
        try 
            ApiRoleList apiRoles = servicesApiInstance.readRoles("Cluster 1", "KUDU-1");
            for(ApiRole role : apiRoles.getItems()) 
                if(role.getType().equalsIgnoreCase("KUDU_MASTER")) 
                    ApiHost host = hostsApiInstance.readHost(role.getHostRef().getHostId(), "full");
                    System.out.printf("Kudu master runs at %s. IP: %s, status %s", host.getHostname(), host.getIpAddress(), host.getEntityStatus());
                
            

         catch (ApiException e) 
          System.err.println("Exception when calling ClustersResourceApi#readClusters");
          e.printStackTrace();
        
    

【讨论】:

【参考方案3】:

我知道这不是最好的方法,但它是一种快速的方法。让我们假设我们已经有了一个 kudu 表(即使您没有通过 impala 创建测试/临时表),只需对该表进行格式化描述。您将获得大量详细信息,包括 kudu master 详细信息(主机名),其中端口为 8051。我相信一旦您了解主机和端口详细信息,您就可以探索很多 为您的火花数据框。

临时表语法:

创建表 kudu_no_partition_by_clause ( id bigint 主键,s 字符串,b 布尔值 ) 存储为 KUDU;

描述的语法:描述格式化的表名;

财政年度:

Kudu 网站管理详情:https://kudu.apache.org/releases/0.6.0/docs/administration.html

Kudu 与 spark 示例: https://kudu.apache.org/docs/developing.html

干杯!!

【讨论】:

以上是关于如何在我的 cloudera 集群中找到哪个 KUDU DB 的 KUDU 主名称或端口?的主要内容,如果未能解决你的问题,请参考以下文章

Cloudera 安装有疑问吗?

如何在 Cloudera 上挂载 HDFS?

如何将cloudera apache哨句与open ldap集成

Cloudera Spark2 安装

如何重启Cloudera Manager

Cloudera安装未能检测到CentOS上的root特权我试图将新主机添加到CentOS集群中。安装失败,状态为“安装失败。无法检测root特权”。我知道Cloudera需要用户具有无密码特权(“需