• Spark和Hadoop的对比


    一、二者各方面比较

    Hadoop

    Spark

    类型

    基础平台,包含计算、存储、调度

    分布式计算工具

    场景

    大规模数据集上的批处理

    迭代计算,交互式计算,流计算

    价格

    对机器要求低,便宜

    对内存有要求,相对较贵

    编程范式

    Map+Reduce,API较为底层,算法适应性差

    RDD组成DAG有向无环图,API较为顶层,方便使用

    数据存储结构

    MapReduce中间计算结果在HDFS磁盘上,延迟大

    RDD中间运算结果在内存中,延迟小

    运行方式

    Task以进程方式维护,任务启动慢

    Task以线程方式维护,任务启动快

    二、Spark不能完全替代Hadoop的原因

    • Spark主要用于替代Hadoop中的MapReduce计算模型。存储依然可以使用HDFS,但是中间结果可以存放在内存中;
    • Spark已经很好地融入了Hadoop生态圈,并成为其中的重要一员,它可以借助于YARN实现资源调度管理,借助于HDFS实现分布式存储。

    三、Hadoop基于进程计算和Spark基于线程计算的优缺点

    Hadoop中的MR中每个map/reduce task都是一个java进程方式运行,好处在于进程之间是互相独立的,每个task独享进程资源,没有互相干扰,监控方便,但是问题在于task之间不方便共享数据,执行效率比较低。比如多个map task读取不同数据源文件需要将数据源加载到每个map task中,造成重复加载和浪费内存。而基于线程的方式计算是为了数据共享和提高执行效率,Spark采用了线程的最小的执行单位,但缺点是线程之间会有资源竞争。

    四、Spark处理数据与MapReduce处理数据的不同点

    1. Spark处理数据时,可以将中间处理结果数据存储到内存中
    2. Spark Job调度以DAG方式,并且每个任务Task执行以线程(Thread)方式,并不是像MapReduce以进程(Process)方式执行
  • 相关阅读:
    浅谈消防设备电源监控系统在高层民用建筑内的应用
    初步理解SpringBoot如何实现自动装配
    学习pytorch7 神经网络的基本骨架--nn,module的使用
    【Java编程进阶之路--程序流程】
    Netty学习日记一:三大组件
    【Java】JVM内存回收
    如何学习Python技术?自学Python需要多久?
    Linux下的stratis高级存储
    前端版本更新提示
    页面标题组件
  • 原文地址:https://blog.csdn.net/m0_67394006/article/details/126496567