一只小老虎

q,1=
在Hadoop2.0中,集群会启动哪些进程,他们的作用分别是什么:
1.NameNode它是hadoop中的主服务器,管理文件系统名称空间和对集群中存储的文件的访问,保存有metadate。
2.SecondaryNameNode它不是namenode的冗余守护进程,而是提供周期检查点和清理任务。帮助NN合并editslog,减少NN启动时间。
3.DataNode它负责管理连接到节点的存储(一个集群中可以有多个节点)。每个存储数据的节点运行一个datanode守护进程。
4.ResourceManager(JobTracker)JobTracker负责调度DataNode上的工作。每个DataNode有一个TaskTracker,它们执行实际工作。
5.NodeManager(TaskTracker)执行任务。

w,1=
简述HDFS的冗余数据保存策略:
每个文件都会有多个副本分散在不同的DataNode上,NameNode时刻监视文件的副本量,如果小于设定的值就找一台DataNode增加副本数。
一般至少有3分副本才能保证数据安全,保证某个DataNode在死掉的情况下依然能提供客户端及时获取文件数据。

e,1=
画出HDFS文件写入的流程图,并简述写入数据的过程:
  (1)客户端通过FileSystem.create()创建文件,相应地,在HDFS中Disstributed FileSystem具体实现了FileSystem。因此,调用create()方法够,DistributedFileSystem会创建输出流FSDataOutStream。
(2)然后,DilstributedFileSystem通过RPC远程调用名称节点,在文件系统的命名空间中创建一个新的文件名称节点会执行一些检查,例如,文件是否已经存在,客户端是否有权限创建文件等。检查通过后,名称节点会构造一个新文件,并添加文件信息。远程方法调用结束后,DistributedFileSystem会利用DFSOutputStream来实例化FSDataputStream,并返回给客户端,客户端使用这个输出流写入数据。
(3)获得输出流FSDataOutputStream以后,客户端调用输出流write()方法向HDFS中对应的文件写入数据。
(4)客户端向输出流FSDataOutStream中 写入的数据会首先被分成一个个的分包,这些分包被放入DFSOutputStream对象的内部队列。输出流FSDataOutputStream会向名称节点申请保存文件和副本数据块的若干个数据节点,这些数据节点形成一个数据管道。队列中的分包最后被打包成数据包,发往数据流管道中的第一个节点,第一个数据节点将数据包发送给第二个数据节点,第二个数据节点将数据包发给第三个数据节点,这样,数据包会流经管道上的各个数据节点。
(5)因为各个数据节点位于不同额机器上,数据需要通过网络发送。因此,为了保证所有数据节点的数据都是准确的,接收到数据的数据节点要向发送者发送“确认包”。确认包沿着数据流管道逆流而上,从数据流管道依次经过各个数据节点并最终发往客户端,当客户端收到应答时,它将对应的分包从内部队列移除。不断执行(3)~(5)步,直到数据全部写完。
(6)客户端调用close()方法关闭输出流,此时开始,客户端不会再向输出流中写入数据,所以,当DFSOutputSystem对象内部队列中的分包都收到应答以后,就可以使用ClientProtocol.complete()方法通知名称节点关闭文件,完成一次完整的写文件过程。

r,1=
HBase的三层结构中各层次的名称和作用:
第一层     Zookeeper文件   记录了-ROOT-表的位置信息
第二层      -ROOT-表    记录了.META.表的Region位置信息
-ROOT表只能有一个Region。通过-ROOT-表,就可以访问.META.表中的数据
第三层      .META.表
记录了用户数据表的Region位置信息,
.META.表可以有多个Region,保存了HBase中所有用户数据表的Region位置信息

t,1=
Store的工作原理:
Store是Region服务器的核心,每个Store对应表中一个列族的存储,
每个Store包含一个MemStore缓存和若干个StoreFile文件。
MemStore是排序的内缓冲区,当用户写入数据时,系统会先将数据放入到MemStore缓存,
当Memstore缓存满时,会被刷新到磁盘中的一个MemFile文件中;MemFile文件数量过多时会触发合并文件操作,当MemFile单个文件大小过大时,会触发文件分裂操作。

y,1=
在HBase中,每个Region服务器维护一个HLog,而不是每个Region都单独维护一个HLog,试说明这种做法的优点和缺点:
优点: 多个region对象的更新操作所发生的日志修改,只需要不断把日志记录追加到单个日志文件中,不需要同时打开、写入到多个日志文件中.
缺点:如果一个region服务器发生故障,为了恢复其上次的region对象,需要将region服务器上的对象,需要将region服务器上的
hlog按照其所属的region对象进行拆分,然后分发到其他region服务器上执行恢复操作.

