目录
总结来说,Mapreduce就是是一个软件框架,海量数据是它的“菜”,它在大规模集群上以一种可靠且容错的方式并行地“烹饪这道菜”。
结构化数据:即行数据,存储在数据库里,可以用二维表结构来逻辑表达实现的数据。
非结构化数据:不方便用数据库二维逻辑表来表现的数据,包括所有格式的办公文档、文本、图片、XML、HTML、各类报表、图像和音频/视频信息等等。
一、Hadoop生态圈组件介绍
Hadoop是目前应用最为广泛的分布式大数据处理框架,其具备可靠、高效、可伸缩等特点。
Hadoop的核心组件是HDFS、MapReduce。随着处理任务不同,各种组件相继出现,丰富Hadoop生态圈,目前生态圈结构大致如图所示:
1、HDFS(分布式文件系统)
HDFS是整个hadoop体系的基础,负责数据的存储与管理。HDFS有着高容错性(fault-tolerant)的特点,并且设计用来部署在低廉的(low-cost)硬件上。而且它提供高吞吐量(high throughput)来访问应用程序的数据,适合那些有着超大数据集(large data set)的应用程序。
2、MapReduce(分布式计算框架)
MapReduce是一种基于磁盘的分布式并行批处理计算模型,用于处理大数据量的计算。其中Map对应数据集上的独立元素进行指定的操作,生成键-值对形式中间,Reduce则对中间结果中相同的键的所有值进行规约,以得到最终结果。
3、Spark(分布式计算框架)
Spark是一种基于内存的分布式并行计算框架,不同于MapReduce的是——Job中间输出结果可以保存在内存中,从而不再需要读写HDFS,因此Spark能更好地适用于数据挖掘与机器学习等需要迭代的MapReduce的算法。
4、Flink(分布式计算框架)
Flink是一个基于内存的分布式并行处理框架,类似于Spark,但在部分设计思想有较大出入。对 Flink 而言,其所要处理的主要场景就是流数据,批数据只是流数据的一个极限特例而已。
5、Yarn/Mesos(分布式资源管理器)
YARN是下一代MapReduce,即MRv2,是在第一代MapReduce基础上演变而来的,主要是为了解决原始Hadoop扩展性较差,不支持多计算框架而提出的。
6、Zookeeper(分布式协作服务)
解决分布式环境下的数据管理问题:统一命名,状态同步,集群管理,配置同步等。Hadoop的许多组件依赖于Zookeeper,它运行在计算机集群上面,用于管理Hadoop操作。
7、Sqoop(数据同步工具)
Sqoop是SQL-to-Hadoop的缩写,主要用于传统数据库和Hadoop之前传输数据。数据的导入和导出本质上是Mapreduce程序,充分利用了MR的并行化和容错性。
8、Hive/Impala(基于Hadoop的数据仓库)
Hive定义了一种类似SQL的查询语言(HQL),将SQL转化为MapReduce任务在Hadoop上执行。通常用于离线分析。
9、HBase(分布式列存储数据库)
HBase是一个建立在HDFS之上,面向列的针对结构化数据的可伸缩、高可靠、高性能、分布式和面向列的动态模式数据库。
10、Flume(日志收集工具)
Flume是一个可扩展、适合复杂环境的海量日志收集系统。它将数据从产生、传输、处理并最终写入目标的路径的过程抽象为数据流,在具体的数据流中,数据源支持在Flume中定制数据发送方,从而支持收集各种不同协议数据。
11、Kafka(分布式消息队列)
Kafka是一种高吞吐量的分布式发布订阅消息系统,它可以处理消费者规模的网站中的所有动作流数据。实现了主题、分区及其队列模式以及生产者、消费者架构模式。
12、Oozie(工作流调度器)
Oozie是一个可扩展的工作体系,集成于Hadoop的堆栈,用于协调多个MapReduce作业的执行。它能够管理一个复杂的系统,基于外部事件来执行,外部事件包括数据的定时和数据的出现。
二、Mapreduce概述
Hadoop MapReduce是一个软件框架,基于该框架能够容易地编写应用程序,这些应用程序能够运行在由上千个商用机器组成的大集群上,并以一种可靠的,具有容错能力的方式并行地处理上TB级别的海量数据集。这个定义里面有着这些关键词,一是软件框架,二是并行处理,三是可靠且容错,四是大规模集群,五是海量数据集。
总结来说,Mapreduce就是是一个软件框架,海量数据是它的“菜”,它在大规模集群上以一种可靠且容错的方式并行地“烹饪这道菜”。
三、Spark技术特点与概述
1.Spark的技术特点
- a. spark是继Hadoop的MapReduce之后,最具影响的大数据框架之一。(易用)
- b. Spark生态系统是以Spark core(RDD)为核心提供计算框架。(通用)
- c. 微批的流计算(快速)
- d. 函数式编程思想(代码简洁)
2. Spark的知识范畴
3.Spark的架构
Spark架构如下图所示,对于Spark架构中各个组件的解释说明如下。
(1)客户端:用户提交作业的客户端。
(2)Driver:负责运行应用程序的main函数并创建SparkContext,应用程序包含 Driver功能的代码和分布在集群中多个节点上的Executor代码。
(3)SparkContext:应用上下文,控制整个生命周期。
(4)Cluser Manager:资源管理器。
(5)Spark Worker:集群中任何可以运行应用程序的节点,运行一个或多个Executor进程。
(6)Executor:运行在Spark Worker上的任务(Task)执行器。
(7)Task:被发送到某个Executor的具体任务。
四、Mapreduce与Spark的区别
-
内存计算
Spark 将数据存储在内存中进行计算;MapReduce 将数据存储在磁盘上。由于内存访问速度更快,spark 在处理迭代计算和交互式查询等工作负载时通常比 MapReduce 更高效。
-
执行速度
Spark 的内存计算特性和基于DAG有向无环图 的执行模型,通常比 MapReduce更快。 Spark可以在内存中保留数据和计算结果,并通过多个任务合并为更少的阶段来减少磁盘的读 写开销。
-
API 和编程模型
Spark提供了丰富的API,包括 scala、Java、Python等。开发起来更加灵活、表达能力更 强。而 MapReduce 使用 Java 编程语言来编写 Map 和 Reduce 函数,需要手动编写更多的 代码来实现处理逻辑。
-
扩展性
Spark 有更好的扩展性,可以方便的与其他数据处理框架和工具集成。如:Spark Streaming 用于流处理、Spark SQL 用于查询和结构化数据处理、Spark MLlib用于机器学习等。
-
容错性
Spark提供了弹性式分布数据集RDD,具有自动容错和数据恢复机制。能够在节点故障时重新 计算丢失的数据。
MapReduce 需要在每个任务的开始和结束时将数据写入磁盘,因此在故障情况下需要重新启 动整个计算。
五、结构化数据与非结构化数据
结构化数据:即行数据,存储在数据库里,可以用二维表结构来逻辑表达实现的数据。
非结构化数据:不方便用数据库二维逻辑表来表现的数据,包括所有格式的办公文档、文本、图片、XML、HTML、各类报表、图像和音频/视频信息等等。
六、Linux简单操作命令实训练习