更新时间:2024-06-11 GMT+08:00
分享

Hive对接CSS服务

操作场景

利用Elasticsearch-Hadoop插件,完成Hive和CSS服务的Elasticsearch直接的数据交互,通过Hive外部表的方式,可以快速将Elasticsearch索引数据映射到Hive表中。

该章节适用于MRS 3.x及之后版本。

前提条件

已安装MRS的Hive服务和CSS的Elasticsearch服务,并且两个集群之间网络互通。

操作步骤

  1. 在云搜索服务的“集群管理”页面上,单击集群“操作”列的“Kibana”访问集群,在Kibana的左侧导航中选择“Dev Tools”,进入Console界面,输入以下命令创建索引“ddj_study_card_ratio_v12”:

    PUT ddj_study_card_ratio_v12
    {  
    	"mappings" : {
          "properties" : {
            "uniq_id" : {
              "type" : "text",
              "fields" : {
                "keyword" : {
                  "type" : "keyword",
                  "ignore_above" : 256
                }
              }
            }
          }
        }
      }

    返回如下结果表示索引创建成功:

    {
      "acknowledged" : true,
      "shards_acknowledged" : true,
      "index" : "ddj_study_card_ratio_v12"
    }

  2. 执行以下命令向“ddj_study_card_ratio_v12”索引中插入数据:

    POST /ddj_study_card_ratio_v12/_doc/_bulk
    {"index":{}}
    {"id":"1", "uniq_id":"23323"}

    当返回结果信息中“errors”字段的值为“false”时,表示导入数据成功。

  3. 根据当前CSS服务中的Elasticsearch版本在Past Releases下载对应的Jar包。

    例如:Elasticsearch 7.6.2对应的Jar包为“elasticsearch-hadoop-7.6.2.jar”。

    • Jar包版本需与CSS服务的Elasticsearch版本保持一致,本章节以开启安全模式的“Elasticsearch 7.6.2”集群为例进行相关操作,具体请以实际情况为准。
    • 若有额外的自定义模块,也单独打包成一份Jar包。

  4. 3的Jar包分别上传到所有的HiveServer所在节点的“/opt/Bigdata/third_lib/Hive”目录下,并执行以下命令修改权限。

    chown omm:wheel -R /opt/Bigdata/third_lib/Hive

  5. 登录FusionInsight Manager,选择“集群 > 服务 > Hive > 实例”,勾选所有的HiveServer实例,选择“更多 > 重启实例”,重启HiveServer实例。
  6. Maven中心仓下载“commons-httpclient-3.1.jar”,并将该Jar包及3的Jar上传至集群中安装了HDFS和Hive客户端的任一的节点上。
  7. 以客户端安装用户,登录6上传了Jar包的节点。
  8. 执行以下命令认证用户。

    cd 客户端安装目录

    source bigdata_env

    kinit 组件业务用户(未开启Kerberos认证的集群跳过此操作)

  9. 执行以下命令在HDFS上创建Jar包存放目录。

    hdfs dfs -mkdir Jar包存放在hdfs中的路径

  10. 执行以下命令将6的Jar上传至HDFS中。

    hdfs dfs -put Jar包存放路径 Jar包存放在hdfs中的路径

  11. 执行以下命令让Hive在执行命令行任务时加载指定Jar包。

    beeline

    add jar Jar包存放在hdfs中的路径;(每个Jar包分别执行一次该命令)

  12. 执行以下命令创建Elasticsearch外部表。

    CREATE EXTERNAL TABLE `ddj_study_card_ratio_v12_test`(                              
       `uniq_id` string)                                                                         
     ROW FORMAT SERDE                                                                       
       'org.elasticsearch.hadoop.hive.EsSerDe'                                              
     STORED BY                                                                              
       'org.elasticsearch.hadoop.hive.EsStorageHandler'                                     
     WITH SERDEPROPERTIES (                                                                 
       'field.delim'='',                                                                   
       'serialization.format'='')                                                               
     TBLPROPERTIES (                                                                        
       'bucketing_version'='2',                                                             
       'es.index.auto.create'='false',                                                      
       'es.mapping.date.rich'='false',                                                      
       'es.net.http.auth.pass'='Pzh6537projectx',                                           
       'es.net.http.auth.user'='elastic',                                                   
       'es.nodes'='vpcep-e0b33065-75b7-4193-8395-dbd00d10bc39.cn-east-3.huaweicloud.com',   
       'es.nodes.wan.only'='true',                                                          
       'es.port'='9200',                                                                                 
       'es.read.metadata'='true',                                                           
       'es.resource'='ddj_study_card_ratio_v12',                                            
       'es.set.netty.runtime.available.processors'='false',                                 
       'es.write.operation'='index',                                                        
       'last_modified_by'='root',                                                           
       'last_modified_time'='1655264909',                                                   
       'transient_lastDdlTime'='1655264909');

    关键参数说明:

    • es.net.http.auth.pass、es.net.http.auth.user:在Kibana中创建的具有1创建的索引的操作权限的用户密码及用户名,详细内容请参见使用Kibana创建用户并授权
    • es.nodes:需要连接的IP,可登录CSS管理控制台,在集群列表的“内网访问地址”列即可查看对应集群的IP地址。
    • es.port:外部访问Elasticsearch集群端口,默认为9200。
    • es.resource:1创建的索引名称。

    更多参数配置可参考开源社区文档https://www.elastic.co/guide/en/elasticsearch/hadoop/6.1/hive.html

  13. 执行以下命令查看12创建的Elasticsearch外部表:

    select * from ddj_study_card_ratio_v12_test;

    当返回结果信息中无报错信息,并且查询成功时,表示Hive成功对接CSS服务。查询结果如下所示:

相关文档