HDFS,MongoDB,HBase的区别和使用场景


HBase:作为数据存储,捕获来自于各种数据源的增量数据。例如,这种数据源可能是网页爬虫,可能是记录用户看了什么广告和多长时间的广告效果数据,也可能是记录各种参数的时间序列数据
FaceBook使用HBase的计数器来计量人们Like特定网页的次数。内容原创人和网页主人可以得到近乎实时的、多少用户Like他们网页的数据信息。他们可以因此更敏捷地判断应该提供什么内容。Facebook 为此创建了一个叫Facebook Insight的系统,该系统需要一个可扩展的存储系统。公司考虑了很多种可能,包括关系型数据库、内存数据库、和Cassandra数据库,最后决定使用HBase。基于HBase,Facebook 可以很方便地横向扩展服务规模,提供给数百万用户,也可以继续使用他们已有的运行大规模HBase机群的经验。该系统每天处理数百亿条事件,记录数百个参数。

1)适合半结构化或非结构化数据,结构会变动的数据
2)记录非常稀疏的数据
3)多版本数据
4)超大数据量的数据

MongoDB: 日志的采集和存储,小文件的分布式存储,类似互联网微博应用的数据存储

1)适合无严格事务性要求的各种数据,如对象数据,JSON格式数据
2)由于性能非常高,非常适合实时的插入,更新与查找,并具备高度伸缩性
3)适合做缓存

HDFS::适合大文件存储,可append,但不可修改。适合Hadoop离线数据分析,Apache Spark的数据存储。

1)HDFS对大量小文件的存储开销比较大,适合大文件处理,如果有多个小文件,可以合并为大文件再处理
2)HDFS适用于高吞吐量,而不适合低时间延迟的访问
3)HDFS适用于流式读取的方式,不适合多用户写入一个文件、随机写以及文件的覆盖操作
4)HDFS更加适合写入一次,读取多次的应用场景

mongodb适用于以下场景:
a.网站数据:mongo非常适合实时的插入,更新与查询,并具备网站实时数据存储所需的复制及高度伸缩性。
b.缓存:由于性能很高,mongo也适合作为信息基础设施的缓存层。在系统重启之后,由mongo搭建的持久化缓存可以避免下层的数据源过载。
c.大尺寸、低价值的数据:使用传统的关系数据库存储一些数据时可能会比较贵,在此之前,很多程序员往往会选择传统的文件进行存储。
d.高伸缩性的场景:mongo非常适合由数十或者数百台服务器组成的数据库。
e.用于对象及JSON数据的存储:mongo的BSON数据格式非常适合文档格式化的存储及查询。
不适合的场景:
a.高度事物性的系统:例如银行或会计系统。传统的关系型数据库目前还是更适用于需要大量原子性复杂事务的应用程序。
b.传统的商业智能应用:针对特定问题的BI数据库会对产生高度优化的查询方式。对于此类应用,数据仓库可能是更合适的选择。
c.需要SQL的问题。
HDFS适用场景

GB、TB、甚至PB级数据
百万规模以上的文件数量
10K+节点规模

HBase 建立互联网索引
1 爬虫持续不断地抓取新页面,这些页面每页一行地存储到BigTable里。
2 MapReduce计算作业运行在整张表上,生成索引,为网络搜索应用做准备。 搜索互联网
3 用户发起网络搜索请求。 4 网络搜索应用查询建立好的索引,或者直接从BigTable直接得到单个文档。
5 搜索结果提交给用户。

原文地址:https://www.cnblogs.com/jackwong/p/10208435.html