大数据和大数据框架

大数据解决的是单机无法处理的数据。无论是存储数据还是计算数据都变得困难无比,大数据框架的出现就是为了解决这个问题,让使用者可以像使用本地主机一样使用多个计算机的处理器,像使用一个本地磁盘一样使用一个大规模的存储集群。

离线计算和实时计算

离线计算多用于模型的训练和数据预处理,最经典的就是|Hadoop和MapReduce;

实时计算框架是要求立即返回计算结果的,快速响应请求,如Strom、Spark Streaming等框架,多用于简单的累积计数和基于训练好的模型进行分类等操作。

Hadoop 核心框架

hadoopmapreduce工作流程(Hadoop核心框架和MapReduce原理)(1)

(1)Hadoop Common

Hadoop的核心功能,对其他的Hadoop模块做支撑,包含了大量的对底层文件、网络的访问,对数据类型的支持,以及对象的序列化、反序列化的操作支持等。

(2)Hadoop Distributed File System(HDFS)

Hadoop 分布式文件系统,用来存储大量的数据。

(3)Hadoop YARN

一个任务调度和资源管理的框架。

(4)Hadoop MapReduce

基于YARN的并行大数据处理组件。

hadoopmapreduce工作流程(Hadoop核心框架和MapReduce原理)(2)

一般把Hadoop Common、HDFS、YARN、MapReduce这四部分统称为Hadoop 框架,而在Hadoop 生态环境中,还有进行SQL 化管理HDFS的Hive 组件,支持OLTP业务的NoSQL 分布式数据库HBase组件,进行图形界面管理的Ambari组件等。

MapReduce原理

MapReduce是解决并行任务的一种模型,将一个可拆解的任务分散到多个计算节点进行计算,最后合并计算结果。

MapReduce背后的思想很简单,就是把一些数据通过map来归类,通过reducer来把同一类的数据进行处理。

hadoopmapreduce工作流程(Hadoop核心框架和MapReduce原理)(3)

Map阶段:首先是读数据,数据来源可能是文本文件,表格,MySQL数据库。这些数据通常是成千上万的文件(叫做shards),这些shards被当做一个逻辑输入源。然后Map阶段调用用户实现的函数,叫做Mapper,独立且并行的处理每个shard。对于每个shard,Mapper返回多个键值对,这是Map阶段的输出。

Shuffle阶段:把键值对进行归类,也就是把所有相同的键的键值对归为一类。这个步骤的输出是不同的键和该键的对应的值的数据流。

Reduce阶段: 输入当然是shuffle的输出。然后Reduce阶段调用用户实现的函数,叫做Reducer,对每个不同的键和该键的对应的值的数据流进行独立、并行的处理。每个reducer遍历键对应的值,然后对值进行“置换”。这些置换通常指的的是值的聚合或者什么也不处理,然后把键值对写入数据库、表格或者文件中。

,