什么是大数据?
可以从四个方面概括:数据量(volume)、处理速度(velocity)、多样性(variety)、真实性(veracity),简称4V。
Volume(数据量)
数据量大是大数据的比较明显的特征,一般是TB级的数据量,并且每天数据的增长量比较大。
Velocity(速度)
要求数据的处理速度比较快,从数据采集、加工处理、分析到产生价值的速度,能够及时快速的响应,并不能因为数据量大,响应速度就慢下来。
Variety(多样性)
数据的来源不同,数据类型不同(结构化、非结构化)、比如可能来自网站的日志文件、数据库中库表等。
Veracity(准确性)
因为采集到的数据会掺杂太多的无用信息,需要确保收集到的数据非常准确、准确,否则对虚假的数据做处理也不会产生任何有用价值。
对应这些方面,每个方面都需要专用的处理工具:
- 数据加工——这些工具用来执行某种形式的计算和提取处理,比如对杂乱无序的数据做排序、筛选操作。比如像Storm、HBase、Hive等。
- 数据传输——这些工具用来收集和接受数据并传输给数据加工系统(或者在不同的系统组件间传输)。这些工具的做法通常是使用消息总线(message bus)或消息队列。比如像Kafka、Flume、Sqoop等。
- 数据存储——这些工具用来保存数据加工过程中不同阶段的数据存储。比如像分布式的文件系统(HDFS)和GlusterFS,还有像Cassandra这样的NoSQL数据库。
大数据和关系型数据库的区别?
主要区别体现在数据规模、数据类型(结构化、非结构化)、产生模式(来源多样性)。以及处理对象、处理工具的变化,由以计算为主转到以数据处理为主。
大数据的处理模式
大数据的处理模式大致可分为两种:一种为批处理(batch processing),另一种为流处理模式(stream processing)。两者的区别是批处理是先存储在处理,流处理是直接处理,然后再存储,甚至不存。
1、批处理(batch processing)
批处理模式最具代表性的就是MapReduce,它先将原数据分块,然后分别分发给多个map任务处理,每个map任务对输入进行解析,提取出键值对集合,然后由用户自定义的map函数对这些键值对集合做处理,得到中间结果并输出到磁盘上。然后由reduce任务读取这些中间结果,并根据Key值进行相关的排序、合并,最后由用户自定义的reduce函数对这些已排序的结果做处理,得到最终结果并输出。
从MapReduce的处理过程可以看出其核心设计思想是:
a、将问题分而治之
b、把计算推到数据端,而不是把数据推到计算端,这样可以避免数据传输过程中产生的大量通信开销,有效降低网络带宽。
2、流处理(stream processing)
流处理模式将数据视为流,源源不断的数据就形成了数据流,当新的数据到达时就立刻处理并返回所需结果。数据流本身具有持续性、速度快且数据量大等特点,通常不会对数据做持久化存储。并且由于响应时间的要求,流处理的过程基本都是在内存中进行的,因此内存是流处理的一个瓶颈。