关于 SearyNameNode 哪项是正确的?

多选题:

关于 SearyNameNode ,它的目的是帮助Namenode合并编辑日志,减少Namenode启动时间是正确的

secondarynamenode的作用和工作原理 namenode的主要功能secondarynamenode的作用和工作原理 namenode的主要功能


secondarynamenode的作用和工作原理 namenode的主要功能


b)Tar ball

原因:当一个NameNode启动时,它首先从一个映像文件 (fsimage)中读取HDFS的状态,接着应用日志文件中的edits作。然后它将新的HDFS状态写入(fsimage)中,并使用一个空的 edits文件开始正常作。因为NameNode只有在启动阶段才合并fsimage和edits,所以一段时间后日志文件可能会变得非常庞大,特别是 对大型的集群。日志文件太大的另一个副作用是下一次NameNode启动会花很长时间。Secondary NameNode定期合并fsimage和edits日志,将edits日志文件大小控制在一个限度下。

HDFS架构

结构图不容易在这里显示,因为是用AutoCAD画的,建议你把邮箱发来,发到你邮箱。

NameNode是HDFS中存储元数据(文件名称、大小和位置等信息)的地方,它将所有文件和文件夹的元数据保存在一个文件系统目录树中,任何元数据信息的改变,NameNode都会记录。HDFS中的每个文件都被拆分为多个数据块存放,这种文件与数据块的对应关系也存储在文件系统目录树中,由NameNode维护。NameNode还存储数据块到DataNode的映射信息,这种映射信息包括:数据块存放在哪些DataNode上、每个DataNode上保存了哪些数据块。NameNode也会周期性地接收来自集群中DataNode的“心跳”和“块报告”。通过“心跳”与DataNode保持通信,DataNode的状态(活着还是宕机),若长时间接收不到“心跳”信息,NameNode会认为DataNode已经宕机,从而做出相应的调整策略。“块报告”包含了DataNode上所有数据块的列表信息。

DataNode是HDFS中真正存储数据的地方。客户端可以向DataNode请求写入或读取数据块,DataNode还在来自NameNode的指令下执行块的创建、删除和,并且周期性地向NameNode汇报数据块信息。

NodeSecondaryNameNode用于帮助NameNode管理元数据,从而使NameNode能够快速、高效地工作。它并不是第二个NameNode,仅是NameNode的一个辅助工具。HDFS的元数据信息主要存储于两个文件中:fsimage和edits。fsimage是文件系统映射文件,主要存储文件元数据信息,其中包含文件系统所有目录、文件信息以及数据块的索引;edits是HDFS作日志文件,HDFS对文件系统的修改日志会存储到该文件中。当NameNode启动时,会从文件fsimage中读取HDFS的状态,也会对文件fsimage和edits进行合并,得到完整的元数据信息,随后会将新HDFS状态写入fsimage。但是在繁忙的集群中,edits文件会随着时间的推移变得非常大,这就导致NameNode下一次启动的时间会非常长。为了解决这个问题,则产生了Seco下面我们详细介绍:ndaryNameNode,SecondaryNameNode会定期协助NameNode合并fsimage和edits文件,并使edits文件的大小保持在一定的限制内。SecondaryNameNode通常与NameNode在不同的计算机上运行,因为它的内存需求与NameNode相同,这样可以减轻NameNode所在计算机的压力。

hadoop中主机有多少个进程是对的

方与方先建立通讯连接,连接建立后不断开,然后再进行报文发送和接收。这种方式下由于通讯连接一直存在,此种方式常用于点对点通讯。

概述: Hadoop是一个能够对大量数据进行分布式处理的软件框架,实现了Google的MapReduce编程模型和框架,能够把应用程序分割成许多的 小的工作单元,并把这些单元放到任何集群上执行。在MapReduce中,一个准备提交执行的应用程序称为“作业(job)”,而从一个作业划分出 得、运行于各个计算的工作单元称为“任务(task)”。此外,Hadoop提供的分布式文件系统(HDFS)主要负责各个的数据存储,并实现了 高吞吐率的数据读写。

10.端上传文件的时候下列哪项正确

Namenode 管理者文件系统的Namespace。它维护着文件系统树(file tree)以及文件树中所有的文件和文件夹的元数据(metadata)。管理这些信息的文件有两个,分别是Namespace 镜像文件(Namespace image)和作日志文件(edit log),这些信息被Cache在RAM中,当然,这两个文件也会被持久化存储在本地硬盘。Namenode记录着每个文件中各个块所在的数据的位置信息,但是他并不持久化存储这些信息,因为这些信息会在系统启动时从数据重建。

