文档首页/ MapReduce服务 MRS/ 最佳实践/ 周边云服务对接/ MRS Hive对接CSS服务配置说明
更新时间:2024-12-17 GMT+08:00

MRS Hive对接CSS服务配置说明

应用场景

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

Elasticsearch-Hadoop (ES-Hadoop) 连接器将Hadoop海量的数据存储和深度加工能力与Elasticsearch实时搜索和分析功能结合在一起。

它能够让您快速深入了解大数据,并让您在Hadoop生态系统中更好地开展工作。

方案架构

Hive是建立在Hadoop上的数据仓库框架,提供大数据平台批处理计算能力,能够对结构化/半结构化数据进行批量分析汇总完成数据计算。提供类似SQL的Hive Query Language语言操作结构化数据,其基本原理是将HQL语言自动转换成MapReduce任务,从而完成对Hadoop集群中存储的海量数据进行查询和分析。

图1 Hive结构

云搜索服务(Cloud Search Service,简称CSS)是一个基于Elasticsearch、OpenSearch且完全托管的在线分布式搜索服务,为用户提供结构化、非结构化文本、以及基于AI向量的多条件检索、统计、报表。云搜索服务是华为云ELK生态的一系列软件集合,为您全方位提供托管的ELK生态云服务,兼容Elasticsearch、Logstash、Kibana、Cerebro等软件。

约束与限制

  • 已安装MRS的Hive服务和CSS的Elasticsearch服务,并且两个集群之间网络互通。
  • 适用于MRS 3.x及之后版本。

步骤一:配置云搜索服务索引并下载jar包

  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包。

步骤二:在MRS设置对接云搜索服务

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

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

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

    cd 客户端安装目录

    source bigdata_env

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

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

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

  7. 执行以下命令将在Maven中心仓下载的Jar包和在Past Releases下载的Jar包上传至HDFS中。

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

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

    beeline

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

  9. 执行以下命令创建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

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

    select * from ddj_study_card_ratio_v12_test;

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