大数据技术作业1
一、大数据技术概述
1.请阐述大数据处理的基本流程?
大数据的基本处理流程,主要包括数据采集、存储管理、处理分析、结果呈现等环节。因此,从数据分析全流程来看,大数据技术主要包括数据采集与预处理、数据存储和管理、数据处理与分析、数据可视化、数据安全与隐私保护等几个层面的内容。
2.请阐述大数据的计算模式以及代表产品。
批处理计算。批处理计算主要解决针对大规模数据的批量处理。MapReduce、Spark
流计算。流计算主要是实时处理来自不同数据源的、连续到达的流数据,经过实时分析处理,给出有价值的分析结果。Storm、S4、DStream
图计算。针对大规模图结构数据的处理。GraphX、Pergel
查询分析计算。面向大规模数据的存储结果和查询分析。Hive、Dremel。
3.请列举Hadoop生态系统的各个组件及其功能。
Hadoop生态系统主要包括HDFS、MapReduce、YARN、Zookeeper、HBase、Hive、Pig、Mahout、Sqoop、Flume。Ambari等功能组件。
HDFS是一个分布式文件系统,是Hadoop两大核心组成部分之一,提供了在廉价服务器集群汇总进行大规模分布式文件存储的能力。
MapReduce是一种分布式并行编程模型,用于大规模数据集的并行计算。其设计理念是计算向数据靠拢。
YARN是负责集群资源调度管理的组件。YARN的目标是实现“一个集群多个框架”,在一个集群上部署一个统一的资源调度管理框架YARN,在YARN之上可以部署其他各种计算框架。
HBase是一个高可靠、高性能、面向列、可伸缩的分布式数据库,主要用来存储非结构化和半结构化的松散数据。
Hive是一个基于Hadoop的数据仓库工具,可以用于对存储在Hadoop文件中的数据集进行数据整理、特殊查询和分析处理。
Flume是一个高可用的、高可靠的、分布式的海量日志采集、聚合和传输系统。
Sqoop用来在Hadoop和关系数据库之间交换数据,可以改进数据的互操作性。
4.分布式文件系统HDFS的名称节点和数据结点的功能分别是什么?
名称节点作为中心服务器,负责管理文件系统的命名空间及客户端对文件的访问。集群中的数据结点一般是一个节点运行一个数据节点进程,负责处理文件系统客户端的读/写请求,在名称节点的统一调度下进行数据块的创建、删除和复制等操作。
5.试阐述MapReducec的基本设计思想。
在MapReduce中,一个存储在分布式文件系统中的大规模数据,会被切分成许多独立的小数据块,这些小数据块可以被多个Map任务并行处理。MapReduce框架会为每个Map任务输入一个数据子集,Map任务生成的结果会继续作为Reduce任务的输入,最终由Reduce任务输出最后结果,并写入分布式文件系统。
6.YARN的主要功能是什么?使用YARN可以带来哪些好处?
YARN主要的功能是进行集群资源调度管理。在一个集群上部署一个统一的资源调度管理框架YARN,在YARN之上可以部署其他各种计算框架,由YARN为这些计算框架提供统一的资源调度管理服务,并且能够根据各种计算框架的负载需求,调整各自占用的资源,实现集群资源共享和资源弹性收缩。
实现一个集群上不用应用负载混搭,有效提高了集群的利用率;避免了数据的跨集群移动;大大降低了企业运维成本。
7.试阐述Hadoop生态系统中HBase与其他部分的关系。
Hbase利用MapReduce来处理hBase中的海量数据,实现高性能计算;利用Zookeeper作为协同服务,实现稳定服务和失败回复;使用HDFS作为高可靠的底层存储,利用廉价进群提供海量数据存储能力。
8.数据仓库Hive的主要功能是什么?
Hive可以用于存储在Hadoop文件中的数据集进行数据整理、特殊查询和分析处理。
9.Hadoop主要有哪些缺点?相比之下,Spark具有哪些优点?
总体而言,Hadoop中的MapReduce计算框架主要存在以下缺点:
表达能力有限。计算都必须转化为Map和Reduce两个操作,但这并不适合所有的情况,难以描述复杂的数据处理过程;
磁盘I/O开销大。每次执行时都需要从硬盘读取数据,并且在计算完成后需要将中间过程写入到磁盘中,I/O开销大;
延迟高。一次计算可能需要分解成一系列按顺序执行的MapReduce任务,任务之间的衔接由于涉及到I/O开销,会产生较高延迟。而且,在前一个任务执行完成之前,其他任务无法开始,因此难以胜任复杂、多阶段的计算任务。
Spark对比MapReduce的优点:
Spark的计算模式也属于MapReduce,但不局限与Map和Reduce操作,还提供了多种数据集操作类型,编程模型比MapReduce更灵活;
Spark提供了内存计算,中间结果直接放到内存中,带来了更高的迭代运算效率;
Spark提供DAG的任务调度执行机制,要优于MapReduce的迭代执行机制。
10.如何实现Spark与Hadoop的统一部署?
使用YARN来进行Spark和Hadoop的统一部署,Spark仅是取代了Hadoop中的计算框架MapReduce,
二、Scala语言基础
1.简述Scala语言与Java语言的联系与区别。
Scala是一门类Java的多范式语言,它整合了面向对象编程和函数式编程的最佳特性。
Scala运行在Java的虚拟机JVM之上,兼容现有的Java程序。
Scala是一门纯粹的面向对象语言。
Scala还是一门函数式语言。
2.Scala有哪些基本数据类型和操作符?
Int、Short、Byte
3.在Scala里怎样定义一个变量?与Hava的变量定义有什么区别?
三、Spark的设计与运行原理
1.Spark是基于内存计算的大数据计算平台,请简述Spark的主要特点。
运行速度快:Spark使用了先进的有向无环图DAG执行引擎。
容易使用:Spark支持多种语言,同时具有简洁的API。
通用性:Spark提供了完整而强大的技术栈,包括SQL查询、流式计算、图计算等。
运行模式多样:Spark可运行于独立的集群中,也可以运行在Hadoop中,也可以运行在云环境中。
2.Spark的出现是为了解决Hadoop MapReduce的不足,请列举Hadoop MapReduce的几个主要缺陷,并说明Spark具有哪些优点。
表达能力有限。计算都必须转化为Map和Reduce两个操作,但这并不适合所有的情况,难以描述复杂的数据处理过程;
磁盘I/O开销大。每次执行时都需要从硬盘读取数据,并且在计算完成后需要将中间过程写入到磁盘中,I/O开销大;
延迟高。一次计算可能需要分解成一系列按顺序执行的MapReduce任务,任务之间的衔接由于涉及到I/O开销,会产生较高延迟。而且,在前一个任务执行完成之前,其他任务无法开始,因此难以胜任复杂、多阶段的计算任务。
有点:
利用多线程来执行具体的任务,减少了任务的启动开销
BlockManager存储模块,利用内存和硬盘共同作为存储设备,提高了读写I/O性能。
3.美国加州大学伯克利分销提出的数据分析软件栈BDAS认为目前的大数据处理可以分为哪3个类型?
复杂的批量数据处理
基于历史数据的交互式查询
基于实时数据流的数据处理
4.Spark已打造出结构一体化、功能多样化的大数据生态系统,请简述Spark的生态环境。
主要包括Spark Core ,Spark SQL,Spark Streaming,MLlib和GraphX等组件。
Spark Core 提供了Spark中最基础和核心的功能,如内存计算、任务调度、部署模式、故障恢复、存储管理等,主要面向批数据处理。
Spark SQL:用于结构化数据处理组件,允许开发人员直接处理RDD,同时可以查询Hive、HBase等外部数据源。能够统一的管理关系表和RDD。
Spark Streaming:Spark Streaming是一种流计算框架,可以支持高吐吞量、可容错处理的实时流数据处理。
MLlib:MLlib提供了常用机器学习算法的实现。
GraphX:GraphX是用于图计算的API。
5.请阐述Saprk on YARN的概念。
Spark运行在YARN之上,与HADOOP进行统一部署,对应的资源管理和调度依赖于YARN,分布式存储则依赖于HDFS。
6.请阐述如下Spark的几个主要概念:RDD、DAG、阶段、分区、窄依赖、宽依赖。
RDD:弹性分布式数据集,提供了一种高度受限的共享内存模型。
DAG:有向无环图,反映RDD之间的依赖关系,
阶段:是作业的基本调度单位。
分区:一个数据集片段。
窄依赖:不包含Shuffle操作,表现为一个父RDD的一个分区对应一个子RDD的分区,或者多个父RDD的一个分区对应一个子RDD的分区。
宽依赖:包含Shuffle操作,表现为一个父RDD的一个分区对应一个子RDD的多个分区。
7.Spark对RDD的操作主要分为行动(Action)和转化(Transformation)两种类型,两种操作类型的区别是什么?
Action用于执行计算并指定输出的形式,Transformation用于指定RDD之间的相互依赖关系。由于惰性机制,前者真正发生了计算,会开始从头到尾的计算,而后者只会记录转换的轨迹。