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集群中存储的海量数据进行查询和分析。
云搜索服务(Cloud Search Service,简称CSS)是一个基于Elasticsearch、OpenSearch且完全托管的在线分布式搜索服务,为用户提供结构化、非结构化文本、以及基于AI向量的多条件检索、统计、报表。云搜索服务是华为云ELK生态的一系列软件集合,为您全方位提供托管的ELK生态云服务,兼容Elasticsearch、Logstash、Kibana、Cerebro等软件。
约束与限制
- 已安装MRS的Hive服务和CSS的Elasticsearch服务,并且两个集群之间网络互通。
- 适用于MRS 3.x及之后版本。
步骤一:配置云搜索服务索引并下载jar包
- 在云搜索服务的“集群管理”页面上,单击集群“操作”列的“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" }
- 执行以下命令向“ddj_study_card_ratio_v12”索引中插入数据:
POST /ddj_study_card_ratio_v12/_doc/_bulk {"index":{}} {"id":"1", "uniq_id":"23323"}
当返回结果信息中“errors”字段的值为“false”时,表示导入数据成功。
- 根据当前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设置对接云搜索服务
- 将在Past Releases下载的对应的Jar包分别上传到所有的HiveServer所在节点的“/opt/Bigdata/third_lib/Hive”目录下,并执行以下命令修改权限。
- 登录FusionInsight Manager,选择“集群 > 服务 > Hive > 实例”,勾选所有的HiveServer实例,选择“更多 > 重启实例”,重启HiveServer实例。
- 在Maven中心仓下载“commons-httpclient-3.1.jar”,并将该Jar包及在Past Releases下载的Jar包上传至集群中安装了HDFS和Hive客户端的任一的节点上。
- 以客户端安装用户,登录上一步上传了Jar包的节点。
- 执行以下命令认证用户。
source bigdata_env
kinit 组件业务用户(未开启Kerberos认证的集群跳过此操作)
- 执行以下命令在HDFS上创建Jar包存放目录。
- 执行以下命令将在Maven中心仓下载的Jar包和在Past Releases下载的Jar包上传至HDFS中。
- 执行以下命令让Hive在执行命令行任务时加载指定Jar包。
add jar Jar包存放在hdfs中的路径;(每个Jar包分别执行一次该命令)
- 执行以下命令创建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。
- 执行以下命令查看创建的Elasticsearch外部表:
select * from ddj_study_card_ratio_v12_test;
当返回结果信息中无报错信息,并且查询成功时,表示Hive成功对接CSS服务。查询结果如下所示: