Spark2.x写入Elasticsearch的性能测试

1、Spark集成ElasticSearch的设计动机web

ElasticSearch 毫秒级的查询响应时间仍是很惊艳的。其优势有:编程

1.    优秀的全文检索能力架构

2.    高效的列式存储与查询能力框架

3.    数据分布式存储(Shard 分片)elasticsearch

相应的也存在一些缺点:分布式

1.    缺少优秀的SQL支持函数

2.    缺少水平扩展的Reduce(Merge)能力,现阶段的实现局限在单机oop

3.    JSON格式的查询语言,缺少编程能力,难以实现很是复杂的数据加工,自定义函数(相似Hive的UDF等)性能

Spark 做为一个计算引擎,能够克服ES存在的这些缺点:优化

1.    良好的SQL支持

2.    强大的计算引擎,能够进行分布式Reduce

3.    支持自定义编程(采用原生API或者编写UDF等函数对SQL作加强)

因此在构建即席多维查询系统时,Spark 能够和ES取得良好的互补效果

2、Spark与ElasticSearch结合的架构和原理

ES-Hadoop无缝打通了ES和Hadoop两个很是优秀的框架,咱们既能够把HDFS的数据导入到ES里面作分析,也能够将es数据导出到HDFS上作备份,归档,其中值得一提的是ES-Hadoop全面的支持了Spark框架,其中包括Spark,Spark Streaming,Spark SQL,此外也支持Hive,Pig,Storm,Cascading,固然还有标准的MapReduce,不管用那一个框架集成ES,都是很是简洁的。最后还可使用Kibana提供的可视化的数据分析一条龙服务,很是棒的组合

整个数据流转图以下

而咱们今天要介绍的,就是使用ES-Hadoop里面的ES-Spark插件,来完成使用spark向ES里面大批量插入数据和加载数据。

3、集群的硬件配置

Spark集群含有3个节点,FEA-spk和Spark集群的交互采用yarn-client。

主机

cpu

mem

disk

10.68.23.89

1200MHZ*8

50g

400g

10.68.23.90

1200MHZ*8

50g

400g

10.68.23.91

1200MHZ*8

50g

400g

4、写入elasticsearch的数据介绍

elasticsearch副本数量是2个,每个副本的大小是216.4g

数据的条数为88762914,字段的个数73个

5、FEA-spk写入ElasticSearch的原语实现

(1)   建立spk的链接

(2)   建立ElasticSearch的链接

(3)   加载数据到es中

数据的格式以下表所示

(4)   查看一下df1表的前十行

(5)将df1表的数据写回到ES里面,其中spark是index,people是type

因为数据量比较大,因此咱们选择后台运行

进入spark web界面,查看运行状况

咱们能够看到花费了2.3小时,若是对集群的资源和参数优化,时间可能会更短

6、Spark写回数据到ES的性能计算

每秒处理的数据条数=总条数/总时间=88762914/(2.5*60*60)=9863条

每条记录的大小=总大小/总条数=216.4*1024*1024k/88762914=3K

每秒能写多少兆=每秒处理的数据条数*每条记录的大小/1024=9863*3/1024=29M

7、FEA-spk结合ES适用的场景

不会使用Spark,想使用Spark分析存放在ES中的数据,把结果写入到ES里面,FEA-spk是一个不错的选择。

相关文章
相关标签/搜索