1,大数据与gfs,mapreduce,bigtable

 

  

 

  大数据被大家广泛认同的起源是google的三篇论文,描述了分布式文件系统gfs,分布式文件处理mapreduce,以及大表bigtable。

 

  通常来说,我们所说的“大数据”技术,一般指的是hadoop生态圈技术。hadoop的三个核心组件是hdfs,mapreduce,yarn.

 

  大数据要解决的是什么问题?这是理解大数据的关键,大数据解决的无非就是分布式存储,分布式运算,分布式调度的问题。为了解决这三个问题,hadoop发展了前面所说的三个核心组件。这三个核心组件需要相互对照来看才能正确理解大数据,不能单独拿一个来看。

 

  

 

  2,分布式系统CAP理论

 

 

   CAP理论不是一个科学结论,是一个经验结论,不同人有不同观点,下面是个人拙见:

  在分布式系统中存在着一致性,可用性,分区容错性三个问题,在理论派眼中被称之为CAP理论。之所以存在这三个问题,原因就是分布式存储中,数据副本的数据同步需要时间,数据副本间可用状态不一致,存在多个数据副本。

  数据越准确,请求响应速度越慢,分区容忍性越低。响应越迅速,数据准确性越低,分区容忍性越低。分区容忍性越高,数据越不准确,请求响应速度越慢。

  CAP理论说明在需要在这三者间进行取舍。

 

 

  3,hadoop中hash算法的应用

 

 

 

  hadoop主要是依靠hash算法,将每台机器抽象为hash的一个桶来实现分布式的读写的。同时利用hash算法对数据的标识字段进行取模,抽取并散列数据特征,实现相同特征的数据在reduce阶段在同一台机器上处理。当然,为了防止个别机器负载过高,需要每台机器及时向调度节点namenode报告自己的资源状况,主节点在分配任务时根据资源消耗状况分配任务。除此之外,namenode的内存中上还保留着元数据,当请求来临时能很快的将任务分配给相应节点。

 

 

 

  4,hbase与LSM树

 

 

 

  传统的小型机时代RDBMS单表的合并受限于主机内存,单表通常不会太大。在hbase中,单表的容量被大大扩展,主要是通过key值分区可以将单表数据存储到多台主机,同时采用LSM树,在compact阶段可以使用mapreduce对百G级别乃至更大的数据进行合并,使其存储进一个索引结构中。不过,当执行major compact时mapreduce会造成大量网络流量,需要注意。

 

 

 

  5,hive数据仓库的本质

 

 

 

  hive是一个被sql脚本化的mapreduce程序。一般来说,没有分组统计的sql相当于没有reduce过程的mapreduce,有分组统计的sql相当于一个完整的mapreduce过程。

 

 

 

  6,分布式日志flume与流处理storm

 

 

 

  分布式的日志的管理,是保持数据一致和监控集群运行状况的核心。流处理是分布式内存版的mapreduce,补充了mapreduce。

 

 

 

  写在文末:理解新技术的核心是对传统技术和对算法的理解,在大数据中最核心的是内存和磁盘的物理特性以及hash算法的应用。