Namenode结构图课抽象为如图:

客户端(client)代表用户与namenode和datanode交互来访问整个文件系统。客户端提供了一些列的文件系统接口,因此我们在编程时,几乎无须知道datanode和namenode,即可完成我们所需要的功能。

1.1Namenode容错机制

没有Namenode,HDFS就不能工作。事实上,如果运行namenode的机器坏掉的话,系统中的文件将会完全丢失,因为没有其他方法能够将位于不同datanode上的文件块(blocks)重建文件。因此,namenode的容错机制非常重要,Hadoop提供了两种机制。

种方式是将持久化存储在本地硬盘的文件系统元数据备份。Hadoop可以通过配置来让Namenode将他的持久化状态文件写到不同的文件系统中。这种写作是同步并且是原子化的。比较常见的配置是在将持久化状态写到本地硬盘的同时,也写入到一个远程挂载的网络文件系统。

第二种方式是运行一个辅助的Namenode(Secondary Namenode)。 事实上Secondary Namenode并不能被用作Namenode它的主要作用是定期的将Namespace镜像与作日志文件(edit log)合并,以防止作日志文件(edit log)变得过大。通常,Secondary Namenode 运行在一个单独的物理机上,因为合并作需要占用大量的CPU时间以及和Namenode相当的内存。辅助Namenode保存着合并后的Namespace镜像的一个备份,万一哪天Namenode宕机了,这个备份就可以用上了。

但是辅助Namenode总是落后于主Namenode,所以在Namenode宕机时,数据丢失是不可避免的。在这种情况下,一般的,要结合种方式中提到的远程挂载的网络文件系统(NFS)中的Namenode的元数据文件来使用,把NFS中的Namenode元数据文件,拷贝到辅助Namenode,并把辅助Namenode作为主Namenode来运行。

----------------------------------------------------------------------------------------------------------------------------------------------------

2、Datanode介绍

Datanode是文件系统的工作,他们根据客户端或者是namenode的调度存储和检索数据,并且定期向namenode发送他们所存储的块(block)的列表。

集群中的每个都运行一个DataNode后台程序,这个后台程序负责把HDFS数据块读写到本地的文件系统。当需要通过客户端读/写某个 数据时,先由NameNode告诉客户端去哪个DataNode进行具体的读/写作,然后,客户端直接与这个DataNode上的后台程序进行通 信,并且对相关的数据块进行读/写作。

---------------------------------------------------------------------------------------------------------------------------------------------------

3、Secondary NameNode介绍

${dfs.name.dir}/current/VERSION

/edits

/fsimage

/fstime

${fs.checkpoint.dir}/current/VERSION

/edits

/fsimage

/fstime

/previous.checkpoint/VERSION

/edits

/fsimage

/fstime

如上图,Secondary NameNode主要是做Namespace image和Edit log合并的。

那么这两种文件是做什么的?当客户端执行写作,则NameNode会在edit log记录下来,(我感觉这个文件有些像Oracle的online redo logo file)并在内存中保存一份文件系统的元数据。

Namespace image(fsimage)文件是文件系统元数据的持久化检查点,不会在写作后马上更新,因为fsimage写非常慢(这个有比较像datafile)。

由于Edit log不断增长,在NameNode重启时,会造成长时间NameNode处于安全模式,不可用状态,是非常不符合Hadoop的设计初衷。所以要周期性合并Edit log,但是这个工作由NameNode来完成,会占用大量资源,这样就出现了Secondary NameNode,它可以进行image检查点的处理工作。步骤如下:

(1) Secondary NameNode请求NameNode进行edit log的滚动(即创建一个新的edit log),将新的编辑作记录到新生成的edit log文件;

(2) 通过 get方式,读取NameNode上的fsimage和edits文件,到Secondary NameNode上;

(3) 读取fsimage到内存中,即加载fsimage到内存,然后执行edits中所有作(类似OracleDG,应用redo log),并生成一个新的fsimage文件,即这个检查点被创建;

(5) NameNode使用新的fsimage替换原来的fsimage文件,让(1)创建的edits替代原来的edits文件;并且更新fsimage文件的检查点时间。

整个处理过程完成。

