【概念】Hadoop、MapReduce、HBase

Hadoop 和 MapReduce       

        Hadoop 生态系统就是为了处理大数据集而产生的一个合乎成本效益的解决方案。Hadoop 实现了一个特别的计算模型,也就是MapReduce,其可以将计算任务分割成多个处理单元然后分散到一群家用的或服务器级别的硬件机器上,从而降低成本并提供水平伸缩性。这个计算模型的下面是一个被称为Hadoop分布式文件系统。

        MapReduce 是一种计算模型,该模型可将大型数据处理任务分解成很多单个的、可以在服务器集群中并行执行的任务。这些任务的计算结果可以合并在一起来计算最终的结果。MapReduce这个术语来自两个基本的数据转换操作:map过程和reduce过程。一个map操作会将集合中的元素从一种形式转换成另一种形式。在这种情况下,输入的键-值对会被转换成零到多个键-值对输出。其中输入和数据的键必须完全不同,而输入和输出的值则可能完全不同。

        在MapReduce计算框架中,某个键的所有键-值对都会被分发到同一个reduce操作中,这个键和这个键对应的所有值都会被传递给同一个Reducer。reduce过程的目的是将值得集合转换成一个值,或者转换成另一个集合,这个Reducer最终会产生一个键-值对。

        Hadoop分布式文件系统(HDFS)中的每一个数据块(block)都会被冗余多份(通常默认会冗余3份),这样可以保证不会因为单个硬盘或服务器的损坏导致数据丢失。同时,因为其目标是优化处理非常大的数据集,所以HDFS以及类似的文件系统所使用的数据块都非常大,通常是64M或者是这个值的若干倍。这么大的数据块可以在硬盘上连续存储,以保证以最少的磁盘寻址次数来进行写入和读取,从而最大化提高读写性能。

        Hadoop神奇的地方在于后面要进行的Sort(排序)和Shuffle(重新分发)过程。Hadoop按照键来对键值对进行排序,然后重新洗牌,将所有具有相同键的键值对分发到一个Reducer中。这里有很多种方式决定哪个Reducer获取哪个范围内的键对应的数据。

HBase

        HBase是一个分布式的、可伸缩的数据存储,其支持行级别的数据更新、快速查询和行级事物。设计灵感来源于谷歌的BigTable,不过HBase并没有实现BigTable的所有特性。HBase支持的一个重要特性就是列存储,其中的列可以组织成列族。列族在分布式集群中物理上是存储在一起的。这就使得当查询场景涉及的列只是所有列的一个子集时,不需要夺取所有列然后丢弃大部分列,而只需读取需要的列,从而提升读写速度。

        可以像键值存储一样来使用HBase,其每一行都使用了一个唯一键来提供非常快的速度读写这一行的列或者列族,HBase还会对每个列保留多个版本的值(按照时间戳进行标记),版本数量是可以配置的,所以如果需要,可以‘时光倒流’回退到之前的版本。

        HBase和Hadoop的关系:HBase使用HDFS来持久化存储数据。为了可以提供行级别的数据更新和快速查询,HBase也使用内存缓存技术来对数据和本地文件进行追加数据更新操作日志。持久化文件将定期地使用附件日志更新进行更新等操作.

Spark

        一个基于Scala API的分布式数据集的分布式计算框架。其可以使用HDFS文件,而且对于MapReduce中多种计算可以提供显著的性能改进。同时还有一个将Hive指向Spark的项目

你可能感兴趣的:(Hadoop,hive,笔记,hadoop,mapreduce)