大数据和云计算学习笔记(1)

君子博学而日参省乎己,则知明而行无过矣。”——荀况

前几日有朋友问我会不会大数据,我说“悄悄看过几本书但完全没有实战经验,应该算是不会吧”。

所谓“温故而知新,可以为师矣”,今天把这些书找来,觉得有必要复习一下。又在网上找了一些补充,做一个大数据系列攒点人气。

说到人气,我其实没有在任何地方推销过这个公众号——好吧,除了给ruly推销过——近来却发现每天都有人新关注这个号,谢谢大家!

01

当谈论大数据时我们在谈什么

大数据(big data),据研究机构Gartner给出的定义,指无法在一定时间范围内用常规软件工具进行捕捉、管理和处理的数据集合,是需要新处理模式才能具有更强的决策力、洞察发现力和流程优化能力的海量、高增长率和多样化的信息资产。

IBM认为大数据的有5V特点(最初是3V,然后4V而5V):Volume(大量)、Velocity(高速)、Variety(多样)、Value(低价值密度)、Veracity(真实性)。

大数据技术的战略意义不在于掌握庞大的数据信息,而在于对这些含有意义的数据进行专业化处理。Google的首席经济学家Hal Varian认为:海量数据可以广泛获得,所稀缺的是如何从中挖掘智慧和观点。

02

大数据的相关技术

从技术上看,大数据与云计算的关系就像一枚硬币的正反面。大数据无法单机处理,而必须对海量数据进行分布式数据挖掘。因而它必须依托云计算的分布式处理、分布式数据库和云存储、虚拟化技术。

大数据处理的目标是从海量异质数据中挖掘数据,包含数据收集,数据存储与管理,数据分析与挖掘,数据的展现与应用等顺序执行的步骤。下图为大数据处理流程典型架构图。

原始数据来源各异,有结构化的也有非机构化的。很多数据形式不规整,需要从中进行数据抽取,然后将海量数据存入NoSQL或者分布式文件系统中。和传统数据库不同,NoSQL不追求场景统一,对不同的应用由不同的NoSQL数据库来进行存储管理,比如社交网络的数据存储适合使用图数据库,而对实时性要求高的场合则使用Hbase等列数据库。对于海量数据的后台batch任务,Hadoop是广泛使用的分布式存储和计算系统。通过HDFS分布式文件系统进行存储,使用MapReduce计算框架对数据进行处理,使Hadoop提供了高可用性,可扩展性和容错性。

看一个真实的例子方便我们有个感性的认识,

03

数据分片与路由

传统数据库为了支持更多数据,往往采用纵向扩展(scale up),即不增加机器数量而是改善单机硬件资源。而目前主流分布式大数据存储和计算系统则采用横向扩展(scale out),即通过增加机器来获得水平扩展的能力。为与之相符,存储海量数据需要通过数据分片(shard/partition)来将数据切分并分配到各个机器中去。而如何找到某条记录的位置就叫数据路由(routing)。另外,数据复制是和数据分片紧密相连的概念,数据复制将同一份数据存储在多处来保证数据的高可用性,同时还可以提升读操作的效率,因为客户端可以从多个备份中选择物理距离较近的进行读取,既增加了读操作的并发性,又可以提高单次读的效率。

下图为分片和路由的抽象模型,

这个抽象模型的实现可以有hash分片或者范围分片(range partition).Hash分片只支持点查询,即根据某个记录的主键获得记录的内容,不支持范围查询,即给定主键范围一次读取多条记录。hash分片为多数key-value存储系统所支持。google的BigTable则采用范围分片。也有的系统同时支持两种分片。

欲知分片算法究竟如何,且听下回分解。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180630G1JP6300?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 yunjia_community@tencent.com 删除。

扫码关注云+社区

领取腾讯云代金券