- 最新动态
- 功能总览
- 服务公告
- 产品介绍
- 计费说明
- 快速入门
-
用户指南
- CSS服务权限管理
-
使用Elasticsearch搜索数据
- Elasticsearch使用流程
- Elasticsearch集群规划建议
- 创建Elasticsearch集群
- 访问Elasticsearch集群
- 导入数据至Elasticsearch集群
- 使用Elasticsearch集群搜索数据
- 增强Elasticsearch集群搜索能力
- 配置Elasticsearch集群网络
- 备份与恢复Elasticsearch集群数据
- 扩缩容Elasticsearch集群
- 升级Elasticsearch集群版本
- 管理Elasticsearch集群
- 管理Elasticsearch集群索引策略
- Elasticsearch集群监控与日志管理
- 查看Elasticsearch集群审计日志
- 使用OpenSearch搜索数据
- 使用Logstash迁移数据
- CSS服务资源监控
- 最佳实践
- API参考
- SDK参考
- 场景代码示例
-
常见问题
- 产品咨询
- 计费相关
- CSS集群访问
- CSS集群迁移
-
CSS集群搜索引擎使用
- CSS服务中为什么新创建的索引分片集中分配到单节点上?
- CSS服务中Elasticsearch 7.x集群如何在index下创建type?
- CSS服务中如何配置Elasticsearch索引副本数量?
- CSS服务中Elasticsearch集群分片过多会有哪些影响?
- 如何查看CSS集群的分片数以及副本数?
- CSS服务中Elasticsearch集群的节点node.roles为i表示什么意思?
- CSS服务中如何设置Elasticsearch集群的默认分页返回最大条数?
- CSS服务中如何更新Elasticsearch生命周期策略?
- CSS服务中如何设置Elasticsearch集群慢查询日志的阈值?
- CSS服务中如何清理Elasticsearch索引数据?
- CSS服务中如何清理Elasticsearch缓存?
- 使用delete_by_query命令删除Elasticsearch集群数据后,为什么磁盘使用率反而增加?
- CSS服务的Elasticsearch集群是否支持script dotProduct?
-
CSS集群管理
- 如何查看CSS集群所分布的可用区?
- CSS服务中Filebeat版本与集群版本的关系是什么?
- 如何获取CSS服务的安全证书?
- CSS服务中如何转换CER安全证书的格式?
- CSS服务中Elasticsearch和OpenSearch集群支持修改安全组吗?
- CSS服务中Elasticsearch集群如何设置search.max_buckets参数?
- CSS服务中如何修改Elasticsearch和OpenSearch集群的TLS算法?
- CSS服务中如何开启Elasticsearch和OpenSearch集群的安全审计日志?
- CSS服务中是否支持停止集群?
- CSS集群冻结索引后如何查询OBS上的索引占用量?
- 如何查看Elasticsearch和OpenSearch集群的系统默认插件列表
- CSS集群备份与恢复
- CSS集群监控与运维
-
故障排除
-
访问集群类
- 无法正常打开Kibana
- Elasticsearch针对filebeat配置调优
- Spring Boot使用Elasticsearch出现Connection reset by peer问题
- 为什么集群创建失败
- Elasticsearch集群出现写入拒绝“Bulk Reject”,如何解决?
- Elasticsearch集群创建index pattern卡住,如何解决?
- 云搜索控制台页面提示系统繁忙
- Elasticsearch集群报错:unassigned shards all indices
- es-head插件连接Elasticsearch集群报跨域错误
- 单节点集群打开Cerebro界面显示告警
- ECS无法连接到集群
- 集群不可用
- 数据导入导出类
-
功能使用类
- 无法备份索引
- 无法使用自定义词库功能
- 快照仓库找不到
- 集群一直处于快照中
- 数据量很大,如何进行快照备份?
- 集群突现load高的故障排查
- 使用ElasticSearch的HLRC(High Level Rest Client)时,报出I/O Reactor STOPPED
- Elasticsearch集群最大堆内存持续过高(超过90%)
- Elasticsearch集群更改规格失败
- 安全集群索引只读状态修改报错
- Elasticsearch集群某一节点分配不到shard
- 集群索引插入数据失败
- CSS创建索引报错“maximum shards open”
- 删除索引报错“403 Forbidden”是什么原因?
- Kibana中删除index pattern报错Forbidden
- 执行命令update-by-query报错“Trying to create too many scroll contexts”
- Elasticsearch集群无法创建pattern
- 端口访问类
-
访问集群类
- 视频帮助
- 文档下载
- 通用参考
链接复制成功!
通过MRS Hive客户端接入Elasticsearch集群
Elasticsearch-Hadoop (ES-Hadoop) 连接器将Hadoop海量的数据存储和深度加工能力与Elasticsearch实时搜索和分析功能结合在一起。它能够让您快速深入了解大数据,并让您在Hadoop生态系统中更好地开展工作。
本文通过MRS的ES-Hadoop与CSS集群连接作为示例,您可以配置其他任何需要使用ES集群的应用。如有需要,也可以参考本文在其他服务中使用Elasticsearch,前提是要保证客户端与Elasticsearch集群网络连通。
准备工作
- CSS集群处于可用状态。
- 确保客户端与CSS集群的网络是互通的。
- 确保CSS集群和MRS集群在同一个区域、可用区、虚拟私有云和子网。
图1 CSS集群的区域等信息
接入集群
- 获取集群的内网访问地址。访问集群时,需要输入内网访问地址。
本文以内网IP地址方式访问集群为例,当使用其他网络配置访问集群时,仅访问地址有差异,不同访问地址的获取方式请参见网络配置。
- 在云搜索服务管理控制台,单击左侧导航栏的“集群管理”。
- 在集群管理列表页面,选择需要访问的集群,在“内网访问地址”列获取并记录集群的内网IP地址<host>,一般是“<host>:<port>”或“<host>:<port>,<host>:<port>”样式。
当集群只有一个节点时,此处仅显示1个节点的IP地址和端口号,例如“10.62.179.32:9200”;当集群有多个节点时,此处显示所有节点的IP地址和端口号,例如“10.62.179.32:9200,10.62.179.33:9200”。
- 登录MRS集群节点,操作步骤请参见登录集群节点。
- 在MRS集群节点上通过curl命令检查网络连通性,需要确保MRS集群的每个节点都能连通CSS集群。
- 非安全模式的集群
curl -X GET http://<host>:<port>
- 安全模式+HTTP协议的集群
curl -X GET http://<host>:<port> -u <user>:<password>
- 安全模式+HTTPS协议的集群
curl -X GET https://<host>:<port> -u <user>:<password> -ik
表1 变量说明 变量名
说明
<host>
集群中各节点的IP地址,当集群包含多个节点时,会存在多个IP地址,可以任选其中一个发送。
<port>
集群节点的访问端口号,一般为9200。
<user>
访问集群的用户名。
<password>
用户名对应的密码。
当密码中存在特殊字符时,请将用户名和密码加上单引号进行强引用,例如“curl -u 'user':'password!' "http://<host>:<port>"”。
- 非安全模式的集群
- 下载ES-Hadoop的lib包,并解压zip包获取“elasticsearch-hadoop-x.x.x.jar”文件。版本需要与CSS集群版本一致,例如CSS集群是7.6.2版本,则建议下载elasticsearch-hadoop-7.6.2.zip。
- 下载httpclient依赖包commons-httpclient:commons-httpclient-3.1.jar,其中3.1为版本号,建议用户根据实际需要选择。
- 安装MRS客户端,如果已经安装可以跳过该步骤,未安装的请参见安装客户端(3.x及之后版本)。
- 登录MRS客户端,将下载的ES-Hadoop和httpclient的jar依赖包上传到MRS客户端。
- 在MRS客户端创建HDFS目录,将ES-Hadoop lib包和httpclient依赖包上传到该目录下。
hadoop fs -mkdir /tmp/hadoop-es hadoop fs -put elasticsearch-hadoop-x.x.x.jar /tmp/hadoop-es hadoop fs -put commons-httpclient-3.1.jar /tmp/hadoop-es
- 从MRS客户端登录到Hive客户端,具体操作请参见Hive客户端使用实践。
- 在Hive客户端,添加ES-Hadoop lib包和httpclient依赖包。该命令只对当前会话有效。
add jar hdfs:///tmp/hadoop-es/commons-httpclient-3.1.jar; add jar hdfs:///tmp/hadoop-es/elasticsearch-hadoop-x.x.x.jar;
- 在Hive客户端,创建Hive外表。
- 非安全模式的集群
CREATE EXTERNAL table IF NOT EXISTS student( id BIGINT, name STRING, addr STRING ) STORED BY 'org.elasticsearch.hadoop.hive.EsStorageHandler' TBLPROPERTIES( 'es.nodes' = 'xxx.xxx.xxx.xxx:9200', 'es.port' = '9200', 'es.net.ssl' = 'false', 'es.nodes.wan.only' = 'false', 'es.nodes.discovery'='false', 'es.input.use.sliced.partitions'='false', 'es.resource' = 'student/_doc' );
- 安全模式+HTTP协议的集群
CREATE EXTERNAL table IF NOT EXISTS student( id BIGINT, name STRING, addr STRING ) STORED BY 'org.elasticsearch.hadoop.hive.EsStorageHandler' TBLPROPERTIES( 'es.nodes' = 'xxx.xxx.xxx.xxx:9200', 'es.port' = '9200', 'es.net.ssl' = 'false', 'es.nodes.wan.only' = 'false', 'es.nodes.discovery'='false', 'es.input.use.sliced.partitions'='false', 'es.nodes.client.only'='true', 'es.resource' = 'student/_doc', 'es.net.http.auth.user' = 'username', 'es.net.http.auth.pass' = 'password' );
- 安全模式+HTTPS协议的集群
- 获取安全证书(CloudSearchService.cer)。
- 登录云搜索服务控制台。
- 选择“集群管理”进入集群列表。
- 单击对应集群的名称,进入集群基本信息页面。
- 在“基本信息”页面,单击“HTTPS访问”后面的“下载证书”。
图2 下载证书
- 转换安全证书(CloudSearchService.cer)。将下载的安全证书上传到客户端机器上,使用keytool工具将“.cer”证书转换成Java可以读取的“.jks”证书格式。
- 在Linux系统中,执行如下命令转换证书。
keytool -import -alias newname -keystore ./truststore.jks -file ./CloudSearchService.cer
- 在Windows系统中,执行如下命令转换证书。
keytool -import -alias newname -keystore .\truststore.jks -file .\CloudSearchService.cer
其中,newname是由用户自定义的证书名称。
该命令执行后,会提示设置证书密码,并确认密码。请保存该密码,后续接入集群会使用。
- 在Linux系统中,执行如下命令转换证书。
- 将“.jks”文件分发到MRS集群的每个节点的相同路径,如“/tmp”,可以使用scp命令进行文件传输。同时,要确保omm用户有权限读取该文件,设置权限可以参考如下命令:
chown -R omm truststore.jks
- 创建Hive外表。
CREATE EXTERNAL table IF NOT EXISTS student( id BIGINT, name STRING, addr STRING ) STORED BY 'org.elasticsearch.hadoop.hive.EsStorageHandler' TBLPROPERTIES( 'es.nodes' = 'https://xxx.xxx.xxx.xxx:9200', 'es.port' = '9200', 'es.net.ssl' = 'true', 'es.net.ssl.truststore.location' = 'cerFilePath', 'es.net.ssl.truststore.pass' = 'cerPassword', 'es.nodes.wan.only' = 'false', 'es.nodes.discovery'='false', 'es.nodes.client.only'='true', 'es.input.use.sliced.partitions'='false', 'es.resource' = 'student/_doc', 'es.net.http.auth.user' = 'username', 'es.net.http.auth.pass' = 'password' );
- 获取安全证书(CloudSearchService.cer)。
表2 ES-Hadoop参数说明 参数
默认值
描述
es.nodes
localhost
CSS集群的访问地址,可在集群列表页面查看“内网访问地址”。
es.port
9200
集群的访问端口号,一般为“9200”。
es.nodes.wan.only
false
是否进行节点嗅探。
es.nodes.discovery
true
是否禁用节点发现。
es.input.use.sliced.partitions
true
是否使用slice分区:
- true:使用。
- false:不使用。
说明:
设置为true,可能会导致索引在预读阶段的时间明显变长,有时会远远超出查询数据所耗费的时间。建议设置为false,以提高查询效率。
es.resource
NA
指定要读写的Index和type。
es.net.http.auth.user
NA
访问集群的用户名,只有启用了安全模式才需要配置此值。
es.net.http.auth.pass
NA
用户名所对应的密码,只有启用了安全模式才需要配置此值。
es.net.ssl
false
是否启用SSL,启用后需要配置安全证书信息。
es.net.ssl.truststore.location
NA
“.jks”证书文件的路径,如“file:///tmp/truststore.jks”。
es.nodes.client.only
false
是否配置了独立的Client节点的IP地址给es.nodes(即创建Elasticsearch集群时是否“启用Client节点”)。如果是,则需要将该值改为“true”,否则会报错找不到data节点。
es.net.ssl.truststore.pass
NA
“.jks”证书文件的密码。
更多ES-Hadoop配置项说明请参见官方配置说明。
- 非安全模式的集群
- 在Hive客户端,插入数据。
INSERT INTO TABLE student VALUES (1, "Lucy", "address1"), (2, "Lily", "address2");
- 在Hive客户端,执行查询。
select * from student;
查询结果如下:
+-------------+---------------+---------------+ | student.id | student.name | student.addr | +-------------+---------------+---------------+ | 1 | Lucy | address1 | | 2 | Lily | address2 | +-------------+---------------+---------------+ 2 rows selected (0.116 seconds)
- 登录CSS控制台,在“集群管理”页面,单击集群操作列“Kibana”,登录Kibana界面。
- 进入Kibana的“Dev Tools”页面执行查询命令,查看查询结果。
GET /student/_search
图3 kibana查询结果