Secondary NameNode的处理,是将fsimage和edites文件周期的合并,不会造成nameNode重启时造成长时间不可访问的情况。

--------------------------------------------------------------------------------------------------------------------------------------------------

4、JobTracker介绍

JobTracker后台程序用来连接应用程序与Hadoop。用户代码提交到集群以后,由JobTracker决定哪个文件将被处理,并且为 不同的task分配。同时,它还所有的task,一旦某个task失败了,JobTracker就会自动重新开启这个task,在大多数情况下这 个task会被放在不用的上。每个Hadoop集群只有一个JobTracker,一般运行在集群的Master上。

4.1Job

我们配置好作业之后,就可以向JobTracker提交该作业了,然后JobTracker才能安排适当的TaskTracker来完成该作业。那么MapReduce在这个过程中到底做了那些事情呢?这就是本文以及接下来的一片博文将要讨论的问题,当然本文主要是围绕客户端在作业的提交过程中的工作来展开。先从全局来把握这个过程吧!

在Hadoop中,作业是使用Job对象来抽象的,对于Job,我首先不得不介绍它的一个大家伙Job——客户端的实际工作者。Job除了自己完成一部分必要的工作外,还负责与JobTracker进行交互。所以客户端对Job的提交,绝大部分都是Job完成的,从上图中,我们可以得知Job提交Job的详细流程主要如下:

Job在获取了JobTracker为Job分配的id之后,会在JobTracker的系统目录(HDFS)下为该Job创建一个单独的目录,目录的名字即是Job的id,该目录下会包含文件job.xml、job.jar、job.split等,其中,job.xml文件记录了Job的详细配置信息,job.jar保存了用户定义的关于job的map、reduce纵,job.split保存了job任务的切分信息。在上面的流程图中,我想详细阐述的是Job是任何配置Job的运行环境,以及如何对Job的输入数据进行切分。

4.2JobTracker

--------------------------------------------------------------------------------------------------------------------------

下面来详细的介绍这三类组件:

大数据技术Hadoop面试题

1. hdfs初始化目录结构

单项选择题

1.下面哪个程序负责HDFS数据存储。

a)NameNode

b)Jobtracker

c)Datanode

d)secondaryNameNode

e)tasktracker

2.HDfS中的block默认保存几份?

a)3份

b)2份

c)1份

d)后查看hadoop文件夹下的data和name文件夹里面的current/version,发现clusterID不一致.不确定

3.下列哪个程序通常与NameNode在一个启动?

a)SecondaryNameNode

b)DataNode

d)Jobtracker

4.Hadoop作者

a)MartinFowler

b)KentBeck

c)Dougcutting

a)32MB

6.下列哪项通常是集群的最主要瓶颈

a)CPU

b)网络

c)磁盘

7.关于SecondaryNameNode哪项是正确的?

a)它是NameNode的热备

b)它对内存没有要求

c)它的目的是帮助NameNode合并编辑日志,减少NameNode启动时间

d)SecondaryNameNode应与NameNode部署到一个

多选题

8.下列哪项可以作为集群的管理工具

a)Puppet

b)Pdsh

c)ClouderaMar

d)d)Zookeeper

9.配置机架感知的下面哪项正确

b)写入数据的时候会写到不同机架的DataNode中

c)MapReduce会根据机架获取离自己比较近的网络数据

a)数据经过NameNode传递给DataNode

b)端将文件切分为Block,依次上传

c)只上传数据到一台DataNode,然后由NameNode负责Block工作

11.下列哪个是Hadoop运行的模式

a)单机版

b)伪分布式

c)分布式

12.Cloudera提供哪几种安装CDH的方法

a)Clouderamar

b)Tarball

c)Yumd)Rpm

13.Ganglia不仅可以进行,也可以进行告警。()

14.BlockSize是不可以修改的。()

15.Nagios不可以Hadoop集群,因为它不提供Hadoop支持。()

16.如果NameNode意外终止,SecondaryNameNode会接替它使集群继续工作。() 1 2 3

hadoop中命令经常含有-fs,-dfs,fs和dfs有什么区别?作用是什么?

错误原因:

You can see definitions of the two commands (hadoop fs & hadoop dfs) in

添加了一个新的标识符ClusterID用于标识集群中所有的。当格式化一个Namenode,需要提供这个标识符或者自动生成。这个ID可以被用来格式化加入集群的其他Namenode。

可以看一下hadoop的源代码

