使用es-hadoop同步hive和es之间数据

news/2024/9/25 17:18:47/

💻近期在华为云连接es时的时候发现不能输入账号密码,后面联系华为工程师了解到,华为云默认是非安全模式,即不需要输入账号密码。

如果对你有所帮助,欢迎点赞收藏关注不迷路哦💓

目录

hive%E4%B8%AD%E5%88%9B%E5%BB%BAES%E5%A4%96%E9%83%A8%E8%A1%A8-toc" style="margin-left:40px;">使用es-hadoop同步hive和es之间数据

hadoop%E7%94%A8%E6%88%B7-toc" style="margin-left:80px;">1. 登录EMR的master节点,切换至hadoop用户

2.在MRS客户端创建HDFS目录,将ES-Hadoop lib包和httpclient依赖包上传到该目录下

3.从MRS客户端登录到Hive客户端

hive%E5%A4%96%E8%A1%A8%EF%BC%8C%E4%B8%8Ees%E7%B4%A2%E5%BC%95%E8%BF%9B%E8%A1%8C%E6%98%A0%E5%B0%84%EF%BC%88%E7%BB%93%E5%90%88%E5%AE%9E%E9%99%85%E8%A1%A8%EF%BC%89-toc" style="margin-left:80px;">4.在Hive客户端,创建hive外表,与es索引进行映射(结合实际表)

4.1安全模式+HTTP协议的集群

4.2安全模式+HTTPS协议的集群

4.2.1获取安全证书“CloudSearchService.cer”

4.2.2转换安全证书(CloudSearchService.cer)

4.2.3将“.jks”文件分发到MRS集群的每个节点的相同路径

4.2.4创建Hive外表

5. 查询ES外部表测试

hive%E7%9A%84%E5%86%85%E9%83%A8%E8%A1%A8%E6%88%96%E5%86%99%E5%85%A5ES%E5%A4%96%E9%83%A8%E8%A1%A8-toc" style="margin-left:80px;">6.将ES索引中的数据导入到hive的内部表或写入ES外部表


解决方案,如下:

前言

ES-Hadoop 是 Elastic 官方推出的一个用于对接 Hadoop 生态的工具,使得用户可以使用 Mapreduce(MR)、Spark、Hive 等工具处理 ES 上的数据。众所周知,Hadoop 生态的长处是处理大规模数据集,但是其缺点也很明显,就是当用于交互式分析时,查询时延会比较长。而 ES 在这几个方面的能力很强,对于如 ad-hoc 查询,基本可以做到秒级。ES-Hadoop 的推出提供了一种组合两者优势的可能性。使用 ES-Hadoop,用户只需要对自己代码做出很小的改动,即可以快速处理存储在 ES 中的数据,并且能够享受到 ES 带来的加速效果。

以下给出hive相关操作

hive%E4%B8%AD%E5%88%9B%E5%BB%BAES%E5%A4%96%E9%83%A8%E8%A1%A8">使用es-hadoop同步hive和es之间数据

