是两款非常火热的大数据分析产品,长期以来一直是分别在客户场景下使用的,不过随着云上CHDFS产品的上线,以及ES-Hadoop等插件的完善,两者结合使用有了比较成熟的方案,下面就介绍一下相关使用的方式: ELASTICSEARCH-HADOOP 官方说明: https://www.elastic.co/cn/what-is/elasticsearch-hadoop 示意图: image.png 上面的示意图可能会有点费解,更形象的示意图:
1.Spark Core读取ES ES官网直接提供的有elasticsearch-hadoop 插件,对于ES 7.x,hadoop和Spark版本支持如下: hadoop2Version = 2.7.1 整合es和spark,导入相关依赖有两种方式: a,导入整个elasticsearch-hadoop包 <dependency> <groupId>org.elasticsearch</groupId > <artifactId>elasticsearch-hadoop</artifactId> <version>7.1.1</version> </dependency 2.源码分析 首先导入源码https://github.com/elastic/elasticsearch-hadoop这个是gradle工程,可以直接导入idea,然后切换到7.x版本即可。
从5.0版本开始,elasticsearch-hadoop就支持Spark 2.0。 spark-streaming"); jssc.start(); } } 这里没有执行awaitTermination,执行代码后没有卡住,即可在es上查看 image.png 三、Spark SQL elasticsearch-hadoop
从ES读取数据 在spark、MR等系统中使用elasticsearch-hadoop从ES读取数据时,shard是一个关键的角色,因为elasticsearch-hadoop将为ES索引中的每个shard 通过阅读elasticsearch-hadoop源码我找到了答案: 在文件mr/src/main/java/org/elasticsearch/hadoop/rest/RestService.java:
版本对比 软件 原版本(中文)版本 原Demo(英文)版本 我的版本 Elasticsearch 5.3.0 7.6.2 7.15.1 elasticsearch-hadoop elasticsearch-spark
其他一些elasticsearch-hadoop的配置 SQLPrintOutputCompositor(output) { "name": "streaming.core.compositor.spark.streaming.output.SQLPrintOutputCompositor
拓展:Hadoop集成最后再来了解一下Hadoop集成的好处,Hadoop集成最大的好处就是Elasticsearch通过构建Elasticsearch-Hadoop让数据存储以及查询变得很简单,主要就是通过映射 Hadoop分离的输入数据,Spark的分区到ES的分片上解决分布式数据模型的问题,因为可以减少数据拷贝操作,大大提高性能,而且数据能够在同一台机器上,那是因为Elasticsearch-Hadoop让与
elasticsearch-ruby eland elasticsearch-php elasticsearch-rs elasticsearch-perl elasticsearch-specification elasticsearch-hadoop
dependency> <dependency> <groupId>org.elasticsearch</groupId> <artifactId>elasticsearch-hadoop
但现在的问题是,我们的大量数据是保存在 Hdfs 或者 Hive 中,那怎么把数据同步到 Elasticsearch 中呢,这就需要使用 ES 的官方 Hadoop 组件 Elasticsearch-Hadoop
When enabled, elasticsearch-hadoop will route all its requests (after nodes discovery, if enabled) through
spark.stop() } } 工程依赖如下: <dependency> <groupId>org.elasticsearch</groupId> <artifactId>elasticsearch-hadoop
如果需要将数据落地到hadoop的hdfs需要先安装插件elasticsearch/elasticsearch-hadoop,然后再elasticsearch.yml配置 gateway: type
通过使用Elasticsearch-Hadoop(ES-Hadoop)连接器,可以将Elasticsearch的实时搜索和分析功能应用到你的大数据上。
1 Spark imports 2 elasticsearch-hadoop