o,1=
Hadoop MapReduce有哪些不足之处,试列举Hadoop MapReduce的几个缺陷,Spark的出现弥补了Hadoop MapReduce的缺陷,相对于Hadoop MapReduce,Spark具备哪些优点
(1).Hadoop存在以下缺点:
①表达能力有限;②磁盘IO开销大;③延迟高
(2).Spark主要有如下优点:
①Spark的计算模式也属于MapReduce,但不局限于Map和Reduce操作,
还提供了多种数据集操作类型,编程模型比MapReduce更灵活;
②Spark提供了内存计算,中间结果直接存放内存中,带来更高的迭代运算效率;
③Spark基于DAG的任务调度执行机制,要优于MapReduce的迭代执行机制。

a,1=
Spark的几个主要概念:RDD、DAG、阶段、分区、窄依赖、宽依赖:
(1)RDD:是弹性分布式数据集(resilient distributed dataset)的英文缩写,是分布式内存的一个抽象概念,
提供了一种高度受限的共享内存模型.
(2)DAG:是directed acyclic graph(有向无环图)的英文缩写,反映rdd之间的依赖关系.
(3)阶段:是作业的基本调度单位,一个作业会分为多组任务,每组任务被称为“阶段”,或者也被称为“任务集”.
(4)分区:一个rdd就是一个分布式对象集合,本质上是一个只读的分区记录集合,每个rdd可以分成多个分区,每个分区就是一个数据集片段.
(5)窄依赖:父rdd的一个分区只被一个子rdd的一个分区所使用就是窄依赖.
(6)宽依赖:父rdd的一个分区被一个子rdd的多个分区所使用就是宽依赖。

s,1=
Spark对RDD的操作主要分为行动和转换操作两种,试述两种操作的区别:
行动(Action):在数据集上进行运算,返回计算值。
​转换(Transformation):基于现有的数据集创建一个新的数据集。

d,1=
简述流水线(pipeline)几个主要部件和主要作用,使用pipeline来构建机器学习工作流有什么好处:
1.Transformer:通过方法transformer()在原始数据上增加一列或者多列来将一个DataFrame转化为另一个DataFrame;
2.Estimatir:评估器通过调用fit()方法,接受一个DataFrame,产生一个模型Transformer。
作用:使用pipeline来构建机器学习工作流可以将多次IO往返的时间缩减为一次,
前提是pipeline执行的指令之间没有因果相关性。

f,1=
为什么Spark更适合进行机器学习各种算法的处理:
1. Spark的计算模式也属于MapReduce,但不局限于Map和Reduce操作,还提供了多种数据集操作类型,编程模型比MapReduce更灵活;
2.Spark提供了内存计算,中间结果直接放到内存中,带来了更高的迭代运算效率;
3.Spark基于DAG的任务调度执行机制,要优于MapReduce的迭代执行机制。

g,1=
简述Spark的特点和优势:
spark的特点:
1.运行速度快:使用DAG执行引擎以支持循环数据流与内存计算;
2.容易使用:支持使用Scala、Java、Python和R语言进行编程,可以通过Spark Shell进行交互式编程 ;
3.通用性:Spark提供了完整而强大的技术栈,包括SQL查询、流式计算、机器学习和图算法组件;
4.运行模式多样:可运行于独立的集群模式中,可运行于Hadoop中,也可运行于Amazon EC2等云环境中,并且可以访问HDFS、Cassandra、HBase、Hive等多种数据源 ;
优势:
1.Spark的计算模式也属于MapReduce,但不局限于Map和Reduce操作,还提供了多种数据集操作类型,编程模型比Hadoop MapReduce更灵活;
2.Spark提供了内存计算,可将中间结果放到内存中,对于迭代运算效率更高;
3.Spark基于DAG的任务调度执行机制,要优于Hadoop MapReduce的迭代执行机制 ;

h,1=
简述什么是宽依赖和窄依赖,并举例:
宽依赖是指1个父RDD分区对应多个子RDD分区。比如groupByKey,reduceByKey,sortByKey;
窄依赖是指1个父RDD分区对应1个子RDD的分区。比如map,filter,union等算子。

j,1=
设计一个流计算系统,它至少应达到哪些需求:
1高性能;2.海量式;3.实时性;4.分布式;5.易用性;6.可靠性.

k,1=
简述RDD和DataFrame的区别:
1.RDD 是整个 Spark 平台的存储、计算以及任务调度的逻辑基础,更具有通用性,适用于各类数据源
而 DataFrame 是只针对结构化数据源的高层数据抽象;
2.RDD 是分布式的 Java 对象的集合, DataFrame 则是分布式的 Row 对象的集合;
3.RDD 是 Spark 的数据核心抽象, DataFrame 是 Spark 四大高级模块之一 Spark SQL 所处理数据的核心抽象;

你可能感兴趣的:(hadoop)