老李分享云计算基本概念
老李分享云计算基本概念
poptest 是国内唯一一家培养测试开发工程师的培训机构,以学员能胜任自动化测试,性能测试,测试工具开发等工作为目标。如果对课程感兴趣,请大家咨询 qq:908821478,咨询电话 010-84505200。
1、NOSQL 数据库:
列族存储:HBase,Hypertable
文档存储:MongDB,CouchDB
键值存储:Redis,Memcahed,Berkeley DB
最终一致的键值存储:Cassandra,Voldermot
它们各有特色, 适用于不同的应用场景。
Redis 是一个高性能的 key-value 数据库。它的出现很大程度补偿了 memcached 这类 keyvalue 存储的不足, 在部分场合可以对关系数据库起到很好的补充作用, 比较适合作为内存数据库。但它的查询功能比较单一, 无法实现 RDBMS 丰富的查询功能, 而 HBase 经过改进后可以实现。
MongoDB 是用 C++ 编写的分布式文件存储数据库。它是一个介于 RDBMS 和 NoSQL 之间的产品, 是 NoSQL 当中功能最丰富, 最像 RDBMS 的。MongoDB 支持的数据结构非常松散, 是类似 json 的 bson 格式, 因此可以存储比较复杂的数据类型。它支持的查询语言非常强大, 其语法有点类似于面向对象的查询语言, 几乎可以实现类似关系数据库单表查询的绝大部分功能, 而且还支持对数据建立索引。因此, 用户可以方便地由 MySQL 迁移到 MongoDB, 进一步促进 MongoDB 的流行。
相比之下,HBase 支持的查询语言没有 MongoDB 丰富, 也不支持二级索引, 在易用性方面完败于 MongoDB。但 HBase 是在 Hadoop 基础上开发的, 与 Hadoop 结合更紧密, 数据存储在 riDFS 巾, 对 MapReduce 框架的支持更好。而且 HBase 的吞吐率远大于 MongoDB, 大数据写入性能也遥遥领先。在具体应用上,
MongoDB 更适合于数据变化较快的场景, 适用动态的查询, 使用索引而不需要 MapReduce; 而 HBase 更适合海量数据的实时随机读取。
不过通过一些方法,比如 Solr+Hbase,ITHbase,协处理器等方式,为 HBase 增加二级索引的话,可以让 HBase 在功能上不输于 MongDB。
2、分布式文件系统:
HDFS,GFS 等:适合存储大文件。(HDFS 对大文件做了优化,关注吞吐量,适合做批处理)
MogileFS,FastDFS,OpenStack 的 Swift 等。适合存储小文件
淘宝的 TFS。
注解 1 -- 下面是转载来的 HDFS 和 Swift 的对比:
最近在 Quora 上有人提到一个问题,有关 Hadoop 分布式文件系统和 OpenStack 对象存储的不同。问题原文如下:
“Hadoop 分布式文件系统(HDFS)和 OpenStack 对象存储(OpenStack Object Storage)似乎都有着相似的目的:实现冗余、快速、联网的存储。什么样的技术特性让这两种系统因而不一样?这两种存储系统最终趋于融合是否大有意义?”
问题提出之后,很快有 OpenStack 的开发者进行了回复。51CTO 在此摘抄了前两名回复进行翻译,以供各位参考。
排名第一的答案来自 RackSpace 的 OpenStack Swift 开发者 Chuck Their:
虽然 HDFS 与 Openstack 对象存储(Swift)之间有着一些相似之处,但是这两种系统的总体设计却大不一样。
1. HDFS 使用了中央系统来维护文件元数据(Namenode,名称节点),而在 Swift 中,元数据呈分布式,跨集群复制。使用一种中央元数据系统对 HDFS 来说无异于单一故障点,因而扩展到规模非常大的环境显得更困难。
2. Swift 在设计时考虑到了多租户架构,而 HDFS 没有多租户架构这个概念。
3. HDFS 针对更庞大的文件作了优化(这是处理数据时通常会出现的情况),Swift 被设计成了可以存储任何大小的文件。
4. 在 HDFS 中,文件写入一次,而且每次只能有一个文件写入;而在 Swift 中,文件可以写入多次;在并发操作环境下,以最近一次操作为准。
5. HDFS 用 Java 来编写,而 Swift 用 Python 来编写。
另外,HDFS 被设计成了可以存储数量中等的大文件,以支持数据处理,而 Swift 被设计成了一种比较通用的存储解决方案,能够可靠地存储数量非常多的大小不一的文件
注解 2 -- 下面是转载来的 FastDFS 和 HDFS 的对比:
主要是定位和应用场合不一样。
hadoop 的文件系统 HDFS 主要解决并行计算中分布式存储数据的问题。其单个数据文件通常很大,采用了分块(切分)存储的方式;
FastDFS 主要用于大中网站,为文件上传和下载提供在线服务。所以在负载均衡、动态扩容等方面都支持得比较好,FastDFS 不会对文件进行分快(切分)存储。
一句话概括就是:HDFS 是给超大的数据集设计的, FASTDFS 是专为小文件设计的,FASTDFS 有 JAVA 的 API
注解 3: --- 下面是转载来的流行的分布式系统的常见应用场景:
应用场景 |
可行系统 |
大数据离线 / 在线分析 |
HDFS、Swift、GlusterFS |
电子商务 |
TFS、FastDFS、Dynamo、Swift、Tair |
社交网络 |
TFS、FastDFS、Dynamo、Swift、Tair |
网络硬盘 |
HDFS、FastDFS、Swift、GlusterFS |
邮件服务 |
TFS、FastDFS、Dynamo、Swift、Tair |
图片服务 |
TFS、FastDFS、Dynamo、Swift、Tair |
语音视频服务 |
HDFS、FastDFS、Swift、GlusterFS |
虚拟机调度和镜像存储 |
HDFS、Swift、GlusterFS |
3、云计算平台 / 解决方案(提供 IaaS)
CouldStack: Apache 的
OpenStack: Rackspace 和 NASA 共同开发的,帮助服务商和企业内部实现类似于 Amazon EC2 和 S3 的云基础架构服务 (Infrastructure as a Service, IaaS)
vCloud Director: VMware 开发的用于部署云的平台