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则能处理相当复杂的分析。
最终,采用了最大的搜索和细致的分析来确认最为合适的选择。在选择任何技术或者平台时,需要仔细地验证它们,理解这个东东适合哪些场景,哪里可以进行优化,需要做出哪些牺牲。从一个小小的预研项目开始,确认完毕后,再将技术应用到真正的平台上,缓慢地升级到新的层级。
跟随这些建议,你可以成功地在大数据技术中遨游,并且获得相应的回报。
分享到:
相关推荐
在实时数据分析领域,ELK(Elasticsearch、Logstash、Kibana)栈提供了从数据采集、处理到可视化的完整解决方案。 - **节点个数考量**:节点个数不是越多越好,应根据具体需求和数据特性来确定。对于数据量不大且...
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...
6. **libGLESv2.dll**:OpenGL ES 2.0的库文件,用于在Windows上支持图形渲染,可能用于MongoDB Compass的界面展示。 7. **ffmpeg.dll**:FFmpeg库,是一个强大的多媒体处理框架,可能用于处理MongoDB Compass中的...
《基于MongoDB+Spark+ElasticSearch的电影推荐系统》是一个集成大数据处理、推荐算法与实时检索的综合项目,适用于毕业设计、课程设计以及个人技能提升。在这个项目中,MongoDB作为非关系型数据库用于存储海量的电影...
2. 数据仓库(如Hadoop、Spark等):Elasticsearch适合处理大规模实时查询,而在批量处理和离线分析上可能不如Hadoop和Spark有效。 3. NoSQL数据库(如MongoDB、Cassandra等):Elasticsearch在文档型数据存储和...
疑犯追踪 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_...
- **Logstash**:属于Elasticsearch家族的一员,是一个强大的开源工具,用于收集、解析和转发日志数据。Logstash支持大量的插件来实现不同的数据采集方式,非常适合用于构建复杂的数据管道。 2. **存储系统**:...
- **兼容性**:支持多种数据库系统(如MySQL、SQL Server、Oracle等)和数据源(如ElasticSearch、Hadoop),方便数据迁移。 - **实时性**:实现数据的实时同步,延迟在秒级,确保数据新鲜度。 - **自定义**:...
卢亿雷特别强调了Hadoop系统架构中集成的各类技术,如HBase、Elasticsearch、MySQL、MongoDB、Kafka、MQ、Zookeeper以及YARN和HDFS等。 Hadoop的应用分为离线和在线平台应用两大类。离线平台通过MapReduce来处理大...
在数据分析和存储方面,ElasticSearch是一个基于Lucene的搜索引擎,它提供了一个分布式的多用户能力的全文搜索引擎,基于RESTful web接口。 对于数字营销来说,精准投放是核心策略之一。卢亿雷提出的3W原则即“Who...
redis、mongodb、memcached、elasticsearch、zookeeper、ftp、CouchDB、docker、Hadoop 安装 pip3 install -r requirements.txt -i https://mirrors.aliyun.com/pypi/simple/ 使用说明 python3 unauthorized-check....
- **文件搜索**:基于文件名、内容或元数据的快速搜索功能,可能涉及到Elasticsearch等全文搜索引擎。 - **版本控制**:记录文件的历史版本,允许用户回滚到之前的版本。 - **多租户支持**:不同的企业或用户组...
Zabbix监控第三方中间件内存及CPU使用情况模板 nginx redis mysql tomcat Rocketmq mongodb kafka zookeeper httpd elasticsearch jenkins hbase hadoop hive docker
Elasticsearch(ES)是一种基于Lucene的开源全文搜索引擎,专门设计用于处理大规模数据的分布式、实时搜索和分析引擎。它解决了传统数据库在大规模数据检索时的性能问题。 1. **数据存储**:Elasticsearch采用分片...
elasticsearch flask hadoop huzanbaseimage mongodb mongodb-single mongoexpress mysql mytest netcore portainer rabbitmq redis registry-ui sample skywalking spark sqlserver ssdb zookeeper
本文将围绕标题和描述中提到的"高频代码"、"日期处理"、"数据库查询"、"ES查询"以及"自己的文件"这五个关键点,深入探讨相关知识点,并结合标签中的"数据库"、"elasticsearch"、"源码软件"、"database"和"大数据",...
此外,还有Spark、Flink、Storm等计算引擎以及Elastic Search、Splunk等数据分析技术。然而,这种多样化也带来了挑战,如技术跟进和选型难、难以实现差异化发展、市场竞争混乱、用户对底层平台认知不足等。 为了...
杜迪 确定数据库和大数据平台配置中的安全风险。 安装 ...$ python3 -m pip install -r requirements.txt 支持软件 NoSQL数据库: CouchDB [待办事项] ... Elasticsearch [TODO] InfluxDB [TODO] 大数据平台: 用
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 ...