Stay foolish:初学者轻松了解“大数据”(2)
- UID
- 1029342
- 性别
- 男
|
Stay foolish:初学者轻松了解“大数据”(2)
什么是NoSQL?
NoSQL=Not Only SQL,指的是非关系型的数据库。
非关系型数据库以键值对存储,它的结构不固定,每一个元组可以有不一样的字段,每个元组可以根据需要增加一些自己的键值对,这样就不会局限于固定的结构,可以减少一些时间和空间的开销。
应该说明的是,NoSQL在处理超大量数据时性能卓越,而且可以在PC服务器集群上运行,成本低廉,具有高扩展性和实用性。但是,目前大多数NoSQL是开源项目,没有供应商正是支持,而且在数据完整性等方面远不如关系型数据库,企业级应用不多。
HBASE 的原理简要介绍,如何存储非结构化数据
HBase是一个分布式的、面向列的开源数据库,HBase在Hadoop平台内的结构化数据的分布式存储系统。HBase与传统关系型数据库的区别在于,它是一个适合非结构化数据存储的数据库,而且HBase是基于列而不是基于行的模式。
HBase利用Hadoop HDFS作为其文件存储系统,HBase位于结构化存储层,HDFS为HBase提供了高可靠性的底层存储支持;用Hadoop MapReduce来处理海量数据,MapReduce为HBase提供了高性能的计算能力;用Hadoop Zookeeper作为协同服务,Zookeeper为HBase提供了稳定服务和failover机制。
HBase数据模型如下:
Ø Row Key: 行键,Table的主键,Table中的记录按照Row Key排序
Ø Timestamp: 时间戳,每次数据操作对应的时间戳,可以看作是数据的version number
Ø Column Family:列簇,Table在水平方向有一个或者多个Column Family组成,一个Column Family中可以由任意多个Column组成,即Column Family支持动态扩展,无需预先定义Column的数量以及类型,所有Column均以二进制格式存储,用户需要自行进行类型转换。
当Table随着记录数不断增加而变大后,会逐渐分裂成多份splits,成为regions,一个region由[startkey,endkey)表示,不同的region会被Master分配给相应的RegionServer进行管理。
HBase中有两张特殊的Table,-ROOT-和.META。
.META.:记录了用户表的Region信息,.META.可以有多个regoin
-ROOT-:记录了.META.表的Region信息,-ROOT-只有一个region
Zookeeper中记录了-ROOT-表的location
Client访问用户数据之前需要首先访问zookeeper,然后访问-ROOT-表,接着访问.META.表,最后才能找到用户数据的位置去访问,中间需要多次网络操作, client端会做cache缓存。
价值密度低
Mapreduce是在大数据中挖掘价值的有效方法
把MapReduce单独列出来,是有必要的,因为它太重要了。MapReduce是一种编程模型,用于大规模数据集(大于1TB)的并行运算。概念“Map(映射)”和“Reduce(化简)”,和他们的主要思想,都是从函数式编程语言里借来的,还有从矢量编程语言里借来的特性。
MapReduce 本身就是用于并行处理大数据集的软件框架。MapReduce 的根源是函数性编程中的 map 和 reduce 函数。它由两个可能包含有许多实例(许多 Map 和 Reduce)的操作组成。Map 函数接受一组数据并将其转换为一个键/值对列表,输入域中的每个元素对应一个键/值对。Reduce 函数接受 Map 函数生成的列表,然后根据它们的键(为每个键生成一个键/值对)缩小键/值对列表。
具体分步骤描述为:
1) 在正式执行map函数前,需要对输入进行“分片”(就是将海量数据分成大概相等的“块”,hadoop的一个分片默认是64M),以便于多个map同时工作,每一个map任务处理一个“分片”。
2) 分片完毕后,多台机器就可以同时进行map工作了。map函数要做的事情,相当于对数据进行“预处理”,输出所要的“键值”。map对每条记录的输出以《key,value》对的形式输出。
3) 在进入reduce阶段之前,还要将各个map中相关的数据(key相同的数据)归结到一起,发往一个reducer。这里面就涉及到多个map的输出“混合地”对应多个reducer的情况,这个过程叫做“洗牌”。
4) 接下来进入reduce阶段。相同的key的map输出会到达同一个reducer。reducer对key相同的多个value进行reduce操作,最后一个key的一串value经过reduce函数的作用后,变成了一个value。
处理速度快
MapReduce除了能挖掘大数据价值,同时也是一种分布式/并行计算模型。虽然它是一个很好的抽象,但不能有效地解决计算领域的任何问题。为了满足大数据及时响应的特性,数据流计算的研究被提上了日程。实时计算方向重要的一个模块就是实时数据流计算。
在数据流模型中,需要处理的输入数据(全部或部分)并不存储在可随机访问的磁盘或内存中,但它们却以一个或多个“连续数据流”的形式到达。数据流不同于传统的存储关系模型,主要区别有如下几个方面:
流中的数据元素在线到达;
系统无法控制将要处理的新到达的数据元素的顺序,无论这些数据元素是在一个数据流中还是跨多个数据流;也即重放的数据流可能和上次数据流的元素顺序不一致;
数据流的潜在大小也许是无穷无尽的;
一旦数据流中的某个元素经过处理,要么被丢弃,要么被归档存储。因此,除非该数据被直接存储在内存中,否则将不容易被检索。相对于数据流的大小,这是一种典型的极小相关。
数据流模型中的操作并不排除传统关系型数据的存在。通常,数据流操作将建立数据流和关系型数据的联系。在数据流处理过程中,更新存储关系的同时可能会产生传输处理问题。
近年来,业界出现了不少实时数据流计算系统,虽然没有一个类似于Hadoop的集大成者,但是也都各具特色。由于网络数据的不断膨胀和用户需求的不断涌现,近年来互联网企业开始广泛研究和使用数据流处理,诞生了Yahoo! S4、Twitter Storm、IBM StreamBase、Facebook的Puma/Puma2 及学术界开源的Borealis等系统。
大数据是云计算吗?
如果有人问你这句话,你看完本文,可以很自信的回答他“Absolutely!”
为了回答这个问题,我们有需要引入一个概念----云计算是什么。
维基百科给云计算下的定义:云计算将IT相关的能力以服务的方式提供给用户,允许用户在不了解提供服务的技术、没有相关知识以及设备操作能力的情况下,通过Internet获取需要服务。
中国云计算网将云定义为:云计算是分布式计算(Distributed Computing)、并行计算(Parallel Computing)和网格计算(Grid Computing)的发展,或者说是这些科学概念的商业实现。
云计算分为三个层次:基础设施即服务(IaaS),平台即服务(PaaS)和软件即服务(SaaS)。
“在说什么,云啊云啊,好多的云啊,好大的棉花糖啊~~”
云计算的核心技术是海量数据分布式存储和海量数据分布式计算,现在云计算系统主要采用Map-Reduce模型。
“Map-Reduce?哪里看到过?”没错,在前面对大数据的解读的时候,我们就已经明确描述过这一段。终于看到熟悉的内容了,无比兴奋啊。
实际上,云计算的数据存储技术主要有谷歌的非开源的GFS(Google File System)和 Hadoop 开发团队开发的GFS的开源实现HDFS(Hadoop Distributed File System)。大部分IT厂商,包括yahoo、Intel的“云”计划采用的都是HDFS的数据存储技术。
通过对简单的云计算的定义及技术分析,加上前面我们对大数据的了解,不难得出结论,大数据当然是可以归为云计算的范畴。
应用领域有哪些?
说些我们熟知的地方吧,哪些我们接触到的地方用到了Hadoop?
要回答这个问题,举几个例子,很容易。在国内,包括中国移动、百度、网易、淘宝、腾讯、金山和华为等众多公司都在研究和使用它。
行业动态及展望
“大数据”的影响,增加了对信息管理专家的需求,甲骨文,IBM,微软和SAP花了超过15亿美元的在软件智能数据管理和分析的专业公司。这个行业自身价值超过1000亿美元,增长近10%,大数据已经出现,因为我们生活在一个社会中有更多的东西。有46亿全球移动电话用户有1亿美元和20亿人访问互联网。基本上,人们比以往任何时候都与数据或信息交互。1990年至2005年,全球超过1亿人进入中产阶级,这意味着越来越多的人,谁收益的这笔钱将成为反过来导致更多的识字信息的增长。思科公司预计,到2013年,在互联网上流动的交通量将达到每年667艾字节。
最早提出“大数据”时代已经到来的机构是全球知名咨询公司麦肯锡。麦肯锡在研究报告中指出,数据已经渗透到每一个行业和业务职能领域,逐渐成为重要的生产因素;而人们对于海量数据的运用将预示着新一波生产率增长和消费者盈余浪潮的到来。
麦肯锡的报告发布后,大数据迅速成为了计算机行业争相传诵的热门概念,也引起了金融界的高度关注。随着大数据时代的全面开启,你是否做好了充分的准备迎接这个时代的到来呢? |
|
|
|
|
|