$HADOOP_HOME/bin/hadoop

...elif [ "$COMMAND" = "datanode" ] ; then CLASS='org.apache.hadoop.hdfs.server.datanode.DataNode' HADOOP_OPTS="$HADOOP_OPTS $HADOOP_DATANODE_OPTS"elif [ "$COMMAND" = "fs" ] ; then CLASS=org.apache.hadoop.fs.FsShell HADOOP_OPTS="$HADOOP_OPTS $HADOOP_CLIENT_OPTS"elif [ "$COMMAND" = "dfs" ] ; then CLASS=org.apache.hadoop.fs.FsShell HADOOP_OPTS="$HADOOP_OPTS $HADOOP_CLIENT_OPTS"elif [ "$COMMAND" = "dfsadmin" ] ; then CLASS=org.apache.hadoop.hdfs.tools.DFSAdmin HADOOP_OPTS="$HADOOP_OPTS $HADOOP_CLIENT_OPTS"...

So, they are exactly the same.

所以,发现两者是完全一样的功能。

谢谢

Hadoop无确启动SecondaryNameNode

判断题

搭建Hadoop集群时,在安装并修改配置文件后,使用命令行start-dfs.sh启动Hadoop的HDFS文件系统。

然后在各输入jps查看集群的各进程,发现SecondaryNameNode没有正常启动。

查看作日志,可发现错误报告如下:

多次错误初始化NameNode,导致namenode和datanode的namespaceID和clusterID不一致。

解决方法:

1、删除Hadoop文件夹.../tmp/dfs 里面的data和name文件夹

2、初始化NameNode:hdf7、hadoop-daemons.sh start jobtrackers namenode -format

3、启动HDFS:start-dfs.sh

此时再输入jps,可看到所有进程都正常启动

总结:

有异常,可通过查看作日志查找错误原因

初始化namenode之前,应先删除data和name文件夹。

secondarynamenode是namenode的热备吗

SecondaryNameNode是在文件中配置的,datanode是在sles文件中配置的,把的安装文件到sle是正确的,具体什么问HDFS中的文件是以数据块(Block)的形式存储的,默认最基本的存储单位是128 MB(Hadoop 1.x为64 MB)的数据块。也就是说,存储在HDFS中的文件都会被分割成128 MB一块的数据块进行存储,如果文件本身小于一个数据块的大小,则按实际大小存储,并不占用整个数据块空间。HDFS的数据块之所以会设置这么大,其目的是减少寻址开销。数据块数量越多,寻址数据块所耗的时间就越多。当然也不会设置过大,MapReduce中的Map任务通常一次只处理一个块中的数据,如果任务数太少,作业的运行速度就会比较慢。HDFS的每一个数据块默认都有三个副本,分别存储在不同的DataNode上,以实现容错功能。因此,若数据块的某个副本丢失并不会影响对数据块的访问。数据块大小和副本数量可在配置文件中更改题请查看你的ma26. Hadoop 默认调度器策略为 FIFO( )ster和sles文件是如何配置的

大数据技术Hadoop笔试题

5.HDFS默认BlockSize

大数据技术Hadoop笔试题

导读:Hadoop有高容错性的特点,并且设计用来部署在低廉的(low-cost)硬件上。以下是由我J.L为您整理的面试笔试题目和经验,欢迎参考阅读。

单项选择题

1. 下面哪个程序负责 HDFS 数据存储。

a)NameNode

b)Jobtracker

c)Datanode

d)secondaryNameNode

e)tasktracker

2. HDfS 中的 block 默认保存几份?

a)3 份

b)2 份

c)1 份

d)不确定

3. 下列哪个程序通常与 NameNode 在一个启动?

a)SecondaryNameNode

b)DataNode

d)Jobtracker

4. Hadoop 作者

a)Martin Fowler

3.2Secondary NameNode的目录结构如下:b)Kent Beck

c)Doug cutting

5. HDFS 默认 Block Size

a)32MB

6. 下列哪项通常是集群的最主要瓶颈

a)CPU

b)网络

c)磁盘

7. 关于 SecondaryNameNode 哪项是正确的?

a)它是 NameNode 的热备

b)它对内存没有要求

c)它的目的是帮助 NameNode 合并编辑日志,减少 NameNode 启动时间

d)SecondaryNameNode 应与 NameNode 部署到一个

多选题

8. 下列哪项可以作为集群的管理工具

