热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Elasticsearch与hadoop比较

过去的几年的日志分析领域,开源搜索引擎Elasticsearch已经变得越来越流行。它与其开源的服务器端的日志收集产品Logstash,其开源可视化工具kibana一起组成了ELK

过去的几年的日志分析领域,开源搜索引擎Elasticsearch已经变得越来越流行。它与其开源的服务器端的日志收集产品Logstash,其开源可视化工具kibana一起组成了ELK分析组合。这个功能强大的组合正蓄势待发。

 

Elasticsearch是一个基于Lucene的分布式搜索服务器。它存储json格式的文档数据,有基于RESTful的操作接口。利用Elasticsearch可以方便的在任何Web应用中集成搜索应用。另外它更有出色的聚合功能(aggregation),能轻松的对数据进行统计分析 ,这一点上Elasticsearch已经超越了其最初的纯搜索引擎的角色,但是如果真正用它来做为复杂的数据分析工具,它能打败hadoop或spark吗?

 

Elasticsearch流行的原因

 

1. Elasticsearch集群实例很容易搭建。

2. 基于json格式的查询语言比开发MapReduce或spark系统更容易掌握。

3. 开发人员可以很方便的将Elasticsearch集成到Hadoop中。

 

这些都是非常引人注目的特性,利用Elasticsearch能快速搭建起一套分析系统。但是否可以认为Elasticsearch就是一个高度可用的数据分析平台了?要成为一个成熟的高可用的数据分析平台,一个高可用的数据存储系统和一套可以支撑复杂数据的计算框架是必不可少的。

 

对于分布式数据存储,Elasticsearch集群中的数据一致性,正是我们担心的问题之一。正常情况下,集群中所有的节点,应该对集群中master的选择是一致的,这样获得的状态信息也应该是一致的,由于Elasticsearch集群中每个节点都是状态维护者,在集群中网络不稳定的情况下就有可能出现集群脑裂(不同的节点对master节点的选择出现了异常)。如图所示正常环境下的Elasticsearch集群。

 

Elasticsearch与hadoop比较

 

当出现网络异常时,主节点丢失,不同的节点对master节点的选择出现了异常。

 

Elasticsearch与hadoop比较

 

这意味着如果要保证数据的一致性和完整性,我们必须把数据储存在一个更可靠的数据库中。

 

与Elasticsearch不同,在Hadoop 里中有效的避免了脑裂情况的出现。如下图

 

Elasticsearch与hadoop比较

 

主namenode维护datanode状态,主备namenode同步信息;保证任何时刻保证只使用一个主namenode来管理集群中的datanode状态。

 

Elasticsearch拥有功能强大的聚合统计和全文搜索功能,可以轻松的用于网络问题分析,如404错误计数,页面浏览量,用户访问统计信息等。但它缺少类似标准SQL中的join或子查询的功能。Elasticsearch不支持查询结果的额外处理或分析的中间数据的输出,也不支持数据集的转换(即一个100万行的表,使用分析处理后,成为另一个100万行的表),故不太适合处理复杂的计算逻辑。

 

相反利用Hadoop的mapreduce或者spark计算框架,我们可以支持处理任何数据聚合和转换工作;我们还可以使用hive或spark SQL来降低我们的开发难度。

 

虽然Elasticsearch存在这些问题,但是它仍然是一个非常优秀的分布式计算框架,而且Elasticsearch可以非常方便的集成在hadoop中,我们也可以用它优秀的数据检索能力来构造自己的查询系统;同时Elasticsearch仍然在不停的版本迭代中,相信未来的版本中Elasticsearch会一步步解决这些问题。


