当前位置: 首页 > news >正文

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

相关文章:

  • WinAVI Video Converter v8.0 注册码
  • 不利用C语言库函数,实现字符串相关函数
  • 中午又可以打篮球了
  • UI框架
  • 中央气象台发寒潮橙色警报 将现大范围大风降温
  • Visual Studio 2017打包安装项目
  • 宝塔面板 + Rancher + 阿里云镜像仓库 + Docker + Kubernetes,添加集群、部署 web 应用...
  • RDD基础知识
  • 使用
  • JuJu团队1月7号工作汇报
  • IP地址专题七:子网掩码及主机段的算法
  • mysql忘记密码(跳过权限修改)
  • java中date日期格式的各种转换
  • HMM学习
  • Exchange Server 2007安装与配置(待續文章)
  • ----------
  • 【159天】尚学堂高琪Java300集视频精华笔记(128)
  • 2017 前端面试准备 - 收藏集 - 掘金
  • egg(89)--egg之redis的发布和订阅
  • ESLint简单操作
  • Java|序列化异常StreamCorruptedException的解决方法
  • JavaScript-Array类型
  • REST架构的思考
  • 从零到一:用Phaser.js写意地开发小游戏(Chapter 3 - 加载游戏资源)
  • 复习Javascript专题(四):js中的深浅拷贝
  • 给Prometheus造假数据的方法
  • 关于springcloud Gateway中的限流
  • 看图轻松理解数据结构与算法系列(基于数组的栈)
  • 马上搞懂 GeoJSON
  • 面试总结JavaScript篇
  • 腾讯优测优分享 | Android碎片化问题小结——关于闪光灯的那些事儿
  • 想写好前端,先练好内功
  • 用Visual Studio开发以太坊智能合约
  • 正则表达式小结
  • 追踪解析 FutureTask 源码
  • 最简单的无缝轮播
  • ​低代码平台的核心价值与优势
  • #13 yum、编译安装与sed命令的使用
  • #define
  • (13)[Xamarin.Android] 不同分辨率下的图片使用概论
  • (JSP)EL——优化登录界面,获取对象,获取数据
  • (分布式缓存)Redis哨兵
  • (规划)24届春招和25届暑假实习路线准备规划
  • (十七)devops持续集成开发——使用jenkins流水线pipeline方式发布一个微服务项目
  • (四)汇编语言——简单程序
  • (学习日记)2024.01.09
  • (转)nsfocus-绿盟科技笔试题目
  • .Net 8.0 新的变化
  • .NET Core 将实体类转换为 SQL(ORM 映射)
  • .Net的C#语言取月份数值对应的MonthName值
  • .NET基础篇——反射的奥妙
  • .Net接口调试与案例
  • @cacheable 是否缓存成功_让我们来学习学习SpringCache分布式缓存,为什么用?
  • [ vulhub漏洞复现篇 ] Apache APISIX 默认密钥漏洞 CVE-2020-13945
  • [AIGC] Redis基础命令集详细介绍