a)Puppet

b)Pdsh

c)Cloudera Mar

d)d)Zookeeper

9. 配置机架感知的下面哪项正确

b)写入数据的时候会写到不同机架的 DataNode 中

c)MapReduce 会根据机架获取离自己比较近的网络数据

10. 端上传文件的时候下列哪项正确

a)数据经过 NameNode 传递给 DataNode

b) 端将文件切分为 Block,依次上传

c) 只上传数据到一台 DataNode,然后由 NameNode 负责 Block 工作

11. 下列哪个是 Hadoop 运行的模式

a)单机版

b)伪分布式

c)分布式

12. Cloudera 提供哪几种安装 CDH 的方法

a)Cloudera mar

c)Yum d)Rpm

13. Ganglia 不仅可以进行,也可以进行告警。( )

14. Block Size 是不可以修改的。( )

15. Nagios 不可以 Hadoop 集群,因为它不提供 Hadoop 支持。( )

16. 如果 NameNode 意外终止,SecondaryNameNode 会接替它使集群继续工作。( )

17. Cloudera CDH 是需要付费使用的。( )

18. Hadoop 是 Ja 开发的,所以 MapReduce 只支持 Ja 语言编写。( )

19. Hadoop 支持数据的随机读写。( )

20. NameNode 负责管理 metadata,client 端每次读写请求,它都会从磁盘中读取或则会写入 metadata 信息并反馈 client 端。( )

21. NameNode 本地磁盘保存了 Block 的位置信息。( )

22. DataNode 通过长连接与 NameNode 保持通信。( )

23. Hadoop 自身具有严格的权限管理和安全措施保障集群正常运行。( )

24. Sle 要存储数据,所以它的磁盘越大越好。( )

25. hadoop dfsadmin –report 命令用于检测 HDFS 损坏块。( )

27. 集群内每个都应该配 RAID,这样避免单磁盘损坏,影响整个运行。( )

28. 因为 HDFS 有多个副本,所以 NameNode 是不存在单点问题的。( )

29. 每个 map 槽就是一个线程。( )

30. Mapreduce 的 input split 就是一个 block。( )

31. NameNode 的 Web UI 端口是 50030,它通过 jetty 启动的 Web 服务。( )

32. Hadoop 环境变量中的 HADOOP_HEAPSIZE 用于设置所有 Hadoop 守护线程的内存。它默认是 200 GB。( )

33. DataNode 首次加入 cluster 的时候,如果 log 中报告不兼容文件版本,那需要 NameNode执行“Hadoop namenode -format”作格式化磁盘。( )

别走开,在后面哦!

1. 下面哪个程序负责 HDFS 数据存储。C datanode

a)NameNode

b)Jobtracker

c)Datanode

d)secondaryNameNode

e)tasktracker

2. HDfS 中的 block 默认保存几份? A默认3分

a)3 份

b)2 份

c)1 份

d)不确定

3. 下列哪个程序通常与 NameNode 在一个启动?D

a)SecondaryNameNode

b)DataNode

d)Jobtracker

此题分析:

JobTracker和TaskTracker

JobTracker 对应于 NameNode

TaskTracker 对应于 DataNode

DataNode 和NameNode 是针对数据存放来而言的

JobTracker和TaskTracker是对于MapReduce执行而言的

mapreduce中几个主要概念,mapreduce整体上可以分为这么几条执行线索:obclient,JobTracker与TaskTracker。

1、Job会在用户端通过Job类将应用已经配置参数打包成jar文件存储到hdfs,并把路径提交到Jobtracker, 然后由JobTracker创建每一个Task(即MapTask和ReduceTask)并将它们分发到各个TaskTracker服务中去执行。

2、JobTracker是一个服务,软件启动之后JobTracker接收Job,负责调度Job的每一个子任务task运行于 TaskTracker上,并它们,如果发现有失败的task就重新运行它。一般情况应该把JobTracker部署在单独的机器上。

3、TaskTracker是运行在多个上的sler服务。TaskTracker主动与JobTracker通信,接收作业,并负责直接执行每一个任务。TaskTracker都需要运行在HDFS的DataNode上。

4. Hadoop 作者 C Doug cutting

a)Martin Fowler

b)Kent Beck

c)Doug cutting

5. HDFS 默认 Block Size :B

a)32MB

(因为版本更换较快,这里只供参考)