推荐阅读
  • 一、Hadoop来历Hadoop的思想来源于Google在做搜索引擎的时候出现一个很大的问题就是这么多网页我如何才能以最快的速度来搜索到,由于这个问题Google发明 ... [详细]
  • 背景应用安全领域,各类攻击长久以来都危害着互联网上的应用,在web应用安全风险中,各类注入、跨站等攻击仍然占据着较前的位置。WAF(Web应用防火墙)正是为防御和阻断这类攻击而存在 ... [详细]
  • .NetCoreWebApi生成Swagger接口文档的使用方法
    本文介绍了使用.NetCoreWebApi生成Swagger接口文档的方法,并详细说明了Swagger的定义和功能。通过使用Swagger,可以实现接口和服务的可视化,方便测试人员进行接口测试。同时,还提供了Github链接和具体的步骤,包括创建WebApi工程、引入swagger的包、配置XML文档文件和跨域处理。通过本文,读者可以了解到如何使用Swagger生成接口文档,并加深对Swagger的理解。 ... [详细]
  • ElasticSerach初探第一篇认识ES+环境搭建+简单MySQL数据同步+SpringBoot整合ES
    一、认识ElasticSearch是一个基于Lucene的开源搜索引擎,通过简单的RESTfulAPI来隐藏Lucene的复杂性。全文搜索,分析系统&# ... [详细]
  • 什么是大数据lambda架构
    一、什么是Lambda架构Lambda架构由Storm的作者[NathanMarz]提出,根据维基百科的定义,Lambda架构的设计是为了在处理大规模数 ... [详细]
  • 2018年人工智能大数据的爆发,学Java还是Python?
    本文介绍了2018年人工智能大数据的爆发以及学习Java和Python的相关知识。在人工智能和大数据时代,Java和Python这两门编程语言都很优秀且火爆。选择学习哪门语言要根据个人兴趣爱好来决定。Python是一门拥有简洁语法的高级编程语言,容易上手。其特色之一是强制使用空白符作为语句缩进,使得新手可以快速上手。目前,Python在人工智能领域有着广泛的应用。如果对Java、Python或大数据感兴趣,欢迎加入qq群458345782。 ... [详细]
  • 如何实现织梦DedeCms全站伪静态
    本文介绍了如何通过修改织梦DedeCms源代码来实现全站伪静态,以提高管理和SEO效果。全站伪静态可以避免重复URL的问题,同时通过使用mod_rewrite伪静态模块和.htaccess正则表达式,可以更好地适应搜索引擎的需求。文章还提到了一些相关的技术和工具,如Ubuntu、qt编程、tomcat端口、爬虫、php request根目录等。 ... [详细]
  • 本文详细介绍了SQL日志收缩的方法,包括截断日志和删除不需要的旧日志记录。通过备份日志和使用DBCC SHRINKFILE命令可以实现日志的收缩。同时,还介绍了截断日志的原理和注意事项,包括不能截断事务日志的活动部分和MinLSN的确定方法。通过本文的方法,可以有效减小逻辑日志的大小,提高数据库的性能。 ... [详细]
  • 本文介绍了如何使用php限制数据库插入的条数并显示每次插入数据库之间的数据数目,以及避免重复提交的方法。同时还介绍了如何限制某一个数据库用户的并发连接数,以及设置数据库的连接数和连接超时时间的方法。最后提供了一些关于浏览器在线用户数和数据库连接数量比例的参考值。 ... [详细]
  • [译]技术公司十年经验的职场生涯回顾
    本文是一位在技术公司工作十年的职场人士对自己职业生涯的总结回顾。她的职业规划与众不同,令人深思又有趣。其中涉及到的内容有机器学习、创新创业以及引用了女性主义者在TED演讲中的部分讲义。文章表达了对职业生涯的愿望和希望,认为人类有能力不断改善自己。 ... [详细]
  • 如何用UE4制作2D游戏文档——计算篇
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了如何用UE4制作2D游戏文档——计算篇相关的知识,希望对你有一定的参考价值。 ... [详细]
  • 本文介绍了在sqoop1.4.*版本中,如何实现自定义分隔符的方法及步骤。通过修改sqoop生成的java文件,并重新编译,可以满足实际开发中对分隔符的需求。具体步骤包括修改java文件中的一行代码,重新编译所需的hadoop包等。详细步骤和编译方法在本文中都有详细说明。 ... [详细]
  • 这篇文章给大家讲解如何利用dhtmlxGantt在服务器端集成数据。脚本数据保存如果您已初始化dataProcessor,则用户或以编程方式所做的任何更改都将自动 ... [详细]
  • 如何发布WMS/WMTS离线地图服务
    介绍:WMTS(OpenGISWebMapTileService)当前版本是1.0.0。WMTS标准定义了一些操作,这些操作 ... [详细]
  • Azkaban(三)Azkaban的使用
    界面介绍首页有四个菜单projects:最重要的部分,创建一个工程,所有flows将在工程中运行。scheduling:显示定时任务executing:显示当前运行的任务histo ... [详细]
author-avatar
昆山莱盛劳务
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有