丰富的线上&线下活动,深入探索云世界
做任务,得社区积分和周边
最真实的开发者用云体验
让每位学生受益于普惠算力
让创作激发创新
资深技术专家手把手带教
遇见技术追梦人
技术交流,直击现场
海量开发者使用工具、手册,免费下载
极速、全面、稳定、安全的开源镜像
开发手册、白皮书、案例集等实战精华
为开发者定制的Chrome浏览器插件
最早提出“大数据”时代到来的是全球知名咨询公司麦肯锡,麦肯锡称:“数据,已经渗透到当今每一个行业和业务职能领域,成为重要的生产因素。人们对于海量数据的挖掘和运用,预示着新一波生产率增长和消费者盈余浪潮的到来。”数据,让一切有迹可循,让一切有源可溯。我们每天都在产生数据,创造大数据和使用大数据,只是,你,仍然浑然不知。
具体展开图(点击“阅读原文”可下载),详细内容请看下文:
在大数据的背景下,数据规模已经由GP跨越大屏PB的级别,单机明显已经无法存储与处理如此规模的数据量,只能依靠大规模集群来对这些数据进行存储和处理。对于海量的数据,通过数据分片(Shard/Partition)来将数据进行切分到不同机器中去,分片以后,如何能够找到某一条记录。这就是数据的分片和路由。
在大数据的存储系统中,为了增加系统的可靠性,往往会将同一份数据存储多个副本。数据是如何复制?以及数据复制后带来的一致性问题如何的解决?
对于大数据或者大规模的分布式系统来说,如何能够高效快速地进行海量数据的处理非常关键,而采用合适的数据结构和算法对于达成此目标至关重要。
大数据的采集处于大数据生命周期的第一个环节,从数据采集的类型看不仅仅要涵盖基础的结构化数据,半结构化数据,以及非结构化数据音频、视频、图像等。常见的数据采集方式包括系统日志采集、网络数据采集、设备数据采集。
系统日志采集主要是对数据库、系统、服务器等运行状态,行为事件等数据抓取。
网络数据采集是指通过爬虫或者公开API等方式从网站获取数据。数据的内容可以是文本、视屏、图片数据等。
爬虫技术:Nutch、Heritrix、Scrapy、WebCollector。
设备数据采集主要是指针对一些物理设备的数据采集,常见的如传感器,探针。
经过采集的数据通过数据通道被传输存储。集中存储的数据源的数据发生变化也能通过数据通道尽快地通知对数据敏感的相应应用或者系统构建,使得它们能够尽快的捕获数据的变化。
消息队列是涉及大规模分布式系统时候经常使用的中间件产品,主要解决日志搜集,应用耦合,异步消息,流量削锋等问题实现高性能,高可用,可伸缩和最终一致性架构。
在数据仓库建模中,未经任何加工处理的原始业务层数据,我们称之为ODS(OperationalDataStore)数据。在互联网企业中,常见的ODS数据有业务日志数据(Log)和业务DB数据(DB)两类。对于业务DB数据来说,从MySQL等关系型数据库的业务数据进行采集,然后导入到数据仓库中,是进一个重要环节。如何准确、高效地把MySQL数据同步到数据仓库中?一般常用的解决方案是批量取数并Load。数据同步解决各个数据源之间稳定高效的数据同步功能。
数据订阅功能旨在帮助用户获取实时增量数据,用户能够根据自身业务需求自由消费增量数据,例如实现缓存更新策略、业务异步解耦、异构数据源数据实时同步及含复杂ETL的数据实时同步等多种业务场景。
序列化(Serialization)是将对象的状态信息转换为可以存储或传输的形式的过程。数据序列化用于模块通讯时,将对象序列化为通信流,高效的传输到另一个模块,并提供反序列化还原数据。对于大数据传输场景下序列化的性能、大小也直接影响了数据传输的性能。
物理存储
随着主机、磁盘、网络等技术的发展,数据存储的方式和架构也在一直不停改变。
根据服务器类型,我们将存储的分类分为:
开放系统的存储分为:
外挂存储根据连接的方式分为:
网络化存储根据传输协议又分为:
针对不同的应用场景,选择的分布式存储方案也会不同,因此有了对象存储、块存储、文件系统存储。
分布式文件/对象存储系统
分布式存储系统面向海量数据的存储访问与共享需求,提供基于多存储节点的高性能,高可靠和可伸缩性的数据存储和访问能力,实现分布式存储节点上多用户的访问共享。
目前业界比较流行的分布式存储系统如下:HDFS、OpenStackSwift、Ceph、GlusterFS、Lustre、AFS、OSS。
分布式关系型数据库
随着传统的数据库技术日趋成熟、计算机网络技术的飞速发展和应用范围的扩大,以分布式为主要特征的数据库系统的研究与开发受到人们的注意。关系型数据库也是建立在关系模型基础上的数据库,借助于集合代数等数学概念和方法来处理数据库中的数据。由于集中式关系型数据库系统的不足(性能、扩展性),分布式关系型数据库目前越来越多。
目前业界比较流行的分布式关系型数据库如下:DRDS、TiDB、GreenPlum、Cobar、Aurora、Mycat。
分析型数据库
分析数据库是面向分析应用的数据库,与传统的数据库不同,它可以对数据进行在线统计、数据在线分析、随即查询等发掘信息数据价值的工作,是数据库产品一个重要的分支。
目前业界比较流行的分析型数据库如下:Kylin、AnalyticDB、Druid、Clickhouse、Vertica、MonetDB、InfiniDB、LucidDB。
搜索引擎
大数据时代,如何帮助用户从海量信息中快速准确搜索到目标内容,就需要搜索引擎。大数据搜索引擎是一个提供分布式,高性能、高可用、可伸缩的搜索和分析系统。
目前常见的搜索引擎技术如下:Elasticsearch、Solr、OpenSearch。
图数据库
图数据库源起欧拉和图理论,也可称为面向/基于图的数据库,对应的英文是GraphDatabase。图形数据库是NoSQL数据库的一种类型,它应用图形理论存储实体之间的关系信息。图形数据库是一种非关系型数据库,它应用图形理论存储实体之间的关系信息。最常见例子就是社会网络中人与人之间的关系。图数据库的基本含义是以“图”这种数据结构存储和查询数据,而不是存储图片的数据库。它的数据模型主要是以节点和关系(边)来体现,也可处理键值对。它的优点是快速解决复杂的关系问题。
目前业界比较流行的图数据库如下:Titan、Neo4J、ArangoDB、OrientDB、MapGraph、ALLEGROGRAPH。
列存储数据库
目前业界比较流行的列存储数据库如下:Phoenix、Cassandra、Hbase、Kudu、Hypertable。
文档数据库
文档型数据库是NoSQL中非常重要的一个分支,它主要用来存储、索引并管理面向文档的数据或者类似的半结构化数据。
目前业界比较流行的文档型数据库如下:MongoDb、CouchDB、OrientDB、MarkLogic。
键值存储数据库
目前业界比较流行的键值存储数据库如下:Redis、Memcached、Tair。
流式计算(Streamingcompute)
流式计算:利用分布式的思想和方法,对海量“流”式数据进行实时处理。流式计算更加强调计算数据流和低时延。这边所谓的流数据(streamingdata)是一种不断增长的,无限的数据集。
注意:本文将微批处理和流处理混在一起。
业界常见的流式计算框架:Storm、Flink、YahooS4、KafkaStream、TwitterHeron、ApacheSamza、SparkStreaming。
大规模批量计算(batchcompute)
业界常见的大规模批量计算框架:Tez、MapReduce、Hive、Spark、Pig、大数据的编程模型ApacheBeam。
即席查询分析(ad-hocquery)
业界常见的框架:Impala、Hawq、Dremel、Drill、Phoenix、Tajo、Presto、HortonworksStinger。
全量计算&增量计算
很多大数据的任务中,数据是一个增量收集和更新的过程,这时候对于数据的处理可以使是全量加上增量计算的方式。增量计算只对部分新增数据进行计算来极大提升计算过程的效率,可应用到数据增量或周期性更新的场合。典型例子就是搜索引擎的周期性索引更新。
业界常见框架:MicrosoftKineograph、Galaxy、GooglePercolator、Druid。
图计算
图计算是一类在实际应用中非常常见的计算类型。许多大数据都是以大规模图或网络的形式呈现,如社交网络、传染病传播途径、交通事故对路网的影响许多非图结构的大数据,也常常会被转换为图模型后进行分析。图数据结构很好地表达了数据之间的关联性。要处理规模巨大的图数据,传统的单机处理方式已经无力处理,必须采用大规模机器集群构成的并行数据库。
业界常见框架:Pregel、GraphChi、SparkGraphX、PowerGrah、ApacheGiraph、ApacheHama。
分布式协调系统
大规模分布式系统中需要解决各种类型的协调需求,例如当当系统中加入一个进程或者物理机,如何自动获取参数和配置,当进程和物理机发生改变如何通知其他进程;单主控服务发生瘫痪,如何能够从备份中选取新的主控服务。分布式协调系统适用于大型的分布式系统,可以提供统一命名服务、状态同步服务、集群管理、分布式应用配置项的管理等服务。
业界常见框架:Chubby、阿里Diamond、阿里ConfigServer、zookeeper、Eureka、Consul。
集群资源管理和调度
资源管理调度的本质是集群、数据中心级别的资源统一管理和分配,以提高效率。其中,多租户、弹性计算、动态分配是资源管理系统要核心解决问题。
管理调度框架:Omega、Brog、Mesos、Corona、Yarn、Torca。
管理和监控工具:Ambari、Chukwa、Hue。
工作流管理引擎
随着企业的发展,他们的工作流程变得更加复杂,越来越多的有着错综复杂依赖关系的工作流需要增加监控,故障排除。如果没有明确的血缘关系。就可能出现问责问题,对元数据的操作也可能丢失。这就是有向无环图(DAG),数据管道和工作流管理器发挥作用的地方。
复杂的工作流程可以通过DAG来表示。DAG是一种图结构。信息必须沿特定方向在顶点间传递,但信息无法通过循环返回起点。DAG的构建是数据管道,或者是一个进程的输入成为下一个进程的输入的顺序进程。
构建这些管道可能会很棘手,但幸运的是,有几个开源的工作流管理器可用于解决这个问题,允许程序员专注于单个任务和依赖关系。
业界常见框架:Oozie、Azkaban、Luigi、Airflow。
随着数据库技术和管理系统的不断发展和普及,人们已不再满足于一般的业务处理。同时随着数据量的不断增大,如何能够更好地利用数据,将数据转化成商业价值,已经成为人们越来越关心的问题。
举例来说,数据库系统可以很好地解决事务处理,实现对数据的“增删改查”等功能,但是却不能提供很好的决策分析支持。因为事务处理首先考虑响应的及时性,多数情况都是在处理当前数据,而决策分析需要考虑的是数据的集成性和历史性,可能对分析处理的时效性要求不高。所以为了提高决策分析的有效性和完整性,人们逐渐将一部分或者大部分数据从联机事物处理系统中剥离出来,形成今天的数据仓库系统。
数据可视化正是利用人类天生技能来增强数据处理和组织效率。
过去的十年,我们经历了数据量高速膨胀的时期,这些海量的、分散在不同角落的异构数据导致了数据资源的价值低、应用难度大等问题。如何将海量数据应用于决策、营销和产品创新?如何利用大数据平台优化产品、流程和服务?如何利用大数据更科学地制定公共政策、实现社会治理?所有这一切,都离不开大数据治理。可以说,在大数据战略从顶层设计到底层实现的“落地”过程中,治理是基础,技术是承载,分析是手段,应用是目的。这个时候数据治理体系建设可能不是一个选择,而是唯一的出路。
元数据MetaData狭义的解释是用来描述数据的数据,广义的来看,除了业务逻辑直接读写处理的那些业务数据,所有其它用来维持整个系统运转所需的信息/数据都可以叫作元数据。比如数据表格的Schema信息,任务的血缘关系,用户和脚本/任务的权限映射关系信息等等。