6. 下列哪项通常是集群的最主要瓶颈::C磁盘

a)CPU

b)网络

c)磁盘IO

该题解析:

首先集群的目的是为了节省成本,用廉价的pc机,取代小型机及大型机。小型机和大型机有什么特点?

1.cpu处理能力强

2.内存够大

所以集群的瓶颈不可能是a和d

3.网络是一种稀缺资源,但是并不是瓶颈。

4.由于大数据面临海量数据,读写数据都需要io,然后还要冗余数据,hadoop一般备3份数据,所以IO就会打折扣。

7. 关于 SecondaryNameNode 哪项是正确的?C

a)它是 NameNode 的热备

b)它对内存没有要求

c)它的目的是帮助 NameNode 合并编辑日志,减少 NameNode 启动时间

d)SecondaryNameNode 应与 NameNode 部署到一个。

8. 下列哪项可以作为集群的管理?:ABD

a)Puppet

b)Pdsh

c)Cloudera Mar

d)Zookeeper

9. 配置机架感知的下面哪项正确:ABC

b)写入数据的时候会写到不同机架的 DataNode 中

c)MapReduce 会根据机架获取离自己比较近的网络数据

10. 端上传文件的时候下列哪项正确?B

a)数据经过 NameNode 传递给 DataNode

b) 端将文件切分为 Block,依次上传

c) 只上传数据到一台 DataNode,然后由 NameNode 负责 Block 工作

该题分析:

向NameNode发起文件写入的请求。

NameNode根据文件大小和文件块配置情况,返回给它所管理部分DataNode的信息。

将文件划分为多个Block,根据DataNode的地址信息,按顺序写入到每一个DataNode块中。

11. 下列哪个是 Hadoop 运行的模式:ABC

a)单机版

b)伪分布式

c)分布式

12. Cloudera 提供哪几种安装 CDH 的方法?:ABCD

a)Cloudera mar

b)Tarball

d)Rpm

判断题:

13. Ganglia 不仅可以进行,也可以进行告警。( 正确)

分析:此题的目的是考Ganglia的'了解。严格意义上来讲是正确。ganglia作为一款最常用的Linux环境中的软件,它擅长的的是从中按照用户的需求以较低的代价采集数据。但是ganglia在预警以及发生后通知用户上并不擅长。的ganglia已经有了部分这方面的功能。但是更擅长做的还有Nagios。Nagios,就是一款精于预警、通知的软件。通过将Ganglia和Nagios组合起来,把Ganglia采集的数据作为Nagios的数据源,然后利用Nagios来发送预警通知,可以完美的实现一整套管理的系统。

分析:它是可以被修改的Hadoop的基础配置文件是hadoop-default.xml,默认建立一个Job的时候会建立Job的Config,Config首先读入hadoop-default.xml的配置,然后再读入hadoop- site.xml的配置(这个文件初始的时候配置为空),hadoop-site.xml中主要配置需要覆盖的hadoop-default.xml的系统级配置。

15. Nagios 不可以 Hadoop 集群,因为它不提供 Hadoop 支持。(错误 )

分析:Nagios是集群工具,而且是云计算三大利器之一

16. 如果 NameNode 意外终止,SecondaryNameNode 会接替它使集群继续工作。(错误 )

分析:SecondaryNameNode是帮助恢复,而不是替代,如何恢复,可以查看

17. Cloudera CDH 是需要付费使用的。(错误 )

分析:套付费产品是Cloudera Enterpris,Cloudera Enterprise在美国加州举行的 Hadoop 大会 (Hadoop Summit) 上公开,以若干私有管理、、运作工具加强 Hadoop 的功能。收费采取合约订购方式,价格随用的 Hadoop 丛集大小变动。

18. Hadoop 是 Ja 开发的,所以 MapReduce 只支持 Ja 语言编写。(错误 )

分析:rhadoop是用R语言开发的,MapReduce是一个框架,可以理解是一种思想,可以使用其他语言开发。

19. Hadoop 支持数据的随机读写。(错 )

分析:lucene是支持随机读写的,而hdfs只支持随机读。但是HBase可以来补救。HBase提供随机读写,来解决Hadoop不能处理的问题。HBase自底层设计开始即聚焦于各种可伸缩性问题:表可以很“高”,有数十亿个数据行;也可以很“宽”,有数百万个列;水平分区并在上千个普通商用机上自动。表的模式是物理存储的直接反映,使系统有可能提高高效的数据结构的序列化、存储和检索。

