`

Elasticsearch、MongoDB跟Hadoop比较

 
阅读更多
Elasticsearch应用场景:
1.如果你有数百万的文档需要通过关键词进行定位时,Elasticsearch肯定是最佳选择。当然,如果你的文档是JSON的,你就可以把Elasticsearch当作一种轻量级的“NoSQL数据库”。但是Elasticsearch不是一个合适的数据库引擎,对复杂的查询和聚合并不是很强,尽管统计facet可以提供一定的关于给定查询的统计信息的支持。Elasticsearch中的facet主要是用来支持分面的浏览功能。
目前Elasticsearch已经增加了aggregation的功能
2.如果你在寻找一个对应于一个关键词查询的少量的文档集合,并且要支持在这些结果中分面的导航,那么Elasticsearch肯定是最好的选择。如果你需要进行更加复杂的计算,对数据执行服务端的脚本,轻松地运行MapReduce job,那么MongoDB或者Hadoop就进入待选项中。
MongoDB应用场景:
是NoSQL数据库,被设计成一个高可扩展,并且有自动分片的功能及一些额外性能优化的功能。MongoDB是一个面向文档的数据库,以JSON的形式进行数据的存储(准确地说可以称为BSON,对JSON进行了一些增强)——例如,一个native数据类型。MongoDB提供了一个文本索引类型来支持全文检索,所以我们可以看到在Elasticsearch和MongoDB之间的界限,基本的关键词搜索对应于文档的集合。
1,MongoDB超过Elasticsearch的地方在于其对于服务器端js脚本的支持、聚合的管道、MapReduce的支持和capped collections。使用MongoDB,你可以使用聚合管道来处理一个集合中的文档,通过一个管道操作的序列来多步地对文档进行处理。管道操作可以生成全新的文档并且从最终的结果中移除文档。这是一个在检索数据时的相当强的过滤、处理和转化数据的特点。MongoDB也支持对一个数据collection进行map/reduce job的执行,使用定制的js函数进行操作的map和reduce过程。这就保证了MongoDB可以对选定的数据执行任意类型的计算或者转换的终极的灵活性。
MongoDB另一个极其强大的特性称之为“Capped collections”。使用这个特性,用户可以定义一个collection的最大size——然后这个collection可以被盲写,并且会roll-over必须的数据来获取log和其他供分析的流数据。

Hadoop应用场景
就是MapReduce,这已经有MongoDB就地支持了啊!是不是还有一个专属于Hadoop的场景,MongoDB就只是适合。
有!Hadoop是老MapReduce了,提供了最为灵活和强大的环境来进行大量数据的处理,毫无疑问的是能够搞定不能使用Elasticsearch或者MongoDB处理的场景。
为了更加清楚地认识到这点,看看Hadoop如何使用HDFS抽象存储的——从关联的计算特性上。通过HDFS中存储的数据,任意job都可以对于数据进行运算,使用写在核心MapReduce API上,或者使用Hadoop流技术直接使用native语言编程。基于Hadoop 2和YARN,甚至核心编程模型都已经被抽象了,你不再受到MapReduce的牵制了。使用YARN你可以在Hadoop上实现MPI并且用那种方式写job。
额外地,Hadoop生态系统提供了一个交错的工具集合,建立在HDFS和核心MapReduce之上,来进行数据的查询、分析和处理。Hive提供了一个类似SQL的语言,使得业务分析可以使用一个用户习惯的语法进行查询。HBASE提供了一个基于Hadoop的面向列的数据库。Pig和Sizzle提供了两个更加不同的编程模型来查询Hadoop数据。对存储在HDFS中的数据的使用,你可以继承Mahout的机器学习的能力至你的工具集。当使用RHadoop时,你可以直接使用R统计语言来对Hadoop数据执行高级的统计分析
所以,尽管Hadoop和MongoDB也有部分重叠的应用场景并且共同拥有一些有用的功能(无缝的水平扩展),但是两者之间还是有着特定的场景。如果你仅仅想要通过关键字和简单的分析,那么Elasticsearch可以完成任务;如果你需要查询文档,并且包含更加复杂的分析过程,那么MongoDB相当适合;如果你有一个海量的数据,需要大量不同的复杂处理和分析,那么Hadoop提供了最为广泛的工具和灵活性。
一个亘古不变的道理就是选择手头最适合的工具做事。在大数据这样的背景下,技术层出不穷,技术间的界限也是相当的模糊,这对我们的选择是一件相当困难的事情。正如你所见,特定的场景有着最适合的技术,这种差异性是相当重要的。最好的消息就是你不在限定在某一种工具或者技术上。依赖于你面对的场景,这就使得我们能够构建一个整合的系统。例如,我们知道Elasticsearch和Hadoop是可以很好地一起共事的,使用Elasticsearch快速的关键词查询,Hadoop job则能处理相当复杂的分析。
最终,采用了最大的搜索和细致的分析来确认最为合适的选择。在选择任何技术或者平台时,需要仔细地验证它们,理解这个东东适合哪些场景,哪里可以进行优化,需要做出哪些牺牲。从一个小小的预研项目开始,确认完毕后,再将技术应用到真正的平台上,缓慢地升级到新的层级。
跟随这些建议,你可以成功地在大数据技术中遨游,并且获得相应的回报。
分享到:
评论

相关推荐

    ES和HADOOP使用问题和需求

    在实时数据分析领域,ELK(Elasticsearch、Logstash、Kibana)栈提供了从数据采集、处理到可视化的完整解决方案。 - **节点个数考量**:节点个数不是越多越好,应根据具体需求和数据特性来确定。对于数据量不大且...

    MongoDB-ElasticSearch-Spark-ETL:读取MongoDB并迁移到ElasticSearch的通用模板

    MongoDB-ElasticSearch-ETL 概要 读取MongoDB并迁移到ElasticSearch的通用模板 要求 mongodb-driver-3.0.2.jar bson-3.0.2.jar mongodb-driver-core-3.0.2.jar mongo-hadoop-core-1.4.0.jar elasticsearch-spark...

    mongodb-compass-community-1.16.4-win32-x64.zip

    6. **libGLESv2.dll**:OpenGL ES 2.0的库文件,用于在Windows上支持图形渲染,可能用于MongoDB Compass的界面展示。 7. **ffmpeg.dll**:FFmpeg库,是一个强大的多媒体处理框架,可能用于处理MongoDB Compass中的...

    基于MongoDB+Spark+ElasticSearch的电影推荐系统.zip

    《基于MongoDB+Spark+ElasticSearch的电影推荐系统》是一个集成大数据处理、推荐算法与实时检索的综合项目,适用于毕业设计、课程设计以及个人技能提升。在这个项目中,MongoDB作为非关系型数据库用于存储海量的电影...

    Elasticsearch八大经典应用1

    2. 数据仓库(如Hadoop、Spark等):Elasticsearch适合处理大规模实时查询,而在批量处理和离线分析上可能不如Hadoop和Spark有效。 3. NoSQL数据库(如MongoDB、Cassandra等):Elasticsearch在文档型数据存储和...

    hadoop新手入门资料

    疑犯追踪 13_项目:民航 14_azkaban 15_项目:公安局 16_SpringMVC 17_额外项目案例拓展 18_MyBatis 19_Maven 20_Scala 21_Spark 23_面试 23_Redis 24_ElasticSearch 25_MongoDB 26_电影推荐系统 27_滴滴系统 28_...

    第1周 Hadoop生态系统以及版本演化

    - **Logstash**:属于Elasticsearch家族的一员,是一个强大的开源工具,用于收集、解析和转发日志数据。Logstash支持大量的插件来实现不同的数据采集方式,非常适合用于构建复杂的数据管道。 2. **存储系统**:...

    MongoDB热温数据的最佳实践.pptx

    - **兼容性**:支持多种数据库系统(如MySQL、SQL Server、Oracle等)和数据源(如ElasticSearch、Hadoop),方便数据迁移。 - **实时性**:实现数据的实时同步,延迟在秒级,确保数据新鲜度。 - **自定义**:...

    卢亿雷-Hadoop应用及趟坑

    卢亿雷特别强调了Hadoop系统架构中集成的各类技术,如HBase、Elasticsearch、MySQL、MongoDB、Kafka、MQ、Zookeeper以及YARN和HDFS等。 Hadoop的应用分为离线和在线平台应用两大类。离线平台通过MapReduce来处理大...

    卢亿雷-Hadoop生态系统分析

    在数据分析和存储方面,ElasticSearch是一个基于Lucene的搜索引擎,它提供了一个分布式的多用户能力的全文搜索引擎,基于RESTful web接口。 对于数字营销来说,精准投放是核心策略之一。卢亿雷提出的3W原则即“Who...

    unauthorized-check:扫描常见未授权访问(redis,mongodb,memcached,elasticsearch,zookeeper,ftp,CouchDB,docker,Hadoop)

    redis、mongodb、memcached、elasticsearch、zookeeper、ftp、CouchDB、docker、Hadoop 安装 pip3 install -r requirements.txt -i https://mirrors.aliyun.com/pypi/simple/ 使用说明 python3 unauthorized-check....

    基于SpringBoot与Hadoop实现的的企业云盘项目源码.zip

    - **文件搜索**:基于文件名、内容或元数据的快速搜索功能,可能涉及到Elasticsearch等全文搜索引擎。 - **版本控制**:记录文件的历史版本,允许用户回滚到之前的版本。 - **多租户支持**:不同的企业或用户组...

    Zabbix监控第三方中间件内存及CPU使用情况模板

    Zabbix监控第三方中间件内存及CPU使用情况模板 nginx redis mysql tomcat Rocketmq mongodb kafka zookeeper httpd elasticsearch jenkins hbase hadoop hive docker

    ES分布式搜索解决方案.docx

    Elasticsearch(ES)是一种基于Lucene的开源全文搜索引擎,专门设计用于处理大规模数据的分布式、实时搜索和分析引擎。它解决了传统数据库在大规模数据检索时的性能问题。 1. **数据存储**:Elasticsearch采用分片...

    可供参考的compose.rar

    elasticsearch flask hadoop huzanbaseimage mongodb mongodb-single mongoexpress mysql mytest netcore portainer rabbitmq redis registry-ui sample skywalking spark sqlserver ssdb zookeeper

    高频代码,日期处理,数据库查询,ES查询,自己的文件

    本文将围绕标题和描述中提到的"高频代码"、"日期处理"、"数据库查询"、"ES查询"以及"自己的文件"这五个关键点,深入探讨相关知识点,并结合标签中的"数据库"、"elasticsearch"、"源码软件"、"database"和"大数据",...

    大数据产品能力评测赋能企业大数据能力建设 ( PDFDrive ).pdf

    此外,还有Spark、Flink、Storm等计算引擎以及Elastic Search、Splunk等数据分析技术。然而,这种多样化也带来了挑战,如技术跟进和选型难、难以实现差异化发展、市场竞争混乱、用户对底层平台认知不足等。 为了...

    daudit::evergreen_tree:用于Hadoop,MongoDB,MySQL等的配置缺陷检测器!

    杜迪 确定数据库和大数据平台配置中的安全风险。 安装 ...$ python3 -m pip install -r requirements.txt 支持软件 NoSQL数据库: CouchDB [待办事项] ... Elasticsearch [TODO] InfluxDB [TODO] 大数据平台: 用

    Advanced Data Analytics Using Python

    Gain a broad foundation of advanced data analytics concepts and discover the recent revolution in databases such as Neo4j, Elasticsearch, and MongoDB. This book discusses how to implement ETL ...

Global site tag (gtag.js) - Google Analytics