网络上流传着这么的一句流行语:“万事不懂问度娘”。自从有了各种搜索引擎,新名词新技术对大众而言,已不再神秘。然而,当你搜索“大数据”或者“big data solution”等关键字时,搜索出的海量相关知识铺天盖地,对初学者而言,仍然很难在短时间内入门。本文目的,是以傻瓜式提问的方式让初学者轻松的了解“大数据”。
大数据的概念
“大数据”,是不是----数据很大就叫大数据?
实际上简单的这样理解也没有错,在明确定义时,会比较强调大数据的4个V的特性: Volume,Variety,Value,Velocity。也就是:
一、数据存储空间占用大(至PB及以上级别);
二、数据类型繁多;
三、价值密度低;
四、处理速度快。
搜索的信息中,你会发现有某些名词出现的频率非常高,心里也随之会产生一些疑问。“PB是多大?”“Map-Reduce是啥?”“Hadoop是啥?”“大数据跟云计算啥关系?跟传统意义的数据库啥关系?”等等。
这么多的信息量,我们还是按照大数据的基本定义,四个V来逐一梳理吧。
从第一个V开始,Volume。
数据量很大,到底能达到什么程度呢?先来学习一下数量级的知识吧。
1KB(Kilobyte 千字节) = 2^10 B = 1024 B;
1MB(Megabyte 兆字节) = 2^10 KB = 1024 KB = 2^20 B;
1GB(Gigabyte 吉字节) = 2^10 MB = 1024 MB = 2^30 B;
1TB(Trillionbyte 太字节) = 2^10 GB = 1024 GB = 2^40 B;
1PB(Petabyte 拍字节) = 2^10 TB = 1024 TB = 2^50 B;
1EB(Exabyte 艾字节) = 2^10 PB = 1024 PB = 2^60 B;
1ZB(Zettabyte 泽字节) = 2^10 EB = 1024 EB = 2^70 B;
1YB(YottaByte 尧字节) = 2^10 ZB = 1024 ZB = 2^80 B;
1BB(Brontobyte ) = 2^10 YB = 1024 YB = 2^90 B;
1NB(NonaByte ) = 2^10 BB = 1024 BB = 2^100 B;
1DB(DoggaByte) = 2^10 NB = 1024 NB = 2^110 B;
……
“哇!坑爹啊,整出这么多名词,跟大数据都有关系吗?需要我们掌握吗?”别激动!其实,KB,MB,GB我们在日常电脑操作中已经经常碰到了。甚至TB级的大硬盘,也已经应用于家用电脑中了。我们所说的“大数据”,目前大多产品还处在了立足PB展望EB的级别。后面的那些什么ZB、YB、BB、NB、 DB……等,就暂时先当他们是浮云吧~
第二个V, Variety。
关于这一点,百度百科里是这么说的“网络日志、视频、图片、地理位置信息等等”。从专业一点的角度,我们可以说“大数据”中,可以有结构化数据,但更多的是大量的非结构化和半结构化数据。
结构化和非结构化数据是什么意思?
结构化数据是指,可以存储在数据库里,可以用二维表结构来逻辑表达实现的数据。
非结构化数据,是指不方便用数据库二维逻辑表来表现的数据,包括所有格式的办公文档、文本、图片、XML、HTML、各类报表、图像和音频/视频信息等等。
而半结构化数据,就是介于完全结构化数据(如关系型数据库、面向对象数据库中的数据)和完全无结构的数据(如声音、图像文件等)之间的数据,HTML文档就属于半结构化数据。它一般是自描述的,数据的结构和内容混在一起,没有明显的区分。
上述的描述,其实还是有点不明确。用数据模型的列表来看,区别就更清晰一点了:
第三个V,Value。
价值密度低。以视频为例,连续不间断监控过程中,可能有用的数据仅仅有一两秒。
第四个V,Velocity。
处理速度快。如此庞大的数据量,需要在短时间内迅速响应。所使用的技术,当然是有别于传统的数据挖掘技术的。
释疑解惑
“梳理完了四个V,咋还是云山雾罩的呢?”
下面来回答几个初学者可能思考到的问题吧!
针对大数据的四个V,有没有什么对应的技术来应对呢?
目前,查询“大数据”,你会发现度娘给出的各种信息中,Hadoop这个词出现的很频繁。而且,很多厂商提供的产品,也都会打上一个标签:“**产品已经并入Hadoop分布式计算平台,以及将Hadoop引入**产品。”
什么是Hadoop?
Hadoop是由Apache基金会开发的一个分布式系统基础架构。它是一个能够对大量数据进行分布式处理的软件框架。用户可以在不了解分布式底层细节的情况下,开发分布式程序,充分利用集群的威力高速运算和存储。
Hadoop包含了如下子项目:
1. Hadoop Common: 在0.20及以前的版本中,包含HDFS、MapReduce和其他项目公共内容,从0.21开始HDFS和MapReduce被分离为独立的子项目,其余内容为Hadoop Common
2. HDFS: Hadoop 分布式文件系统 (Distributed File System) - HDFS (Hadoop Distributed File System)
3. MapReduce:并行计算框架,0.20前使用 org.apache.hadoop.mapred 旧接口,0.20版本开始引入org.apache.hadoop.mapreduce的新API
4. HBase: 类似Google BigTable的分布式NoSQL列数据库。
5. Hive:数据仓库工具,由Facebook贡献。
6. Zookeeper:分布式锁设施,提供类似Google Chubby的功能,由Facebook贡献。
7. Avro:新的数据序列化格式与传输工具,将逐步取代Hadoop原有的IPC机制。
8. Pig: 大数据分析平台,为用户提供多种接口。
作为初学者,我们先拨开一些浮云,看看这里面到底有些什么。有三个主体部分,是我们需要重点关注的:HDFS、MapReduce、HBase。
实际上,Apache Hadoop的HDFS是Google File System(GFS)的开源实现。MapReduce是Google MapReduce的开源实现。HBase是Google BigTable的开源实现。
Hadoop是一个能够让用户轻松架构和使用的分布式计算平台。它主要有以下几个优点:1高可靠性2高扩展性3高效性4高容错性。用户可以轻松地在Hadoop上开发和运行处理海量数据的应用程序。而实际上,很多公司提供的大数据产品也是基于Hadoop进行开发的。
数据存储空间占用大
针对数据存储空间占用大,我们需要用到的是“分布式存储”。分布式存储系统,就是将数据分散存储在多***立的设备上。传统的网络存储系统采用集中的存储服务器存放所有数据,存储服务器成为系统性能的瓶颈,也是可靠性和安全性的焦点,不能满足大规模存储应用的需要。分布式网络存储系统采用可扩展的系统结构,利用多台存储服务器分担存储负荷,利用位置服务器定位存储信息,它不但提高了系统的可靠性、可用性和存取效率,还易于扩展。
前面我们介绍到的Hadoop,其中的HDFS就是现今最流行的分布式存储平台之一。
HDFS原理简要描述
HDFS(Hadoop Distributed File System),是一个分布式文件系统。HDFS有着高容错性(fault-tolerent)的特点,并且设计用来部署在低廉的(low-cost)硬件上。它提供高吞吐量(high throughput)来访问应用程序的数据,适合那些有着超大数据集(large data set)的应用程序。HDFS放宽了(relax)POSIX的要求(requirements)这样可以实现流的形式访问(streaming access)文件系统中的数据。
HDFS是一个主从结构的体系,一个HDFS集群是由一个名字节点,它是一个管理文件的命名空间和调节客户端访问文件的主服务器,当然还有的数据节点,一个节点一个,它来管理存储。HDFS暴露文件命名空间和允许用户数据存储成文件。
对外部客户机而言,HDFS 就像一个传统的分级文件系统。可以创建、删除、移动或重命名文件,等等。
内部机制,是将一个文件分割成一个或多个的块,这些块存储在一组数据节点中。名字节点(NameNode)操作文件命名空间的文件或目录操作,如打开,关闭,重命名,等等。它同时确定块与数据节点的映射。数据节点(DataNode)来负责来自文件系统客户的读写请求。数据节点同时还要执行块的创建,删除,和来自名字节点的块复制指示。这与传统的 RAID 架构大不相同。块的大小(通常为 64MB)和复制的块数量在创建文件时由客户机决定。NameNode 可以控制所有文件操作。
HDFS 内部的所有通信都基于标准的 TCP/IP 协议。
数据类型繁多
大数据处理,有如下需求:对数据库高并发读写的需求、对海量数据的高效率存储和访问的需求、对数据库的高可扩展性和高可用性的需求。传统的关系型数据库在此类需求面前束手无策。此时,一个新的概念被引入了----NoSQL。
评论
查看更多