精华内容
下载资源
问答
  • Big Data Analytics with Spark and HadoopSparkHadoop数据分析)代码code
  • 扫盲入门级别。不懂hadoopspark的可以翻一翻 对于快速掌握还是很有帮助的
  • 数据算法 Hadoop Spark大数据处理技巧(高清版PDF),大数据分析算法。
  • 数据算法:Hadoop/Spark数据处理技巧》介绍了很多基本设计模式、优化技术和数据挖掘及机器学习解决方案,以解决生物信息学、基因组学、统计和社交网络分析等领域的很多问题。这还概要介绍了MapReduce、Hadoop和...
  • 数据算法:Hadoop/Spark数据处理技巧》介绍了很多基本设计模式、优化技术和数据挖掘及机器学习解决方案,以解决生物信息学、基因组学、统计和社交网络分析等领域的很多问题。这还概要介绍了MapReduce、Hadoop和...
  • 数据算法:Hadoop/Spark数据处理技巧》介绍了很多基本设计模式、优化技术和数据挖掘及机器学习解决方案,以解决生物信息学、基因组学、统计和社交网络分析等领域的很多问题。这还概要介绍了MapReduce、Hadoop和...
  • 大数据开发技巧,包括聚类、关联、回归、共同好友算法等。有两部分,要同时解压才有用。
  • 数据算法:Hadoop/Spark数据处理技巧》介绍了很多基本设计模式、优化技术和数据挖掘及机器学习解决方案,以解决生物信息学、基因组学、统计和社交网络分析等领域的很多问题。这还概要介绍了MapReduce、Hadoop和...
  • 数据算法:Hadoop/Spark数据处理技巧》介绍了很多基本设计模式、优化技术和数据挖掘及机器学习解决方案,以解决生物信息学、基因组学、统计和社交网络分析等领域的很多问题。这还概要介绍了MapReduce、Hadoop和...
  • 数据算法:Hadoop/Spark数据处理技巧》介绍了很多基本设计模式、优化技术和数据挖掘及机器学习解决方案,以解决生物信息学、基因组学、统计和社交网络分析等领域的很多问题。这还概要介绍了MapReduce、Hadoop和...
  • 数据算法 Hadoop Spark数据处理技巧 中文完整版 高清带书签 共3个文件,全部下载后一起解压,解压后文件大小:181M
  • 前 言 本书讲解了Apache SparkHadoop的基础知识,以及如何通过简单的方式...所有Spark组件(Spark Core、Spark SQL、DataFrame、Dataset、Conventional Streaming、Structured Streaming、MLlib、GraphX和Hadoop...


    image

    前  言

    本书讲解了Apache Spark和Hadoop的基础知识,以及如何通过简单的方式将它们与最常用的工具和技术集成在一起。所有Spark组件(Spark Core、Spark SQL、DataFrame、Dataset、Conventional Streaming、Structured Streaming、MLlib、GraphX和Hadoop核心组件)、HDFS、MapReduce和Yarn 都在 Spark + Hadoop 集群的实现示例中进行了深入的探讨。

    大数据分析行业正在从 MapReduce 转向Spark。因此,本书深入讨论了 Spark 相比 MapReduce 的优势,从而揭示出它在内存计算速度方面的好处。我们还会讲解如何运用 DataFrame API、Data Sources API,以及新的 Dataset API 来构建大数据分析应用程序。书中还讲解了如何使用 Spark Streaming 配合 Apache Kafka 和 HBase 进行实时数据分析,以帮助构建流式应用程序(streaming application)。新的结构化流(Structured Streaming)概念会通过物联网(Internet of Things,IOT)用例来解释。在本书中,机器学习技术会使用 MLLib、机器学习流水线和 SparkR 来实现;图分析则会利用Spark的GraphX 和GraphFrames 组件包来进行。

    本书还介绍了基于Web的笔记本(如Jupyter和Apache Zeppelin)和数据流工具Apache NiFi,它们用于分析和可视化数据,以及利用 Livy 服务器把Spark作为一个服务提供给用户。

    在本书的各章中会使用 Python 和 Scala 编程语言,其中 Python 的侧重程度更高。我们假设读者具备 Java、Scala、Python、SQL 或 R 语言的初级编程背景,并具有基本的 Linux 经验。如果读者在 Hadoop 平台上的大数据环境中有一些工作经验,就能比较快捷地开始构建 Spark 应用程序。

    本书的目标读者

    虽然本书主要是针对数据分析师和数据科学家编写的,但它也会对架构师、程序员和大数据从业者有所帮助。

    对于数据分析师:本书可以用作数据分析人员在 Spark 和 Hadoop 上开发分析应用程序的参考指南。

    对于数据科学家:本书可以用作在 Spark 和 Hadoop 上构建数据产品的参考指南。

    对于架构师:本书提供了一个完整生态系统的概述和一些大数据分析应用程序的示例,有助于构建大数据分析的解决方案。

    对于程序员:本书讲解了用 Scala 和 Python 语言构建大数据应用程序所使用的 API 和技术。

    对于大数据从业者:本书有助于了解新的范例和技术,并做出正确的决定。

    目  录

    第1章 从宏观视角看大数据分析
    1.1 大数据分析以及 Hadoop 和 Spark 在其中承担的角色
    1.1.1 典型大数据分析项目的生命周期
    1.1.2 Hadoop和Spark承担的角色
    1.2 大数据科学以及Hadoop和Spark在其中承担的角色
    1.2.1 从数据分析到数据科学的根本性转变
    1.2.2 典型数据科学项目的生命周期
    1.2.3 Hadoop和Spark 承担的角色
    1.3 工具和技术
    1.4 实际环境中的用例
    1.5 小结
    第2章 Apache Hadoop和Apache Spark入门
    2.1 Apache Hadoop概述
    2.1.1 Hadoop 分布式文件系统
    2.1.2 HDFS 的特性
    2.1.3 MapReduce
    2.1.4 MapReduce 的特性
    2.1.5 MapReduce v1与MapReduce v2对比
    2.1.6 YARN
    2.1.7 Hadoop上的存储选择
    2.2 Apache Spark概述
    2.2.1 Spark 的发展历史
    2.2.2 Apache Spark 是什么
    2.2.3 Apache Spark 不是什么
    2.2.4 MapReduce 的问题
    2.2.5 Spark 的架构
    2.3 为何把 Hadoop 和 Spark 结合使用
    2.3.1 Hadoop 的特性
    2.3.2 Spark 的特性
    2.4 安装 Hadoop 和 Spark 集群
    2.5 小结
    第3章 深入剖析Apache Spark
    3.1 启动 Spark 守护进程
    3.1.1 使用CDH
    3.1.2 使用 HDP、MapR 和Spark 预制软件包
    3.2 学习Spark的核心概念
    3.2.1 使用 Spark 的方法
    3.2.2 弹性分布式数据集
    3.2.3 Spark 环境
    3.2.4 变换和动作
    3.2.5 RDD 中的并行度
    3.2.6 延迟评估
    3.2.7 谱系图
    3.2.8 序列化
    3.2.9 在 Spark 中利用 Hadoop文件格式
    3.2.10 数据的本地性
    3.2.11 共享变量
    3.2.12 键值对 RDD
    3.3 Spark 程序的生命周期
    3.3.1 流水线
    3.3.2 Spark 执行的摘要
    3.4 Spark 应用程序
    3.4.1 Spark Shell 和 Spark 应用程序
    3.4.2 创建 Spark 环境
    3.4.3 SparkConf
    3.4.4 SparkSubmit
    3.4.5 Spark 配置项的优先顺序
    3.4.6 重要的应用程序配置
    3.5 持久化与缓存
    3.5.1 存储级别
    3.5.2 应该选择哪个存储级别
    3.6 Spark 资源管理器:Standalone、YARN和Mesos
    3.6.1 本地和集群模式
    3.6.2 集群资源管理器
    3.7 小结

    展开全文
  • hadoop环境,通过mapreduce程序分析hdfs上的数据,一天的数据是按小时存储的,每一个小时一个文件价,数据格式都是一样的,现在如果在16点这个文件价里有一条数据a,如果我用mr分析一整天的数据数据a则丢失,如果...
  • HadoopSpark等大数据框架介绍

    万次阅读 多人点赞 2018-08-09 17:06:40
    但是这种方法无法充分利用多台计算机同时进行分析数据。 一个实际的需求场景:日志分析 日志分析是对日志中的每一个用户的流量进行汇总求和。对于一个日志文件,如果只有这么几行数据,我们一般会采用...

    分类目录:《大数据与云计算》总目录

    海量数据的存储问题很早就已经出现了,一些行业或者部门因为历史的积累,数据量也达到了一定的级别。很早以前,当一台电脑无法存储这么庞大的数据时,采用的解决方案是使用NFS(网络文件系统)将数据分开存储。但是这种方法无法充分利用多台计算机同时进行分析数据。

    NFS系统架构

    一个实际的需求场景:日志分析

    日志分析是对日志中的每一个用户的流量进行汇总求和。对于一个日志文件,如果只有这么几行数据,我们一般会采用这样的处理方式

    1. 读取一行日志
    2. 抽取手机号和流量字段
    3. 累加到HashMap中
    4. 遍历输出结果

    如果数据量变得很大呢,比如一个日志文件里面有几个GB数据,仍然一行一行去读,那么就会因为磁盘的IO瓶颈导致效率太低,速度太慢。如果一次性加载到内存,那么就会因为单台计算机的内存空间有限而导致内存溢出。如果将中间结果全部缓存到HashMap中,那么也会因为单台计算机的内存空间有限而导致内存溢出。可以选择采用多线程处理,但是依然无法改变资源瓶颈的现实,因为一台计算器的CPU资源,内存资源,磁盘IO瓶颈是定,创建再多的线程也无法改变这个现实。

    解决思路一:纵向扩展

    升级硬件,提高单机性能(增加内存,增强CPU、用更高性能的磁盘(如固态硬盘),比如可以购买IBM的高端服务器。这种方法简单易行,但单台计算机的扩展空间有限,CPU、内存、磁盘再怎么扩展也是有限的,无法无限扩展。除此之外,成本较高,高端服务器常常非常昂贵,几百万甚至上千万一台,一般的小公司承受不起这样高昂的成本。

    解决思路二:横向扩展:

    用多台节点分布式集群处理 ,通过增加节点数量提高处理能力,这里说的节点指的就是一台计算机。其思想为任务分摊,通过协作来实现单节点无法实现的任务,且成本相对低(可采用普通机器) 、易于线性扩展。但是其系统复杂度增加,我们要将我们的web应用部署到每一个节点上面,而多个节点协同工作时就要考虑:如何调度资源、任务如何监控、中间结果如何调度、系统如何容错、如何实现众多节点间的协调等问题。

    Hadoop

    Hadoop是一个开源的可运行于大规模集群上的分布式文件系统和运行处理基础框架。其擅长于在廉价机器搭建的集群上进行海量数据(结构化与非结构化)的存储与离线处理。Hadoop就是一门用来处理大数据的技术,就是用来解决上述提到的分布式计算里面的5个技术难题的。

    Hadoop 由 Apache Software Foundation 公司于 2005 年秋天作为 Lucene 的子 项目 Nutch 的一部分正式引入。它受到最先由 Google Lab 开发的 MapReduce 和 Google File System 的启发。2006 年 3 月份,MapReduce 和 Nutch Distributed File System (NDFS) 分别被纳入称为 Hadoop 的项目中。  Hadoop 是最受欢迎的在 Internet 上对搜索关键字进行内容分类的工具,但它也可以解决许多要求极大伸缩性的问题。例如,如果您要 grep 一个 10TB 的巨型文件,会出现什么情况?在传统的系统上,这将需要很长的时间。但是 Hadoop 在设计时就考虑到这些问题,因此能大大提高效率。

    Hadoop的生态坏境

    Hadoop是一个能够对大量数据进行分布式处理的软件框架。具有可靠、高效、可伸缩的特点。Hadoop的核心是HDFS和Mapreduce,hadoop2.0还包括YARN。
    Hadoop生态系统

    HDFS(Hadoop分布式文件系统)

    HDFS(Hadoop Distributed File System)源自于Google的GFS论文,发表于2003年10月,HDFS是GFS克隆版。是Hadoop体系中数据存储管理的基础。它是一个高度容错的系统,能检测和应对硬件故障,用于在低成本的通用硬件上运行。HDFS简化了文件的一致性模型,通过流式数据访问,提供高吞吐量应用程序数据访问功能,适合带有大型数据集的应用程序。
    Hadoop分布式文件系统

    • Client:切分文件;访问HDFS;与NameNode交互,获取文件位置信息;与DataNode交互,读取和写入数据。
    • NameNode:Master节点,在hadoop1.X中只有一个,管理HDFS的名称空间和数据块映射信息,配置副本策略,处理客户端请求。
    • DataNode:Slave节点,存储实际的数据,汇报存储信息给NameNode。
    • Secondary NameNode:辅助NameNode,分担其工作量;定期合并fsimage和fsedits,推送给NameNode;紧急情况下,可辅助恢复NameNode,但Secondary NameNode并非NameNode的热备。

    YARN(Yet Another Resource Negotiator)

    YARN是一种 Hadoop 资源管理器,它是一个通用资源管理系统,可为上层应用提供统一的资源管理和调度,它的引入为集群在利用率、资源统一管理和数据共享等方面带来了巨大好处。
    #####Hadoop YARN产生背景
    直接源于MRv1在几个方面的缺陷:

    • 扩展性受限
    • 单点故障
    • 难以支持MR之外的计算

    除此之外,多计算框架各自为战,数据共享困难。比如:MapReduce(离线计算框架)、Storm(实时计算框架)、Spark(内存计算框架)。
    #####Hadoop YARN基本架构
    Hadoop YARN各模块组成

    • ResourceManager

      • 处理客户端请求
      • 启动/监控ApplicationMaster
      • 监控NodeManager
      • 资源分配与调度
    • NodeManager

      • 单个节点上的资源管理
      • 处理来自ResourceManager的命令
      • 处理来自ApplicationMaster的命令
    • ApplicationMaster

      • 数据切分
      • 为应用程序申请资源,并分配给内部任务
      • 任务监控与容错
        Hadoop YARN运行流程分析
    Hadoop YARN调度框架

    Hadoop YARN采用双层调度框架。首先,RM将资源分配给AM。其次,AM再将资源进一步分配给各个Task。YARN与“all or nothing”策略不同(Apache Mesos),其遵循基于资源预留的调度策略,当资源不够时,会为Task预留,直到资源充足。

    Hadoop YARN调度框架

    运行在YARN上的计算框架
    • 离线计算框架:MapReduce
    • DAG计算框架:Tez
    • 流式计算框架:Storm
    • 内存计算框架:Spark
    • 图计算框架:Giraph、GraphLib

    MapReduce(分布式计算框架)

    Hadoop MapReduce是google MapReduce 克隆版。
    分布式计算框架
    MapReduce是一种计算模型,用以进行大数据量的计算。其中Map对数据集上的独立元素进行指定的操作,生成键-值对形式中间结果。Reduce则对中间结果中相同“键”的所有“值”进行规约,以得到最终结果。MapReduce这样的功能划分,非常适合在大量计算机组成的分布式并行环境里进行数据处理。

    • JobTracker:Master节点,只有一个,管理所有作业,作业/任务的监控、错误处理等;将任务分解成一系列任务,并分派给TaskTracker。
    • TaskTracker:Slave节点,运行Map Task和Reduce Task;并与JobTracker交互,汇报任务状态。
    • Map Task:解析每条数据记录,传递给用户编写的map(),并执行,将输出结果写入本地磁盘(如果为map-only作业,直接写入HDFS)。
    • Reducer Task:从Map Task的执行结果中,远程读取输入数据,对数据进行排序,将数据按照分组传递给用户编写的reduce函数执行。
      MapReduce处理流程

    Hive(基于Hadoop的数据仓库)

    Hive由facebook开源,最初用于解决海量结构化的日志数据统计问题。Hive定义了一种类似SQL的查询语言(HQL),将SQL转化为MapReduce任务在Hadoop上执行,通常用于离线分析。
    HIVE

    HBase(分布式列存数据库)

    Hbae源自Google的Bigtable论文,发表于2006年11月,HBase是Google Bigtable克隆版。HBase是一个针对结构化数据的可伸缩、高可靠、高性能、分布式和面向列的动态模式数据库。和传统关系数据库不同,HBase采用了BigTable的数据模型:增强的稀疏排序映射表(Key/Value),其中,键由行关键字、列关键字和时间戳构成。HBase提供了对大规模数据的随机、实时读写访问,同时,HBase中保存的数据可以使用MapReduce来处理,它将数据存储和并行计算完美地结合在一起。
    HBase
    HBase和Hive在大数据架构中处在不同位置,HBase主要解决实时数据查询问题,Hive主要解决数据处理和计算问题,一般是配合使用。

    Zookeeper(分布式协作服务)

    源自Google的Chubby论文,发表于2006年11月,Zookeeper是Chubby克隆版
    解决分布式环境下的数据管理问题:统一命名,状态同步,集群管理,配置同步等。

    Sqoop(数据同步工具)

    Sqoop是SQL-to-Hadoop的缩写,主要用于传统数据库和Hadoop之前传输数据。数据的导入和导出本质上是Mapreduce程序,充分利用了MR的并行化和容错性。

    Pig(基于Hadoop的数据流系统)

    由yahoo!开源,设计动机是提供一种基于MapReduce的ad-hoc(计算在query时发生)数据分析工具。其定义了一种数据流语言—Pig Latin,将脚本转换为MapReduce任务在Hadoop上执行,通常用于进行离线分析。

    Spark

    Spark是UC Berkeley AMPLab开发的是一种计算框架,分布式资源工作交由集群管理软件(Mesos、YARN) 。

    ###Spark的特点

    • 先进架构
      • Spark采用Scala语言编写,底层采用了actor model的akka作为通讯框架,代码十分简洁高效。
      • 基于DAG图的执行引擎,减少多次计算之间中间结果写到Hdfs的开销。
      • 建立在统一抽象的RDD(分布式内存抽象)之上,使得它可以以基本一致的方式应对不同的大数据处理场景。
    • 高效
      • 提供Cache机制来支持需要反复迭代的计算或者多次数据共享,减少数据读取的IO开销。
      • 与Hadoop的MapReduce相比,Spark基于内存的运算比MR要快100倍;而基于硬盘的运算也要快10倍!
    • 易用
      • Spark提供广泛的数据集操作类型(20+种),不像Hadoop只提供了Map和Reduce两种操作。
      • Spark支持Java,Python和Scala API,支持交互式的Python和Scala的shell。
    • 提供整体解决方案
      • 以其RDD模型的强大表现能力,逐渐形成了一套自己的生态圈,提供了full-stack的解决方案。
      • 主要包括Spark内存中批处理,Spark SQL交互式查询,Spark Streaming流式计算, GraphX和MLlib提供的常用图计算和机器学习算法。
    • 与Hadoop无缝连接
      • Spark可以使用YARN作为它的集群管理器
      • 读取HDFS,HBase等一切Hadoop的数据

    Spark整体架构

    Spark整体架构
    Spark提供了多种高级工具,如: Shark SQL应用于即席查询(Ad-hoc query)、Spark Streaming应用于流式计算、 MLlib应用于机器学习、GraphX应用于图处理。Spark还可以基于自带的standalone集群管理器独立运行,也可以部署在Apache Mesos 和 Hadoop YARN 等集群管理器上运行。Spark可以访问存储在HDFS、 Hbase、Cassandra、Amazon S3、本地文件系统等等上的数据,Spark支持文本文件,序列文件,以及任何Hadoop的InputFormat。

    Spark核心概念

    Spark任务提供多层分解的概念,Spark组件将用户的应用程序分解为内部执行任务并提供执行容器,资源管理为spark组件提供资源管理和调度。

    Spark任务

    • 应用程序:由一个driver program和多个job构成
    • job:由多个stage组成
    • stage:对应一个taskset
    • taskset:对应一组关联的相互之间没有shuffle依赖关系的task组成。
    • task:任务最小的工作单元
      Spark任务

    Spark组件

    • Driver Program (驱动程序) :Spark 的核心组件
      • 构建SparkContext(Spark应用的入口,它负责和整个集群的交互,创建需要的变量,还包含集群的配置信息等)
      • 将用户提交的job转换为DAG图(类似数据处理的流程图)
      • 根据策略将DAG图划分为多个stage,根据分区从而生成一系列tasks
      • 根据tasks要求向资源管理器申请资源
      • 提交任务并检测任务状态
    • Executor
      • 真正执行task的单元,一个Worker Node上可以有多个Executor

    资资源管理组件

    • YARN(通用):Master/Slave结构
      • Resource Manager(RM):全局的资源管理器,负责系统的资源管理和分配
      • Node Manager(NM):每个节点上的资源和任务管理器
      • Application Master(AM):每个应用程序都有一个,负责任务的调度和监视,并与RM调度器协商为任务获取资源。
    • Standalone(Spark自带):Master/Slave结构
      • Master:类似于YARN的RM
      • Worker:类似于YARN的NM

    Spark端到端流程

    Spark的Driver Program (简称Driver)包含用户的应用程序,Driver完成task的解析和生成。

    1. Driver向Cluster Manager(集群资源管理器)申请运行task需要的资源。
    2. 集群资源管理器为task分配满足要求的节点,并在节点按照要求创建Executor
    3. 创建的Executor向Driver注册。
    4. Driver将Spark应用程序的代码和文件传送给分配的Executor
    5. Executor运行task,运行完之后将结果返回给Driver或者写入HDFS或其他介质。
      Spark端到端流程

    Spark流程

    Spark on Standalone

    Master和Worker是Standalone的角色,Driver和Executor是Spark的角色。Master负责分配资源,分配Driver和Executor,让Worker启动Driver和Executor,只管理到Executor层,不涉及任务。Driver负责生成task,并与Executor通信,进行任务的调度和结果跟踪,不涉及资源。

    Driver运行在Worker

    Driver运行在Worker

    1. 客户端把作业发布到Master
    2. Master让一个Worker启动Driver,并将作业推送给Driver
    3. Driver进程生成一系列task
    4. Driver向Master申请资源
    5. Master让调度的Worker启动Exeuctor
    6. Exeuctor启动后向Driver注册。
    7. Driver将task调度到Exeuctor执行。
    8. Executor执行结果写入文件或返回Driver
    Driver运行在Client

    Driver运行在Client

    1. 客户端启动后直接运行用户程序,启动Driver
    2. Driver进程生成一系列task
    3. Driver向Master申请资源
    4. Master让调度的Worker启动Exeuctor
    5. Exeuctor启动后向Driver注册。
    6. Driver将task调度到Exeuctor执行。
    7. Executor执行结果写入文件或返回Driver

    Spark的核心组件

    Spark的核心组件
    Spark的核心组件包括RDD、Scheduler、Storage、Shuffle四部分:

    • RDD是Spark最核心最精髓的部分,Spark将所有数据都抽象成RDD。
    • Scheduler是Spark的调度机制,分为DAGScheduler和TaskScheduler。
    • Storage模块主要管理缓存后的RDD、shuffle中间结果数据和broadcast数据
    • Shuffle分为Hash方式和Sort方式,两种方式的shuffle中间数据都写本地盘

    RDD(Resilient Distributed Datasets)

    RDD是弹性分布式数据集,是只读的分区记录集合。每个RDD有5个主要的属性:

    • 一组分片(Partition):数据集的最基本组成单位
    • 一个计算每个分片的函数:对于给定的数据集,需要做哪些计算
    • 依赖(Dependencies):RDD的依赖关系,描述了RDD之间的lineage
    • preferredLocations(可选):对于data partition的位置偏好
    • partitioner(可选):对于计算出来的数据结果如何分发

    作用于RDD上的Operation分为转换(transformantion)和动作(action)。 Spark中的所有“转换”都是惰性的,在执行“转换”操作,并不会提交Job,只有在执行“动作”操作,所有operation才会被提交到cluster中真正的被执行。这样可以大大提升系统的性能。

    • 转换:从现有的数据集创建一个新的数据集即数据集中的内容会发生更改,由数据集A转换成为数据集B
    • 动作:在数据集上运行计算后,返回一个值给驱动程序。 即数据集中的内容会被归约为一个具体的数值(Scala标量、集合类型的数据或存储)。

    RDD拥有的操作比MR丰富的多,不仅仅包括Map、Reduce操作,还包括右图的filter、sort、join、save、count等操作,所以Spark比MR更容易方便完成更复杂的任务。

    RDD持久化

    默认情况下,每一个转换过的RDD都会在它之上执行一个动作时被重新计算。如果RDD只被使用一次或者很少次,不需要持久化。如果RDD被重复使用或者计算其代价很高,才考虑持久化。另外,shuffle后生成的RDD尽量持久化,因为shuffle代价太高。RDD被缓存后,Spark将会在集群中,保存相关元数据,下次查询这个RDD时,它将能更快速访问,不需要计算。如果持久化无谓的RDD,会浪费内存(或硬盘)空间,反而降低系统整体性能

    RDD依赖关系

    RDD只能基于在稳定物理存储中的数据集和其他已有的RDD上执行确定性操作来创建。能从其他RDD通过确定操作创建新的RDD的原因是RDD含有从其他RDD衍生(即计算)出本RDD的相关信息(即Lineage)。Dependency代表了RDD之间的依赖关系,即血缘(Lineage),分为窄依赖和宽依赖:
    窄依赖和宽依赖

    • 窄依赖:一个父RDD最多被一个子RDD用在一个集群节点上管道式执行。比如map、filter、union等
    • 宽依赖:子RDD的分区依赖于父RDD的所有分区,这是因为shuffle类操作要求所有父分区可用。比如groupByKey、reduceByKey、 sort、partitionBy等

    根据RDD依赖关系的不同,Spark将每一个job分为不同的stage,stage之间的依赖关系形成了DAG图。对于窄依赖,Spark将其尽量划分在同一个stage中,因为它们可以进行流水线计算,而宽依赖往往意味着shuffle操作,这也是Spark划分stage的主要边界。
    RDD依赖关系
    宽/窄依赖的概念不止用在stage划分中,对容错也很有用。若Transformation操作中间发生计算失败,如果运算是窄依赖,只要把丢失的父RDD分区重算即可,跟其他节点没有依赖,这样可以大大加快场景恢复的开销,但如果运算是宽依赖,则需要父RDD的所有分区都存在, 重算代价就较高。当Lineage特别长时或者有宽依赖时,主动调用 checkpoint把当前数据写入稳定存储,作为检查点。

    Scheduler

    Scheduler模块作为Spark最核心的模块之一,充分体现了Spark与MapReduce的不同之处,体现了Spark DAG思想的精巧和设计的优雅。Scheduler模块分为两大主要部分,DAGScheduler和TaskScheduler。
    Scheduler
    DAGScheduler把一个spark作业转换成成stage的DAG(Directed Acyclic Graph有向无环图),根据RDD和stage之间的关系,找出开销最小的调度方法,然后把stage以TaskSet的形式提交给TaskScheduler。TaskScheduler模块用于与DAGScheduler交互,负责任务的具体调度和运行。任务调度模块基于两个Trait:TaskScheduler和 SchedulerBackend。

    Storage

    Storage模块主要分为两层:

    • 通信层:Storage模块采用的是master-slave结构来实现通信层,master和slave之间传输控制信息、状态信息,这些都是通过通信层来实现的。
    • 存储层:Storage模块需要把数据存储到disk或是memory上面,有可能还需replicate到远端,这都是由存储层来实现和提供相应接口。

    Storage模块提供了统一的操作类BlockManager,外部类与storage模块打交道都需要通过调用BlockManager相应接口来实现。Storage模块存取的最小单位是数据块(Block),Block与RDD中的Partition一一对应,所以所有的转换或动作操作最终都是对Block进行操作。

    Shuffle

    Shuffle 中Map任务产生的结果会根据所设置的partitioner算法填充到当前执行任务所在机器的每个桶中。Reduce任务启动时时,会根据任务的ID,所依赖的Map任务ID以及MapStatus从远端或本地的BlockManager获取相应的数据作为输入进行处理。Shuffle数据必须持久化磁盘,不能缓存在内存。

    Spark之上提供了四种应用库:

    • Spark SQL 是为处理结构化数据而设计的模块
    • Spark Streaming 可以很容易地创建可扩展和容错性的流式应用
    • MLlib 是Spark的可扩展机器学习库
    • GraphX 是Spark的并行图计算API

    Spark应用库

    以上便是对Hadoop、Spark的一些浅显的介绍。事实上,解决大数据处理相关的问题,往往要经过数据收集(Flume、Kafka、Sqoop)、数据存储(HDFS、HBase)、资源管理(YARN)、计算(MapReduce、Spark)、数据分析(Pandas、NumPy、R)、数据可视化(Echart、Tableau)等环节。各个环节都有其相应的工具,Hadoop和Spark就是大数据处理流程中非常常用的两个框架。

    展开全文
  • 中文版,一共3卷,第3卷。了解spark技术内幕 了解spark技术内幕
  • Hadoop Spark Flink 比较

    2019-12-20 20:57:22
    1. Hadoop vs Spark vs Flink - 数据处理 Hadoop:Apache Hadoop专为批处理而构建。它需要输入中的大数据集,同时处理它并产生结果。批处理在处理大量数据时非常有效。由于数据的大小和系统的计算能力,输出会产生...

    1. Hadoop vs Spark vs Flink  - 数据处理

    Hadoop:Apache Hadoop专为批处理而构建。它需要输入中的大数据集,同时处理它并产生结果。批处理在处理大量数据时非常有效。由于数据的大小和系统的计算能力,输出会产生延迟。

    Spark:Apache Spark也是Hadoop Ecosystem的一部分。它也是一个批量处理系统,但它也支持流处理。

    Flink:Apache Flink为流和批处理提供单个运行时。

     

    2. Hadoop vs Spark vs Flink  -  Streaming Engine

    Hadoop:Map-reduce是面向批处理的处理工具。它需要输入中的大数据集,同时处理它并产生结果。

    Spark:Apache Spark Streaming以微批处理数据流。每批包含在批处理期间到达的事件的集合。但对于我们需要处理大量实时数据并实时提供结果的用例来说,这还不够。

    Flink:Apache Flink是真正的流媒体引擎。它使用流来处理工作负载:流,SQL,微批和批处理。 Batch是一组有限的流数据。

     

    3. Hadoop vs Spark vs Flink  - 数据流

    Hadoop:MapReduce计算数据流没有任何循环。这是一个阶段链。在每个阶段,使用前一阶段的输出向前进展并为下一阶段生成输入。

    Spark:虽然机器学习算法是循环数据流,但Spark将其表示为(DAG)直接非循环图。

    Flink:Flink采用与其他方法不同的方法。它支持运行时的受控循环依赖图。这有助于以非常有效的方式表示机器学习算法。

     

    4. Hadoop vs Spark vs Flink  - 计算模型

    Hadoop:MapReduce采用了面向批处理的模型。批处理正在处理静态数据。它一次需要大量数据,处理它然后写出输出。

    Spark:Spark采用微批量生产。微批是一种基本上“收集然后处理”的计算模型。

    Flink:Flink采用了连续流,基于算子的流模型。连续流算子在数据到达时处理数据,没有任何延迟收集数据或处理数据。

     

    5. Hadoop vs Spark vs Flink  - 性能

    Hadoop:Apache Hadoop仅支持批处理。它不处理流数据,因此与Hadoop和Spark vs Flink相比,性能更慢。

    Spark:虽然Apache Spark拥有出色的社区背景,但现在它被认为是最成熟的社区。但它的流处理效率不如Apache Flink,因为它使用微批处理。

    Flink:与其他任何数据处理系统相比,Apache Flink的性能非常出色。 Apache Flink使用本机闭环迭代运算符,当我们比较Hadoop与Spark vs Flink时,它们使机器学习和图形处理更快。

     

    6. Hadoop vs Spark vs Flink  - 内存管理

    Hadoop:它提供可配置的内存管理。可以动态或静态地执行此操作。

    Spark:它提供可配置的内存管理。 Spark 1.6的最新版本已经转向自动化内存管理。

    Flink:它提供自动内存管理。它有自己的内存管理系统,与Java的垃圾收集器分开。

     

    7. Hadoop vs Spark vs Flink  - 容错

    Hadoop:MapReduce具有高度容错能力。如果Hadoop出现任何故障,则无需从头开始重新启动应用程序。

    Spark:Apache Spark Streaming恢复丢失的工作,没有额外的代码或配置,它提供了一次性的语义。阅读有关Spark Fault Tolerance的更多信息。

    Flink:Apache Flink遵循的容错机制基于Chandy-Lamport分布式快照。该机制重量轻,可以保持高吞吐率并同时提供强大的一致性保证。

     

    8. Hadoop vs Spark vs Flink  - 可伸缩性

    Hadoop:MapReduce具有令人难以置信的可扩展性潜力,并已在数万个节点的生产中使用。

    Spark:它具有高度可扩展性,我们可以在群集中不断添加n个节点。一个大的已知sSpark集群有8000个节点。

    Flink:Apache Flink也具有高度可扩展性,我们可以在群集中不断添加n个节点大型已知的Flink群集拥有数千个节点。

     

    9. Hadoop vs Spark vs Flink  - 迭代处理

    Hadoop:它不支持迭代处理。

    Spark:它分批迭代其数据。在Spark中,每个迭代都必须单独调度和执行。

    Flink:它使用流式架构迭代数据。可以指示Flink仅处理实际已更改的数据部分,从而显着提高作业的性能。

     

    10. Hadoop vs Spark vs Flink  - 语言支持

    Hadoop:它主要支持Java,支持的其他语言有c,c ++,ruby,groovy,Perl,Python。

    Spark:它支持Java,Scala,Python和R. Spark在Scala中实现。它提供其他语言的API,如Java,Python和R.

    Flink:它支持Java,Scala,Python和R.Flink是用Java、Scala实现的。

     

    11. Hadoop vs Spark vs Flink  - 优化

    Hadoop:在MapReduce中,必须手动优化作业。有几种方法可以优化MapReduce作业:正确配置集群,使用组合器,使用LZO压缩,适当调整MapReduce任务的数量,并为数据使用最合适和紧凑的可写类型。

    Spark:在Apache Spark中,必须手动优化作业。有一个新的可扩展优化器Catalyst,它基于Scala中的函数编程构造。 Catalyst的可扩展设计有两个目的:第一,易于添加新的优化技术。其次,使外部开发人员能够扩展优化器催化剂。

    Flink:Apache Flink附带一个独立于实际编程接口的优化器。 Flink优化器与关系数据库优化器的工作方式类似,但将这些优化应用于Flink程序,而不是SQL查询。

     

    12. Hadoop vs Spark vs Flink  -  Latency

    Hadoop:Hadoop的MapReduce框架相对较慢,因为它旨在支持不同的格式,结构和大量数据。这就是为什么Hadoop比Spark和Flink都具有更高的延迟。

    Spark:Apache Spark是另一个批处理系统,但它比Hadoop MapReduce快,因为它通过RDD将大部分输入数据缓存在内存中,并将中间数据保存在内存中,最终在完成时或在需要时将数据写入磁盘。

    Flink:Apache Flink的数据流运行时只需很少的配置,就可以实现低延迟和高吞吐量。

     

    13. Hadoop vs Spark vs Flink  - 处理速度

    Hadoop:MapReduce进程比Spark和Flink慢。这种缓慢的发生只是因为基于MapReduce的执行的性质,它产生了大量的中间数据,节点之间交换了大量数据,从而导致巨大的磁盘IO延迟。此外,它必须在磁盘中保留大量数据以便在阶段之间进行同步,以便它可以支持从故障中恢复作业。此外,MapReduce中没有办法将所有数据子集缓存在内存中。

    Spark:Apache Spark比MapReduce处理得更快,因为它通过RDD将大部分输入数据缓存在内存中,并将中间数据保存在内存中,最终在完成时或在需要时将数据写入磁盘。 Spark比MapReduce快100倍,这表明Spark比Hadoop MapReduce更好。

    Flink:由于其流式架构,它的处理速度比Spark快。 Flink通过指示仅处理实际已更改的部分数据来提高作业的性能。

     

    14. Hadoop vs Spark vs Flink  - 可视化

    Hadoop:在Hadoop中,数据可视化工具是zoomdata,可以直接连接到HDFS以及Impala,Hive,Spark SQL,Presto等SQL-on-Hadoop技术。

    Spark:它提供了一个Web界面,用于提交和执行可以显示生成的执行计划的作业。 Flink和Spark都集成到Apache zeppelin它提供数据分析,摄取,以及发现,可视化和协作。

    Flink:它还提供用于提交和执行作业的Web界面。生成的执行计划可以在此界面上显示。

     

    15. Hadoop vs Spark vs Flink  - 恢复

    Hadoop:MapReduce对系统故障或故障自然具有弹性。它是高度容错的系统。

    Spark:Apache Spark RDD允许通过重新计算DAG来恢复故障节点上的分区,同时通过检查点支持与Hadoop更相似的恢复样式,以减少RDD的依赖性。

    Flink:它支持将程序存储在数据源和数据接收器中的检查点机制,窗口状态,以及在故障后恢复流式传输作业的用户定义状态。

     

    16. Hadoop vs Spark vs Flink  - 安全

    Hadoop:它支持Kerberos身份验证,这有点难以管理。但是,第三方供应商已使组织能够利用Active Directory Kerberos和LDAP进行身份验证。

    Spark:Apache Spark的安全性有点稀疏,目前只支持通过共享密钥进行身份验证(密码身份验证)。 Spark可以享受的安全奖励是,如果您在HDFS上运行Spark,它可以使用HDFS ACL和文件级权限。此外,Spark可以在YARN上运行以使用Kerberos身份验证。

    Flink:Flink通过Hadoop / Kerberos基础架构提供用户身份验证支持。如果您在YARN上运行Flink,Flink将获取提交程序的用户的Kerberos令牌,并使用该证书在YARN,HDFS和HBase上进行身份验证.Flink即将推出的连接器,流程序可以通过SSL将自身身份验证为流代理。

     

    17. Hadoop vs Spark vs Flink  - 成本

    Hadoop:MapReduce通常可以在比一些替代品更便宜的硬件上运行,因为它不会尝试将所有内容存储在内存中。

    Spark:由于spark需要大量RAM才能在内存中运行,因此在群集中增加它会逐渐增加其成本。

    Flink:Apache Flink还需要大量的RAM才能在内存中运行,因此会逐渐增加成本。

     

    18. Hadoop vs Spark vs Flink  - 兼容性

    Hadoop:Apache Hadoop MapReduce和Apache Spark相互兼容,Spark通过JDBC和ODBC共享所有MapReduce对数据源,文件格式和商业智能工具的兼容性。

    Spark:Apache Spark和Hadoop彼此兼容。 Spark与Hadoop数据兼容。它可以通过YARN或Spark的独立模式在Hadoop集群中运行,它可以处理HDFS,HBase,Cassandra,Hive和任何Hadoop InputFormat中的数据。

    Flink:Apache Flink是一个可扩展的数据分析框架,与Hadoop完全兼容。它提供了一个Hadoop兼容包,用于包装针对Hadoop的MapReduce接口实现的功能,并将它们嵌入到Flink程序中。

     

    19. Hadoop vs Spark vs Flink  - 抽象

    Hadoop:在MapReduce中,我们没有任何类型的抽象。

    Spark:在Spark中,对于批处理,我们有Spark RDD抽象和DStream用于流式传输,这是内部RDD本身。

    Flink:在Flink中,我们为流应用程序提供批量和DataStream的数据集抽象。

     

    20. Hadoop vs Spark vs Flink  - 易于使用

    Hadoop:MapReduce开发人员需要手动编写每个操作的代码,这使得它很难工作。

    Spark:它很容易编程,因为它有大量的高级操作员。

    Flink:它还拥有高级运营商。

     

    21. Hadoop vs Spark vs Flink  - 交互模式

    Hadoop:MapReduce没有交互模式。

    Spark:Apache Spark有一个交互式shell,可以学习如何充分利用Apache Spark。这是一个用Scala编写的Spark应用程序,它提供了一个具有自动完成功能的命令行环境,您可以在其中运行即席查询并熟悉Spark的功能。

    Flink:它带有一个集成的交互式Scala Shell。它可以在本地设置和群集设置中使用。

     

    22. Hadoop vs Spark vs Flink  - 实时分析

    Hadoop:MapReduce在实时数据处理方面失败,因为它旨在对大量数据执行批处理。

    Spark:它可以处理实时数据,即来自实时事件流的数据,速率为每秒数百万个事件。

    Flink:它主要用于实时数据分析虽然它还提供快速批量数据处理。

     

    23. Hadoop vs Spark vs Flink  -  Scheduler

    Hadoop:Hadoop中的Scheduler成为可插拔组件。有两个用于多用户工作负载的调度程序:Fair Scheduler和Capacity Scheduler。为了安排复杂的流程,MapReduce需要像Oozie这样的外部作业调度程序。

    Spark:由于内存计算,spark会运行自己的流调度程序。

    Flink:Flink可以使用YARN Scheduler,但Flink也有自己的Scheduler。

     

    24. Hadoop vs Spark vs Flink  -  SQL支持

    Hadoop:它使用户能够使用Apache Hive运行SQL查询。

    Spark:它使用户能够使用Spark-SQL运行SQL查询。 Spark提供了像查询语言这样的Hives和像DSL这样的Dataframe来查询结构化数据。

    Flink:在Flink中,Table API是一种类似于SQL的表达式语言,它支持DSL之类的数据帧,并且它仍处于测试阶段。有计划添加SQL接口但不确定何时它将落在框架中。

     

    25. Hadoop vs Spark vs Flink  - 缓存

    Hadoop:MapReduce无法将数据缓存在内存中以满足未来的需求

    Spark:它可以将数据缓存在内存中以进行进一步的迭代,从而提高其性能。

    Flink:它可以将数据缓存在内存中以进行进一步的迭代,以提高其性能。

     

    26. Hadoop vs Spark vs Flink  - 硬件要求

    Hadoop:MapReduce在Commodity Hardware上运行良好。

    Spark:Apache Spark需要中高级硬件。由于Spark缓存数据在内存中进行进一步的迭代,从而提高了性能。

    Flink:Apache Flink还需要中高级硬件。 Flink还可以将数据缓存在内存中,以进行进一步的迭代,从而提高其性能。

     

    27. Hadoop vs Spark vs Flink  - 机器学习

    Hadoop:它需要像Apache Mahout这样的机器学习工具。

    Spark:它有自己的一套机器学习MLlib。在内存缓存和其他实现细节中,它是实现ML算法的强大平台。

    Flink:它有FlinkML,它是Flink的机器学习库。它支持运行时的受控循环依赖图。这使得它们与DAG表示相比以非常有效的方式表示ML算法。

     

    28. Hadoop vs Spark vs Flink  - 代码行

    Hadoop:Hadoop 2.0有1,20,000行代码。更多的行不会产生更多的错误,执行程序将花费很多时间。

    Spark:Apache Spark仅用20000行代码开发。代码行的数量小于Hadoop。因此执行程序所需的时间更少。

    Flink:Flink是用scala和java开发的,所以没有。代码行的数量小于Hadoop。因此,执行程序所需的时间也会减少。

     

    29. Hadoop vs Spark vs Flink  - 高可用性

    高可用性是指长时间运行的系统或组件。

    Hadoop:可在高可用性模式下配置。

    Spark:可在高可用性模式下配置。

    Flink:可在高可用性模式下配置。

     

    30. Hadoop vs Spark vs Flink  -  Amazon S3连接器

    Amazon Simple Storage Service(Amazon S3)是一个对象存储,具有简单的Web服务接口,可以从Web上的任何位置存储和检索任意数量的数据。

    Hadoop:为Amazon S3 Connector提供支持。

    Spark:为Amazon S3 Connector提供支持。

    Flink:为Amazon S3连接器提供支持。

     

    31. Hadoop vs Spark vs Flink  - 部署

    Hadoop:在独立模式下,Hadoop配置为以单节点非分布式模式运行。在伪分布式模式下,Hadoop以伪分布式模式运行。因此,不同之处在于每个Hadoop守护程序都以伪分布式模式在单独的Java进程中运行。而在本地模式下,每个Hadoop守护程序都作为单个Java进程运行。在完全分布式模式下,所有守护进程在单独的节点中执行,形成多节点集群。

    Spark:它还提供了一个简单的独立部署模式,可以在Mesos或YARN集群管理器上运行。它可以手动启动,通过手动启动主人和工作人员或使用我们提供的启动脚本。也可以在一台机器上运行这些守护进程进行测试。

    Flink:它还提供独立部署模式,以便在YARN集群管理器上运行。

     

    32. Hadoop vs Spark vs Flink  -  Back pressure Handing

    BackPressure是指缓冲区已满且无法接收更多数据时I / O开关上的数据累积。在数据瓶颈消除或缓冲区为空之前,不再传输数据包。

    Hadoop:它通过手动配置处理背压。

    Spark:它还通过手动配置处理背压。

    Flink:它通过系统架构隐式处理背压。

     

    33. Hadoop vs Spark vs Flink  - 删除重复

    Hadoop:Hadoop中没有重复消除。

    Spark:Spark还可以精确处理每个记录一次,从而消除重复。

    Flink:Apache Flink完全处理每个记录一次,因此消除了重复。流应用程序可以在计算期间维护自定义状态。 Flink的检查点机制确保在出现故障时状态的语义完全一次。

     

    34. Hadoop vs Spark vs Flink  -  窗口标准

    需要将数据流分组为许多逻辑流,每个逻辑流可以应用窗口运算符。

    Hadoop:它不支持流式传输,因此不需要窗口标准。

    Spark:它具有基于时间的窗口标准。

    Flink:它具有基于记录或任何自定义用户定义的Flink窗口标准。

     

    35. Hadoop vs Spark vs Flink  -  Apache许可证

    Apache许可证2.0版(ALv2)是由Apache Software Foundation(ASF)编写的许可免费软件许可证。 Apache许可证要求保护版权声明和免责声明。

    Hadoop:Apache许可证2。

    Spark:Apache许可证2。

    Flink:Apache许可证2。

    因此,这就是Hadoop与Spark vs Flink的前3大数据技术之间的比较。

    展开全文
  • 本文来自于linkedkeeper.com,本文主要介绍了一下kafka的基本概念,并结合一些实验帮助理解kafka中的...目前主流的三大分布式计算系统分别为:HadoopSpark和Strom:Hadoop当前大数据管理标准之一,运用在当前很多商业应
  • 但是在目前很多招数据分析师、工程师等都需要有hadoop spark storm的专长 对我来说vb.net 或C#是可以用来接结数据库的 而mysql、mssql、access就是数据库 我不是计算机专业出身,请不要用难懂的方式来说明 问题1...
  • hadoopspark数据处理与案例分析.docx
  • 针对目前缺少大型数据分析框架间的横向比较问题,使用有代表性的大数据工作负载,对HadoopSpark和Flink进行性能和可扩展性等因素的比较评价。此外,通过调整工作负载的一些主要参数,例如HDFS块大小、输入数据大小、...
  • :博主是正在学习数据分析的一员,博客记录的是在学习过程中一些总结,也希望和大家一起进步,在记录之时,未免存在很多疏漏和不全,如有问题,还请私聊博主指正。 博客地址:天阑之蓝的博客,学习过程中不免有困难...

    阅读之前看这里👉:博主是正在学习数据分析的一员,博客记录的是在学习过程中一些总结,也希望和大家一起进步,在记录之时,未免存在很多疏漏和不全,如有问题,还请私聊博主指正。
    博客地址:天阑之蓝的博客,学习过程中不免有困难和迷茫,希望大家都能在这学习的过程中肯定自己,超越自己,最终创造自己。

    Hadoop简介

    Hive是基于Hadoop的数据仓库管理工具,可以将结构化的数据文件映射为一个数据库表,并提供SQL查询功能,这种查询功能就是Hive SQL

    Hadoop是现在各大公司用得比较多的一种数据存储和计算架构系统,由Apache基金会开发,它可以使用户在不了解分布式底层细节的情况下开发分布式程序,充分利用集群的威力进行高速计算和存储。

    特点:Hadoop是一个能够对大量数据进行分布式处理的软件框架。具有可靠、高效、可伸缩的特点

    Hadoop主要解决了两大问题:
    大数据存储和大数据分析。这两个问题的解决分布依赖HDFS和MapReduce。
    在这里插入图片描述

    • HDFS(Hadoop Distibuted FileSystem)是可扩展的、容错的、高性能的分布式文件系统,异步复制,一次写入、多次读取,主要负责存储。
      HDFS以流式数据访问模式来存储超大文件,运行于商用集群上。
      HDFS上的文件被划分为块大小的多个分块,作为独立的存储单元。

    • MapReduce是分布式计算框架,包含Map(映射)和Reduce(归约)过程,负责在HDFS上进行计算。

    • YARN(作业调度和集群资源管理的框架)
      :负责海量数据运算时的资源调度,不同计算框架可以共享同一个HDFS集群上的数据,享受整体的资源调度

    Hive SQL 相当于将SQL语句转换成对应的JAVA语句来实现Map和Reduce过程。

    目前通用的方法是在Hadoop中通过Hive SQL对原始数据集进行处理,尽量在Hive中完成大数据量的计算,之后将处理好的数据通过出仓的方式导入MySQL中。这样Mysql中的数据就是在原始数据的基础上进行加工得到的数据,前端进行调用时,可以直接获取或者进行非常简单的计算。

    Hadoop的优点

    1.Hadoop(扩容能力):在可用的计算机集群间分配数据并完成计算任务

    2.Hadoop(成本低):通过可用的计算机集群分配数据,完成存储和计算任务,这些集群可以方便地扩展到数以千计的节点中,具有高扩展性。

    3.Hadoop(高效率):能够在节点之间进行动态地移动数据,并保证各个节点的动态平衡,处理速度非常快,具有高效性。

    4.Hadoop(可靠性):能够自动保存数据的多个副本,并且能够自动将失败的任务重新分配,具有高容错性。

    Spark

    Spark也是Apache基金会的开源项目,它由加州大学伯克利分校的实验室开发,是另外一种重要的分布式计算系统。它在Hadoop的基础上进行了一些架构上的改良。Spark与Hadoop最大的不同点在于,Hadoop使用硬盘来存储数据,而Spark使用内存来存储数据,因此Spark可以提供超过Hadoop100倍的运算速度。但是,由于内存断电后会丢失数据,Spark不能用于处理需要长期保存的数据。

    Spark是一个弹性的分布式运算框架,作为一个用途广泛的大数据运算平台,Spark允许用户将数据加载到cluster集群的内存中储存,并多次重复运算,非常适合用于机器学习算法。

    Spark的核心是RDD(Resilient Distributed Dataset)弹性分布式数据集,RDD能与其他系统兼容,也可以导入外部储存系统的数据集,例如HDFS、HBase或其他Hadoop数据源。

    Spark在运算时,将中间产生的数据暂存在内存中,因此可以加快运行速度,Spark在内存中运行命令比Hapdoop MapReduce命令运行速度快100倍(硬盘上快10倍)。

    Spark数据处理的方式主要有3种:RDD、DataFrame、Spark SQL

    Spark特点

    快,相比于mapreduce
    易于使用,spark 支持Java,scala,python和r语言的开发等
    通用性:spark核心项目构成要素:RDD, spark SQL, Spark Streaming, MLlib
    完美的兼容其他开源产品,例如hadoop

    —————————————————————————————————————————————————
    博主码字不易,大家关注点个赞转发再走呗 ,您的三连是激发我创作的源动力^ - ^
    在这里插入图片描述

    展开全文
  • 大数据,无论是从产业上,还是从技术上来看,都是...推荐两大应用最广泛、国人认知最多的Apache开源大数据框架系统:spark Hadoop   Spark:速度快、易于使用 Spark以性能见长,但是它也因易用性而小有名气,原
  • 基于Hadoop平台的Spark数据推荐算法分析与应用.pdf
  • 在启动Hadoop集群之前我们需要生效系统的环境变量 # source /etc/profile 在HadoopMaster成功启动集群后在终端执行jps命令在打印结果中会看到集群中运行的进程这些进程表示主节点进程启动成功 # jps;Hadoop平台搭建;...
  • 第一章、 Hadoop部署与实践 1 准备工作 准备工作包括5个步骤。经过这五个步骤之后使得案例中的3台主机实现互通。以下是准备工作。 1.1 设置静态IP 为了避免影响集群的额稳定性。 E.G. 虚拟机 用户名 密码...
  • hadoop工程师主要是偏开发层面,指的是围绕大数据系平台系统级的研发人员, 熟练Hadoop大数据平台的核心框架,能够使用Hadoop提供的通用算法, 熟练掌握Hadoop整个生态系统的组件如:Yarn,HBase、Hive、Pig等重要...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 52,458
精华内容 20,983
热门标签
关键字:

hadoopspark数据分析