Hadoop中常见的调度器有三种,分别为:
FIFO调度器、公平调度器Fair Scheduler、容量调度器Capacity Scheduler(计算能力调度器)
作用是将系统中空闲的资源按一定策略分配给作业。在Hadoop中,调度器是一个可插拔的模块,用户可以根据自己的实际应用要求设计调度器。
考虑因素:
hadoop调度器概念及区别_小学僧来啦的博客-CSDN博客
适合一次写入,多次读出的场景。一个文件经过创建、写入和关闭 之后就不需要改变
数据块
HDSF 数据块
HDFS中的文件在物理上是分块存储(Block),块的大小可以通过配置参数 ( dfs.blocksize)来规定,默认大小在Hadoop2.x/3.x版本中是128M,1.x版本中是64M。
块大小设置原则:最小化寻址开销,减少网络传输
寻址时间:HDFS中找到目标文件块(block)所需要的时间。
原理:
文件块越大,寻址时间越短,但磁盘传输时间越长;
文件块越小,寻址时间越长,但磁盘传输时间越短。
HDFS详解 - 哔哩哔哩
Spark,是分布式计算平台,是一个用scala语言编写的计算框架,基于内存的快速、通用、可扩展的大数据分析引擎。
Hadoop,是分布式管理、存储、计算的生态系统;包括HDFS(存储)、MapReduce(计算)、Yarn(资源调度)。
尽管Hadoop具有许多重要的功能和数据处理优势,但它仍存在一个主要缺点。Hadoop的本地批处理引擎MapReduce不如Spark快。
这就是Spark超越Hadoop的优势。除此之外,当今大多数大数据项目都需要批处理工作负载以及实时数据处理。Hadoop的MapReduce并不适合它,只能处理批处理数据。
此外,当需要低延迟处理大量数据时,MapReduce无法做到这一点。因此,我们需要在Hadoop之上运行Spark。借助其混合框架和弹性分布式数据集(RDD),可以在运行Spark时将数据透明地存储在内存中。
Spark和Hadoop更好地结合在一起Hadoop对于运行Spark并不是必不可少的。如果查看Spark文档,则提到如果以Standalone(独立模式)运行Spark,则不需要Hadoop。
在这种情况下,您仅需要Mesos之类的资源管理器。此外,只要您不需要Hadoop生态系统中的任何库,就可以在没有Hadoop的情况下运行Spark,并在具有Mesos的Hadoop群集上独立运行。
HDFS只是Spark支持的文件系统之一,而不是最终答案。 Spark是集群计算系统,而不是数据存储系统。运行数据处理所需的全部就是一些外部数据存储源来存储和读取数据。
它可能是您桌面上的本地文件系统。此外,除非您在HDFS中使用任何文件路径,否则无需运行HDFS。但是,Spark On Yarn 必须要运行HDFS,因为会使用HDFS存储临时文件。
Hadoop和Spark不是互斥的,可以一起工作。没有Spark,就不可能在Hadoop中进行实时,快速的数据处理。另一方面,Spark没有用于分布式存储的任何文件系统。
但是,许多大数据项目需要处理数PB的数据,这些数据需要存储在分布式存储中。因此,在这种情况下,Hadoop的分布式文件系统(HDFS)与资源管理器YARN一起使用。
因此,如果使用HDFS在分布式模式下运行Spark,则可以通过连接集群中的所有项目来获得最大的收益。因此,HDFS是Hadoop在分布式模式下运行Spark的主要需求。
因此, 我们得出结论, 我们可以在没有Hadoop的情况下运行Spark 。但是,如果我们在HDFS或类似文件系统上运行Spark,则可以实现数据处理的最大利益。而且,Spark和Hadoop都是开源的,由Apache维护。因此它们彼此兼容。此外,使用第三方文件系统解决方案设置Spark可能会很复杂。
因此,很容易将Spark与Hadoop集成,在Hadoop之上运行Spark是最好的解决方案。
有三种在Hadoop集群中部署和运行Spark的方法。
这是最简单的部署模式。在独立模式下,资源静态分配在Hadoop集群中所有或部分节点上。但是,您可以与MapReduce并行运行Spark。这是Hadoop 1.x的首选部署选择。 在这种模式下,Spark管理其集群。
没有预安装,或者在这种部署模式下需要管理员访问权限。因此,这是Hadoop和Spark之间集成的简便方法。这是确保安全性的唯一集群管理器。对于生产环境中的大型Hadoop集群而言,这是更好的选择。
在这种部署模式下,不需要YARN。可以在MapReduce中启动Rather Spark作业。
Spark的生态系统包括–
二者在server端采用了一致的异步并发模型,但在任务级别(特指 Spark任务和MapReduce任务)上却采用了不同的并行机制:多进程和多线程
注意,本文的多进程和多线程,指的是同一个节点上多个任务的运行模式。无论是MapReduce和Spark,整体上看,都是多进程:MapReduce应用程序是由多个独立的Task进程组成的;Spark应用程序的运行环境是由多个独立的Executor进程构建的临时资源池构成的。
多进程模型便于细粒度控制每个任务占用的资源,但会消耗较多的启动时间,不适合运行低延迟类型的作业。多线程模型相反,任务启动速度快。
Spark同节点上所有任务运行在一个进程中,有利于共享内存。这非常适合内存密集型任务,尤其对于那些需要加载大量词典的应用程序,可大大节省内存。
Spark同节点上所有任务可运行在一个JVM进程(Executor)中,且Executor所占资源可连续被多批任务使用,不会在运行部分任务后释放掉,这避免 了每个任务重复申请资源带来的时间开销,对于任务数目非常多的应用,可大大降低运行时间。与之对比的是MapReduce中的Task:每个Task单独 申请资源,用完后马上释放,不能被其他任务重用,尽管1.0支持JVM重用在一定程度上弥补了该问题,但2.0尚未支持该功能。
但是,spark由于同节点上所有任务运行在一个进程中,因此,会出现严重的资源争用,难以细粒度控制每个任务占用资源。与之相 反的是MapReduce,它允许用户单独为Map Task和Reduce Task设置不同的资源,进而细粒度控制任务占用资源量,有利于大作业的正常平稳运行。
总体上看,Spark采用的是经典的scheduler/workers模式, 每个Spark应用程序运行的第一步是构建一个可重用的资源池,然后在这个资源池里运行所有的ShuffleMapTask和ReduceTask(注 意,尽管Spark编程方式十分灵活,不再局限于编写Mapper和Reducer,但是在Spark引擎内部只用两类Task便可表示出一个复杂的应用 程序,即ShuffleMapTask和ReduceTask),而MapReduce应用程序则不同,它不会构建一个可重用的资源池,而是让每个 Task动态申请资源,且运行完后马上释放资源。
Hbase:nosql数据库,和mongodb类似
hbase是以hdfs为存储介质的,因此它具有分布式存储拥有的所有优点
客户端传输数据直接和HRegionServer通信
Hive中的表是纯逻辑表,就只是表的定义等,即表的元数据。Hive本身不存储数据,它完全依赖HDFS和MapReduce。这样就可以将结构化的数据文件映射为为一张数据库表,并提供完整的SQL查询功能,并将SQL语句最终转换为MapReduce任务进行运行。 而HBase表是物理表,适合存放非结构化的数据。
Apache Hive是数据仓库。通过Hive可以使用HQL语言查询存放在HDFS上的数据。HQL是一种类SQL语言,这种语言最终被转化为Map/Reduce. 虽然Hive提供了SQL查询功能,但是Hive不能够进行交互查询–因为它是基于MapReduce算法。
Apache Hbase Key/Value,基础单元是cell,它运行在HDFS之上。和Hive不一样,Hbase的能够在它的数据库上实时运行,而不是运行MapReduce任务.
Hive目前不支持更新操作。另外,由于hive在hadoop上运行批量操作,它需要花费很长的时间,通常是几分钟到几个小时才可以获取到查询的结果。Hive必须提供预先定义好的schema将文件和目录映射到列,并且Hive与ACID不兼容。
HBase查询是通过特定的语言来编写的,这种语言需要重新学习。类SQL的功能可以通过Apache Phonenix实现,但这是以必须提供schema为代价的。另外,Hbase也并不是兼容所有的ACID特性,虽然它支持某些特性。最后但不是最重要的–为了运行Hbase,Zookeeper是必须的,zookeeper是一个用来进行分布式协调的服务,这些服务包括配置服务,维护元信息和命名空间服务。
Hive适合用来对一段时间内的数据进行分析查询,例如,用来计算趋势或者网站的日志。Hive不应该用来进行实时的查询。因为它需要很长时间才可以返回结果。
Hbase非常适合用来进行大数据的实时查询。Facebook用Hbase进行消息和实时的分析。它也可以用来统计Facebook的连接数。
大数据面试(七)_2018年大数据面试题总结 - 哔哩哔哩
引用:
Spark——需要HADOOP来运行SPARK吗? - 曹伟雄 - 博客园
您需要HADOOP来运行SPARK吗? - 知乎
mapreduce与spark的区别--内容详细_奔跑的小鲫鱼的博客-CSDN博客_mapreduce和spark的区别
HDFS 存放策略 - dousil - 博客园
HDFS Block块大小限定依据及原则_小学僧来啦的博客-CSDN博客_hdfs一个文件占用一个block吗
centos7下搭建hadoop、hbase、hive、spark分布式系统架构_腾讯数据架构师的博客-CSDN博客