ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

大数据概述

2022-02-24 16:33:07  阅读:157  来源: 互联网

标签:HDFS Hadoop 概述 内存 MR Spark 数据


1.列举Hadoop生态的各个组件及其功能、以及各个组件之间的相互关系,以图呈现并加以文字描述。Oozie
Oozie是可扩展可伸缩的工作流协调管理器。Oozie协调的作业属于一次性的非循环作业,例如MapReduce, Streaming, Pipes, Pig, Hive, Sqoop等等都是。Oozie将要调度的作业作为一个单一的作业来管理。Oozie的
调度基于时间跟数据可用性。具有数据感知功能,可以协调作业之间的依赖关系.
Flume
Flume是一个类似facebook的scribe的分布式,高可靠,高可用,高效的数据收集器,一般用于聚合众多服务器上面的大量日志到某一个数据中心。
Sqoop
Sqoop用于将关系形数据库(如mysql)或者其它结构化的数据导入到hadoop的生态系统中(HDFS,Hive , HBase),反过来也可以将hadoop的数据导出为对应的结构形式。
Hue
Hue是cdh专门的一套web管理器,它包括3个部分hue ui,hue server,hue db。hue提供所有的cdh组件的shell界面的接口。你可以在hue编写mr,查看修改hdfs的文件,管理hive的元数据,运行Sqoop,编写Oozie工作流等大量工作。
HCatalog
HCatalog提供表格数据类型到pig,hive,mr的输入数据的转换,HCatalog依赖Hive的元数据存储系统。通过HCatalog的接口pig,hive,mr自到识别这些输入数据的架构。
Avro
Avro是一个数据序列化系统。能保存持久化的数据到hdfs,能传输并且反序列化为高级数据结构。类似facebook的thrift,它也是提供多语言客户端支持的。
HttpFS
HttpFS提供REST HTTP API来读写hdfs。
Mahout
Mahout是一个编写基于大数据的机器学习软件,人工智能程序的协助工具。
Snappy
Snappy是压缩跟解压缩工具,它的应用包括将mr的最终输出结果压缩起来,Sqoop导入数据的时候也可以使用这个压缩引擎.
Whirr
Whirr是将hadoop生态系统云化的一个组件。只需要在Whirr的配置文件里指明你需要的hadoop组件,它能够用一个命令将一个hadoop生态系统完整的部署到像Amazon EC2这样的云服务器中,也能够一个命令回收这个hadoop生态系统及其使用的资源。intel的hadoop发行版也可以实现类似快捷部署的功能。

2.对比Hadoop与Spark的优缺点。一、实现原理的比较
Hadoop和Spark都是并行计算,两者都是用MR模型进行计算
Hadoop一个作业称为一个Job,Job里面分为Map Task和Reduce Task阶段,每个Task都在自己的进程中运行,当Task结束时,进程也会随之结束;
Spark用户提交的任务称为application,一个application对应一个SparkContext,app中存在多个job,每触发一次action操作就会产生一个job。这些job可以并行或串行执行,每个job中有多个stage,stage是shuffle过程中DAGScheduler通过RDD之间的依赖关系划分job而来的,每个stage里面有多个task,组成taskset,由TaskScheduler分发到各个executor中执行;executor的生命周期是和app一样的,即使没有job运行也是存在的,所以task可以快速启动读取内存进行计算。
ps:一个Application -> 多个job ->一个job多个stage -> 一个stage多个task
二、 两者的各方面比较
(1)Spark对标于Hadoop中的计算模块MR,但是速度和效率比MR要快得多;
(2)Spark没有提供文件管理系统,所以,它必须和其他的分布式文件系统进行集成才能运作,它只是一个计算分析框架,专门用来对分布式存储的数据进行计算处理,它本身并不能存储数据;
(3)Spark可以使用Hadoop的HDFS或者其他云数据平台进行数据存储,但是一般使用HDFS;
(4)Spark可以使用基于HDFS的HBase数据库,也可以使用HDFS的数据文件,还可以通过jdbc连接使用Mysql数据库数据;Spark可以对数据库数据进行修改删除,而HDFS只能对数据进行追加和全表删除;
(5)Spark数据处理速度秒杀Hadoop中MR;
(6)Spark处理数据的设计模式与MR不一样,Hadoop是从HDFS读取数据,通过MR将中间结果写入HDFS;然后再重新从HDFS读取数据进行MR,再刷写到HDFS,这个过程涉及多次落盘操作,多次磁盘IO,效率并不高;而Spark的设计模式是读取集群中的数据后,在内存中存储和运算,直到全部运算完毕后,再存储到集群中;
(7)Spark是由于Hadoop中MR效率低下而产生的高效率快速计算引擎,批处理速度比MR快近10倍,内存中的数据分析速度比Hadoop快近100倍(源自官网描述);
(8)Spark中RDD一般存放在内存中,如果内存不够存放数据,会同时使用磁盘存储数据;通过RDD之间的血缘连接、数据存入内存中切断血缘关系等机制,可以实现灾难恢复,当数据丢失时可以恢复数据;这一点与Hadoop类似,Hadoop基于磁盘读写,天生数据具备可恢复性;
(9)Spark引进了内存集群计算的概念,可在内存集群计算中将数据集缓存在内存中,以缩短访问延迟,对7的补充;
(10)Spark中通过DAG图可以实现良好的容错。
三、Spark相对Hadoop的优越性
(1)Spark基于RDD,数据并不存放在RDD中,只是通过RDD进行转换,通过装饰者设计模式,数据之间形成血缘关系和类型转换;
(2)Spark用scala语言编写,相比java语言编写的Hadoop程序更加简洁;
(3)相比Hadoop中对于数据计算只提供了Map和Reduce两个操作,Spark提供了丰富的算子,可以通过RDD转换算子和RDD行动算子,实现很多复杂算法操作,这些在复杂的算法在Hadoop中需要自己编写,而在Spark中直接通过scala语言封装好了,直接用就ok;
(4)Hadoop中对于数据的计算,一个Job只有一个Map和Reduce阶段,对于复杂的计算,需要使用多次MR,这样涉及到落盘和磁盘IO,效率不高;而在Spark中,一个Job可以包含多个RDD的转换算子,在调度时可以生成多个Stage,实现更复杂的功能;
(5)Hadoop中中间结果存放在HDFS中,每次MR都需要刷写-调用,而Spark中间结果存放优先存放在内存中,内存不够再存放在磁盘中,不放入HDFS,避免了大量的IO和刷写读取操作;
(6)Hadoop适合处理静态数据,对于迭代式流式数据的处理能力差;Spark通过在内存中缓存处理的数据,提高了处理流式数据和迭代式数据的性能;

Hadoop的局限和不足

但是,MapRecue存在以人局限,使用起来比较困难。

·抽象层次低,需要手工编写代码来完成,使用上难以上手。只提供两个操作,Map和Reduce,表达力欠缺。
。一个Job只有Map和Reduce两个阶段(Phase),复杂的计算需要大量的Job完成,Job之间的依赖关系是由开发者自己管理的。
处理逻辑隐藏在代码细节中,没有整体逻辑中间结果也放在HDFS文件系统中
ReduceTask需要等待所有MapTask都完成后才可以开始
时延高,只适用Batch数据处理,对于交互式数据处理,实时数据处理的支持不够
。对于选代式数据外理性能比较差

标签:HDFS,Hadoop,概述,内存,MR,Spark,数据
来源: https://www.cnblogs.com/zhaokailin0314/p/15932366.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有