相关下载链接: ES-hadoop:(https://www.elastic.co/cn/downloads/past-releases#es-hadoop)选择需要的版本

httpclient3.1:(https://mvnrepository.com/artifact/commons-httpclient/commons-httpclient/3.1)

hadoop%E7%94%A8%E6%88%B7">1. 登录EMR的master节点,切换至hadoop用户

su - hadoop

2.在MRS客户端创建HDFS目录,将ES-Hadoop lib包和httpclient依赖包上传到该目录下

注:暂定7.10.2版

hadoop fs -mkdir /tmp/hadoop-es
hadoop fs -put elasticsearch-hadoop-7.10.2.jar /tmp/hadoop-es
hadoop fs -put commons-httpclient-3.1.jar /tmp/hadoop-es

3.从MRS客户端登录到Hive客户端

在Hive客户端,添加ES-Hadoop lib包和httpclient依赖包。该命令只对当前会话有效。

输入beelinehive进入到执行界面,执行如下命令:

add jar hdfs:///tmp/hadoop-es/commons-httpclient-3.1.jar;
add jar hdfs:///tmp/hadoop-es/elasticsearch-hadoop-7.10.2.jar;

hive%E5%A4%96%E8%A1%A8%EF%BC%8C%E4%B8%8Ees%E7%B4%A2%E5%BC%95%E8%BF%9B%E8%A1%8C%E6%98%A0%E5%B0%84%EF%BC%88%E7%BB%93%E5%90%88%E5%AE%9E%E9%99%85%E8%A1%A8%EF%BC%89">4.在Hive客户端,创建hive外表,与es索引进行映射(结合实际表)

4.1安全模式+HTTP协议的集群
CREATE EXTERNAL table IF NOT EXISTS student( id BIGINT,name STRING,addr STRING 
)STORED BY 'org.elasticsearch.hadoop.hive.EsStorageHandler' 
TBLPROPERTIES(  'es.nodes' = '172.XX.XX.XX:9200,172.XX.XX.XX:9200,172.XX.XX.XX:9200',--ES地址'es.port' = '9200','es.net.ssl' = 'false', --指定不使用SSL连接到Elasticsearch。'es.nodes.wan.only' = 'false', --指定是否只使用广域网节点'es.nodes.discovery'='false', --禁用节点发现,即不自动发现其他节点'es.input.use.sliced.partitions'='false', --指定在读取数据时不使用分片分区'es.nodes.client.only'='true',--指定节点仅作为客户端使用。'es.resource' = 'student/_doc', --指定映射到Elasticsearch中的索引名称为student,文档类型为_doc。'es.net.http.auth.user' = 'NAME', --ES用户名'es.net.http.auth.pass' = 'PASSWORD' --ES密码
);
4.2安全模式+HTTPS协议的集群
4.2.1获取安全证书“CloudSearchService.cer”
  1. 登录云搜索服务控制台。

  2. 选择“集群管理”进入集群列表。

  3. 单击对应集群的名称,进入集群基本信息页面。

  4. 在“基本信息”页面,单击“HTTPS访问”后面的“下载证书”。

4.2.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是由用户自定义的证书名称。

该命令执行后,会提示设置证书密码,并确认密码。请保存该密码,后续接入集群会使用。

4.2.3将“.jks”文件分发到MRS集群的每个节点的相同路径

如“/tmp”,可以使用scp命令进行文件传输。同时,要确保omm用户有权限读取该文件,设置权限可以参考如下命令:

chown -R omm truststore.jks
4.2.4创建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://172.XX.XX.XX:9200,https://172.XX.XX.XX:9200,https://172.XX.XX.XX:9200',--ES地址'es.port' = '9200','es.net.ssl' = 'true', -- 使用SSL连接'es.net.ssl.truststore.location' = 'cerFilePath',- SSL信任存储文件路径'es.net.ssl.truststore.pass' = 'cerPassword',-- SSL信任存储密码'es.nodes.wan.only' = 'false',  -- 不只使用广域网节点'es.nodes.discovery'='false', -- 禁用节点发现'es.nodes.client.only'='true', -- 节点仅作为客户端使用'es.input.use.sliced.partitions'='false', -- 不使用分片分区读取'es.resource' = 'student/_doc',-- 映射到Elasticsearch的索引和文档类型'es.net.http.auth.user' = 'NAME', -- 映射到Elasticsearch的索引和文档类型'es.net.http.auth.pass' = 'PASSWORD'-- 连接到Elasticsearch的密码
);

5. 查询ES外部表测试

在Hive客户端,插入数据。

INSERT INTO TABLE student VALUES (1, "Lucy", "address1"), (2, "Lily", "address2");

查询

select * from student;

hive%E7%9A%84%E5%86%85%E9%83%A8%E8%A1%A8%E6%88%96%E5%86%99%E5%85%A5ES%E5%A4%96%E9%83%A8%E8%A1%A8">6.将ES索引中的数据导入到hive的内部表或写入ES外部表

-- 检查并删除已存在的同名内部表,如果需要的话
DROP TABLE IF EXISTS student_hive;-- 创建一个与外部表结构相同的Hive内部表
CREATE TABLE student_hive
LIKE student;-- 插入数据从外部表student到内部表student_hive
INSERT INTO TABLE student_hive
SELECT * FROM student;

赞👍


http://www.ppmy.cn/news/1506332.html

相关文章

算法力扣刷题记录 七十【70. 爬楼梯及算法性能分析:时间复杂度和空间复杂度】

前言 动态规划章节第二篇。记录 七十【70. 爬楼梯】 一、题目阅读 假设你正在爬楼梯。需要 n 阶你才能到达楼顶。 每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢? 示例 1: 输入:n 2 输出:2 解释&#xf…

python机器人编程——开发一个pymatlab工具箱(上)

目录 一、前言二、实现过程2.1 封装属性2.2 数据流化显示2.3 输入数据的适应性 三、核心代码说明3.1 设置缓存3.2 随机信号3.3 根据设置绘图 五、总结四、源码PS.扩展阅读ps1.六自由度机器人相关文章资源ps2.四轴机器相关文章资源ps3.移动小车相关文章资源 一、前言 我们知道m…

rm命令学习

删除文件 rm rm命令(remove的简写)用来删除文件。这条命令会彻底地删除文件,文件将不复存在。Linux命令行可没有“垃圾箱”或“回收站”之类的东西。shell缺少一个恢复删除文件的命令,最好一开始就小心些。 如果你想确保绝对没有…

低代码开发:机遇与挑战

目录 一、什么是低代码开发? 二、低代码开发的机遇 1. 加速开发周期 2. 降低开发门槛 3. 提高生产效率 三、低代码开发的挑战 1. 定制化限制 2. 技术债务累积 3. 安全性问题 四、低代码开发如何改变开发者的工作方式? 1. 专注业务逻辑 2. 团队…

Gdao v1.1.0:Go语言高效ORM框架全面解析

简介:gdao是一种创新的持久层解决方案。主要目的在于 减少编程量,提高生产力,提高性能,支持多数据源整合操作,支持数据读写分离,制定持久层编程规范。 灵活运用gdao,可以在持久层设计上,减少30%…

Linux: security: openssh: v9.8 的一个小改动

这个改动,相对于之前的版本,产生的变化是per-session相关的进程名称,由sshd变成了sshd-session。如果有应用依赖于这个进程名称,就需要注意了。 https://www.openssh.com/releasenotes.html#9.8p1 * sshd(8): the server has been split into a listener binary, sshd(8),a…

Java高级Day23-HashMap

74.HashMap Map接口常用实现类:HashMap、Hashtable和Properties HashMap是Map接口使用频率最高的实现类 HashMap是以key-value对的方式来存储数据 key不能重复,但是值可以重复,允许使用null健和null值 如果添加相同的key,会覆…

交换机常用的贴片网络变压器,滤波器H5084NL / H82409S

华强盛电子导读千兆交换机: 199/2643/0038 在交换机行业中,常用的贴片网络变压器和滤波器型号会根据具体的应用需求、性能指标、成本考量等因素而有所不同。通常,这些器件需要满足网络通信中的高频传输、阻抗匹配、信号隔离、电磁兼容&…