20. NameNode 负责管理 metadata,client 端每次读写请求,它都会从磁盘中读取或则会写入 metadata 信息并反馈 client 端。(错误)

此题分析:

NameNode 不需要从磁盘读取 metadata,所有数据都在内存中,硬盘上的只是序列化的结果,只有每次 namenode 启动的时候才会读取。

1)文件写入

向NameNode发起文件写入的请求。

NameNode根据文件大小和文件块配置情况,返回给它所管理部分DataNode的信息。

将文件划分为多个Block,根据DataNode的地址信息,按顺序写入到每一个DataNode块中。

2)文件读取

向NameNode发起文件读取的请求。

21. NameNode 本地磁盘保存了 Block 的位置信息。( 个人认为正确,欢迎提出其它意见)

分析:DataNode是文件存储的基本单元,它将Block存储在本地文件系统中,保存了Block的Meta-data,同时周期性地将所有存在的Block信息发送给NameNode。NameNode返回文件存储的DataNode的信息。

读取文件信息。

22. DataNode 通过长连接与 NameNode 保持通信。( )

这个有分歧:具体正在找这方面的有利资料。下面提供资料可参考。

首先明确一下概念:

(1).长连接

(2).短连接

方与每进行一次报文收发交易时才进行通讯连接,交易完毕后立即断开连接。此种方式常用于一点对多点通讯,比如多个连接一个.

23. Hadoop 自身具有严格的权限管理和安全措施保障集群正常运行。(错误 )

hadoop只能阻止好人犯错,但是不能阻止坏人干坏事

24. Sle 要存储数据,所以它的磁盘越大越好。( 错误)

分析:一旦Sle宕机,数据恢复是一个难题

25. hadoop dfsadmin –report 命令用于检测 HDFS 损坏块。(错误 )

26. Hadoop 默认调度器策略为 FIFO(正确 )

27. 集群内每个都应该配 RAID,这样避免单磁盘损坏,影响整个运行。(错误 )

分析:首先明白什么是RAID,可以参考百科磁盘阵列。这句话错误的地方在于太,具体情况具体分析。题目不是重点,知识才是最重要的。因为hadoop本身就具有冗余能力,所以如果不是很严格不需要都配备RAID。具体参考第二题。

28. 因为 HDFS 有多个副本,所以 NameNode 是不存在单点问题的。(错误 )

29. 每个 map 槽就是一个线程。(错误 )

分析:首先我们知道什么是map 槽,map 槽->map slotmap slot 只是一个逻辑值 ( org.apache.hadoop.mapred.TaskTracker.TaskLauncher.numFreeSlots ),而不是对应着一个线程或者进程

30. Mapreduce 的 input split 就是一个 block。(错误 )

31. NameNode 的 Web UI 端口是 50030,它通过 jetty 启动的 Web 服务。(错误 )

32. Hadoop 环境变量中的 HADOOP_HEAPSIZE 用于设置所有 Hadoop 守护线程的内存。它默认是 200 GB。( 错误)

hadoop为各个守护进程(namenode,secondarynamenode,jobtracker,datanode,tasktracker)统一分配的内存在hadoop-env.sh中设置,参数为HADOOP_HEAPSIZE,默认为1000M。

33. DataNode 首次加入 cluster 的时候,如果 log 中报告不兼容文件版本,那需要 NameNode执行“Hadoop namenode -format”作格式化磁盘。(错误 )

分析:

首先明白介绍,什么ClusterID

ClusterID

二次整理

有的同学问题的重点不是上面分析内容:内容如下:

这个报错是说明 DataNode 所装的Hadoop版本和其它不一致,应该检查DataNode的Hadoop版本

;

HDFS(五):NN和2NN

内存一份数据,fsImage存储数据(合并后的数据,即没有追加前数据),edits文件只追加,不参与计算

内存数据 == fsImage+edits

启动:将(fsImage+edits)数据加载到内存

关闭:将 fsImage+edits合并

2nn将fsimage和edits文件定期合并

NameNode 被格式化后,将在/opt/module/hadoop-3.1.3/data/tmp/dfs/name/current目录中产生如下文件

2NN 在/opt/module/hadoop-3.1.3/data/tmp/dfs/namesecondary/current

NameNode相比较2nn多了edits_inprogress

NameNode被格式化之后,将在/opt/module/hadoop-3.1.3/data/tmp/dfs/name/current目录产生如下文件

