如何理解大数据
1,大数据与分布式系统
大数据被大家广泛认同的起源是google的三篇论文,描述了分布式文件系统hdfs,分布式文件处理mapreduce,以及大表bigtable。
通常来说,我们所说的“大数据”技术,一般指的是hadoop生态圈技术。hadoop的三个核心组件是hdfs,mapreduce,yarn.
大数据要解决的是什么问题?这是理解大数据的关键,大数据解决的无非就是分布式存储,分布式运算,分布式调度的问题。为了解决这三个问题,hadoop发展了前面所说的三个核心组件。这三个核心组件需要相互对照来看才能正确理解大数据,不能单独拿一个来看。
2,分布式系统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算法的应用。
原创观点,欢迎转载。转载请注明出处,侵权必究。