`

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则能处理相当复杂的分析。
最终,采用了最大的搜索和细致的分析来确认最为合适的选择。在选择任何技术或者平台时,需要仔细地验证它们,理解这个东东适合哪些场景,哪里可以进行优化,需要做出哪些牺牲。从一个小小的预研项目开始,确认完毕后,再将技术应用到真正的平台上,缓慢地升级到新的层级。
跟随这些建议,你可以成功地在大数据技术中遨游,并且获得相应的回报。
分享到:
评论

相关推荐

    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集群-hbase集群安装

    2. JDK安装部署 3. Zookeeper安装部署 4. Nginx安装部署 5. Hadoop安装部署 6. HBase安装部署 7. MongoDB数据库安装部署; 8. ElasticSearch集群安装部署; 9. 应用服务器的安装及部署

    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_...

    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....

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

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

    可供参考的compose.rar

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

    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 ...

    TensorFlow for Deep Learning

    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 ...

    Advanced Data Analytics Using Python-With Machine Deep Learning and NLP Examples

    Handle structured and unstructured data, ETL techniques, and different kinds of databases such as Neo4j, Elasticsearch, MongoDB, and MySQL Examine the different big data frameworks, including Hadoop...

    大数据分布式集群环境搭建.docx

    centos大数据分布式集群搭建,包含hadoop spark hbase hive solr elasticsearch redis zookeeper rocketmq mongodb mariadb storm kafka docker

    尚硅 大数据

    疑犯追踪 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_...

    JAVA面试题及知识点整理

    Spring原理、微服务架构、Netty与RPC、网络相关、日志相关、Zookeeper、Kafka、RabbitMQ、Hbase、MongoDB、Cassandra、设计模式、负载均衡相关、数据库理论、一致性算法讲解、JAVA基础算法、数据结构、加密算法、...

    Java eBook in Action

    Java软件工程师必备的英文电子书籍大全,文件包含spring boot、spring4、hadoop、mongoDB、redis、Elasticsearch、solr、activeMQ、rabbitMQ、 Docker等英文实战系列书籍,适合英文比较好的同学。

    demo-macket.zip

    平时工作中积累的一些大数据组件的程序demo,开发语言都是java,包括 es、hadoop、hbase、kafka、mindsphere、mongodb、parquet、rocketmq、springboot、storm

    大数据图标大全.docx

    Flume 数据采集工具 Sqoop 数据ETL工具 ElasticSearch 搜索系统 Logstash 日志采集工具 Kibana 数据展现工具 Ranger 集中安全管理工具 Atlas 数据治理和元数据管理框架 kettle ETL工具 mongodb Key-value数据库 ...

    基于OpenGL ES的轻量游戏引擎XYZGameEngine.zip

    数据库技术:如关系型数据库(如MySQL、Oracle、SQL Server)和非关系型数据库(如MongoDB、Redis)等。 前端开发:HTML、CSS、JavaScript等用于构建网页和Web应用程序的技术。 后端开发:涉及服务器端编程、API开发...

    πFlow是一个简单易用,功能强大的大数据流水线系统

    简单易用 可视化配置流水线 监控流水线 查看流水线日志 ...包括Hadoop 、Spark、MLlib、Hive、Solr、Redis、MemCache、ElasticSearch、JDBC、MongoDB、HTTP、FTP、XML、CSV、JSON等 集成了微生物领域的相关算法

    3306Pai-presentations:3306π社区分享PPT汇总

    3306Pai演示文稿3306π社区分享PPT汇总关于「3306π」社区围绕MySQL核心技术,将互联网行业中最重要的数据化解决方案带到传统行业中囊括其他开源技术,Redis,MongoDB,Hbase,Hadoop,ElasticSearch,Storm,Spark...

    piflow:πflow 是一个支持 Spark 的大数据流引擎

    包括spark、mllib、hadoop、hive、hbase、solr、redis、memcache、elasticSearch、jdbc、mongodb、http、ftp、xml、csv、json等。 建筑学 要求 JDK 1.8 Scala-2.11.8 Apache Maven 3.1.0 或更新版本 Spark-2.1.0...

Global site tag (gtag.js) - Google Analytics