1)fsimage文件:HDFS文件系统元数据的一个性检查点,其中包含HDFS文件系统的所有目录和inode的序列化信息

2)Edits文件:存放HDFS文件系统的所有更新作的路径,文件系统客户端执行的所有写作首先会被记录到edits文件中

3)seen_txid:文件保存的是一个数字,就是一个edits_数字

4)VERSION,当前nameNode的命名空间,和集群id

(1)基本语法

hdfs oiv -p 文件类型 -i镜像文件 -o 转换后文件输出路径

(2)实

NameNode没有记录块所对应DataNode,DataNode启动后向NameNode汇报自己有哪些文件块

(1)基本语法

hdfs oev -p 文件类型 -i 编辑日志 -o 转换后文件输出路径

(2)实

只进行追加,不进行合并作。

在启动进入内存,只加载edits后4、hadoop-daemons.sh sc)TaskTrackertart datanode缀大于fsimage后缀。

hdfs-default.xml

1)通常情况下,SecondaryNameNode每隔一个小时执行一次。[hdfs-default.xml]

2)一分钟检查一次作次数,当作次数达到1百万次,SecondaryNameNode执行一次。

2nn每隔1分钟,主动查询一次。

通过本节可以知道两个文件fsimage和edits文件作用,通过这两个文件就是NameNode存储的元数据。

hdfs工作流程

Hadoop是一个由Apache基金会所开发的分布式系统基础架构。用户可以在不了解分布式底层细节的情况下,开发分布式程序。充分利用集群的威力进行高速运算和存储。Hadoop实现了一个分布式文件系统(Hadoop Distributed File System),简称HDFS。HDFS有高容错性的特点,并且设计用来部署在低廉的(low-cost)硬件上;而且它提供高吞吐量(high throughput)来访问应用程序的数据,适合那些有着超大数据集(large data set)的应用程序。HDFS放宽了(relax)POSIX的要求,可以以流的形式访问(streaming access)文件系统中的数据。Hadoop的框架最核心的设计就是:HDFS和MapReduce。HDFS为海量的数据提供了存储,而MapReduce则为海量的数据提供了计算。

1. hdfs基本工作流程

(4) 通过 t方式,将新的fsimage文件传送到NameNode;

hdfs namenode -format 只是初始化了namenode的工作目录

而datanode的工作目录是在datanode启动后自己初始化的

namenode在format初始化的时候会形成两个标识:

blockPoolId:

clusterId:

新的datanode加入时,会获取这两个标识作为自己工作目录中的标识

一旦namenode重新format后,namenode的身份标识已变,而datanode如果依然

持有原来的id,就不会被namenode识别

2. hdfs的工作机制

hdfs集群分为两大角色:NameNode,DataNode (Secondary NameNode)

NameNode负责管理整个文件的元数据(命名空间信息,块信息) 相当于Master

DataNode负责管理用户的文件数据块 相当于Salve

每一个文件块有多个副本(默认是三个),存在不同的datanode上

DataNode会定期向NameNode汇报自身所保存的文件block信息,而namenode则会负责保持文件副本数量

hdfs的内部工作机制会对客户的保持透明,客户端请求方法hdfs都是通过向namenode申请来进行访问

SecondaryNameNode有两个作用,一是镜像备份,二是日志与镜像的定期合并

3. hdfs写入数据流程

1.客户端要向hdfs写入数据,首先要跟namenode通信以确认可以写文件并获得接收文件block的datanode,然后,客户端按照顺序将文件block逐个传给相应datanode,并由接收到block的datanode负责向其他datanodeblock副本

请点击输入描述

4. 写入数据步骤详细解析

客户端向namenode通信,请求上传文件,namenode检查目标文件是否已经存在,父目录是否存在

namenode返回给客户端,告知是否可以上传

客户端请求个block该传输到那些datanode上

namenode返回3个datanodeabc

客户端请求3台datanode的一台a上传数据(本质上是一个rpc调用,建立pipeline),A收到请求后会继续调用b,然后b调用c,将整个pipeline建立完成,逐级返回客户端。

客户端开始忘a上传个block(先从磁盘读取数据放入本地内存缓存),以packet为单位,a收到一个packet将会传给b,b传给c,a每传一个packet会放入一个应答队列等待应答

宕一个block传输完之后,客户端再次请求namenode上传第二个block的