分布式系统比较常见的分布式方式
一些常见的分布式系统大类:支持持久化存储的分布式存储系统着重计算的分布式/并行计算框架分布式消息队列 根据不同的应用的领域。
把上述分类细化,常见分布式存储系统分为:分布式协同系统(分布式日志复制)分布式任务调度框架流计算框架分布式文件/对象系统分布式NoSQL存储分布式关系数据库(OLAP、OLTP);各种消息队列mq分布式机器学习/深度学习训练框架分布式协调系统(日志复制系统)其实就是paxos算法及其变体的实现,典型的有zookeeper、etcd;
一般来说只存少量的元数据信息,重点在高可用强一致,不提供高的through put,是分布式系统不可或缺的组件;面向非结构化数据的分布式文件/对象系统比较有名的包括Lustre(HPC)GlusterFS(NAS NFS)、HDFS(hadoop)、ceph(虚机块存储)、swift(restful对象存储),各有不同的适用领域。
结构化数据的NoSQL分布式存储,种类和数量最多,按照Martin Fowler的分类,包括Aggregated Oriented NoSQL和图数据库NoSql;Aggregated Oriented NoSQL大致分为3类:Key-value NoSQL,例如Redis Riak等;column family NoSQL(wide column store),典型的是Hbase Cassandradocument NoSQL,典型的是MongoDB
mesos属于大数据计算平台的哪类组件
首先,一个典型的大数据解决方案,也就是大数据系统平台的构建,涉及到多个层次,数据采集和传输、数据存储、数据计算、资源管理、任务调度等,每个流程阶段当中,都有多个组件可选择,关键是要能够满足实际的需求。 简单举例说明一下典型的一些组件:
文件存储:Hadoop HDFS 离线计算:Hadoop MapReduce、Spark 流式、实时计算:Storm、Spark Streaming K-V、NOSQL数据库:HBase、Redis、MongoDB 资源管理:YARN、Mesos 日志收集:Flume、Scribe、Logstash、Kibana 消息系统:Kafka、StormMQ、ZeroMQ、RabbitMQ 查询分析:Hive、Impala、Presto、Phoenix、SparkSQL、Flink、Kylin、Druid 分布式协调服务:Zookeeper 集群管理与监控:Ambari、Ganglia、Nagios、Cloudera Manager 数据挖掘、机器学习:Mahout、Spark MLLib 数据同步:Sqoop 任务调度:Oozie
大数据时代需要哪些数据库技术
数据库技术的发展实际上取决于互联网发展过程中需求的不断升级。如果数据是小钱钱,那么数据库就好比古代的布袋,皮钱包再到如今的电子钱包。演变就是为了适应需求的变化。总的来说,根据数据库原理的不同,可以分为关系型数据库,NoSQL数据库以及时序数据库。下面就为大家简单介绍下这几类数据库的特点以及应用场景:
关系型数据库
关系型数据库是比较传统的数据库,其中包括SQL Server,Oracle,DB2,MySQL等。关系型数据库是基于行存储的,适合结构化实体的存储,读写性能比较平均,支持复杂条件查询。但对于非结构化数据的存储就有些吃力了。
NoSQL数据库
NoSQL数据库的代表非MongoDB莫属,如今,随着MySQL 8的出现,NoSQL数据库的选择也变得多样起来。NoSQL数据库包括文档型数据库,列存储数据库等。这类数据库很好的支持了非结构化数据的存储,但是部分此类数据库由于其底层实现,读性能相较于写性能来说要优异许多。举个栗子,Google Cloud DataStore是一款文档型数据库,其底层基于列索引的BigTable实现。当插入一个JSON对象时,内部需要很多操作来完成对象的保存,相较于关系型数据库的插入操作要麻烦一些。
时序数据库
时序数据库是一个新兴的概念,目前比较流行有InfluxDB,国内初创公司涛思数据的TDengine也是不错的选择。时序数据库适用于物联网传感器数据的存储以及应用日志收集等场景。通过名字就可以看出该类数据库存储的数据基本都是通过时间戳索引的,因此同样不支持复杂的条件查询。
结语
关系型数据库,NoSQL数据库以及时序数据库的选择取决于要存储的数据类型,应用场景。但在互联网如此发达的今天,还要应对高并发,高可用的挑战。也就有了后来的读写分离,故障转移,读拷贝等技术的出现,同时也诞生了应用缓存Redis,消息队列Kafka等来缓解数据库的压力。在选择数据库时,根据应用场景,数据类型选择最合适的就好。
还没有评论,来说两句吧...