//Hadoop基础
Doug Cutting所创立的项目的名称都受到其家人的启发,以下项目不是由他创立的项目是
A. Hadoop
B. Nutch
C. Lucene
D. Solr
答案:D
配置Hadoop时,JAVA_HOME包含在哪一个配置文件中
A. hadoop-default.xml
B. hadoop-env.sh
C. hadoop-site.xml
D. configuration.xsl
答案:B
知识点:hadoop配置
Hadoop配置文件中,hadoop-site.xml显示覆盖hadoop-default.xml里的内容。在版本0.20中,hadoop-site.xml被分离成三个XML文件,不包括
A. conf-site.xml
B. mapred-site.xml
C. core-site.xml
D. hdfs-site.xml
答案:A
知识点:hadoop配置
HDFS默认的当前工作目录是/user/$USER,fs.default.name的值需要在哪个配置文件内说明
A. mapred-site.xml
B. core-site.xml
C. hdfs-site.xml
D. 以上均不是
答案:B
知识点:hadoop配置
关于Hadoop单机模式和伪分布式模式的说法,正确的是
A. 两者都起守护进程,且守护进程运行在一台机器上
B. 单机模式不使用HDFS,但加载守护进程
C. 两者都不与守护进程交互,避免复杂性
D. 后者比前者增加了HDFS输入输出以及可检查内存使用情况
答案:D
知识点:hadoop配置
下列关于Hadoop API的说法错误的是
A. Hadoop的文件API不是通用的,只用于HDFS文件系统
B. Configuration类的默认实例化方法是以HDFS系统的资源配置为基础的
C. FileStatus对象存储文件和目录的元数据
D. FSDataInputStream是java.io.DataInputStream的子类
答案:A
//HDFS
HDFS的NameNode负责管理文件系统的命名空间,将所有的文件和文件夹的元数据保存在一个文件系统树中,这些信息也会在硬盘上保存成以下文件:
A.日志
B.命名空间镜像
C.两者都是
答案:C
知识点:
HDFS的namenode保存了一个文件包括哪些数据块,分布在哪些数据节点上,这些信息也存储在硬盘上。
A.正确
B.错误
答案:B
知识点:在系统启动的时候从数据节点收集而成的
Secondary namenode就是namenode出现问题时的备用节点
A.正确
B.错误
答案:B
知识点:它和元数据节点负责不同的事情。其主要功能就是周期性将元数据节点的命名空间镜像文件和修改日志合并,以防日志文件过大。合并过后的命名空间镜像文件也在Secondary namenode保存了一份,以防namenode失败的时候,可以恢复。
出现在datanode的VERSION文件格式中但不出现在namenode的VERSION文件格式中的是
A. namespaceID
B. storageID
C. storageType
D. layoutVersion
答案:B
知识点:其他三项是公有的。layoutVersion是一个负整数,保存了HDFS的持续化在硬盘上的数据结构的格式版本号;namespaceID是文件系统的唯一标识符,是在文件系统初次格式化时生成的;storageType表示此文件夹中保存的是数据节点的类型
Client在HDFS上进行文件写入时,namenode根据文件大小和配置情况,返回部分datanode信息,谁负责将文件划分为多个Block,根据DataNode的地址信息,按顺序写入到每一个DataNode块
A. Client
B. Namenode
C. Datanode
D. Secondary namenode
答案:A
知识点:HDFS文件写入
HDFS的是基于流数据模式访问和处理超大文件的需求而开发的,默认的最基本的存储单位是64M,具有高容错、高可靠性、高可扩展性、高吞吐率等特征,适合的读写任务是
A.一次写入,少次读写
B.多次写入,少次读写
C.一次写入,多次读写
D.多次写入,多次读写
答案:C
知识点:HDFS特性
HDFS无法高效存储大量小文件,想让它能处理好小文件,比较可行的改进策略不包括
A. 利用SequenceFile、MapFile、Har等方式归档小文件
B. 多Master设计
C. Block大小适当调小
D. 调大namenode内存或将文件系统元数据存到硬盘里
答案:D
知识点:HDFS特性
关于HDFS的文件写入,正确的是
A. 支持多用户对同一文件的写操作
B. 用户可以在文件任意位置进行修改
C. 默认将文件块复制成三份存放
D. 复制的文件块默认都存在同一机架上
答案:C
知识点:在HDFS的一个文件中只有一个写入者,而且写操作只能在文件末尾完成,即只能执行追加操作。默认三份文件块两块在同一机架上,另一份存放在其他机架上。
Hadoop fs中的-get和-put命令操作对象是
A. 文件
B. 目录
C. 两者都是
答案:C
知识点:HDFS命令
Namenode在启动时自动进入安全模式,在安全模式阶段,说法错误的是
A. 安全模式目的是在系统启动时检查各个DataNode上数据块的有效性
B. 根据策略对数据块进行必要的复制或删除
C. 当数据块最小百分比数满足的最小副本数条件时,会自动退出安全模式
D. 文件系统允许有修改
答案:D
知识点:HDFS安全模式
//MapReduce
MapReduce框架提供了一种序列化键/值对的方法,支持这种序列化的类能够在Map和Reduce过程中充当键或值,以下说法错误的是
A. 实现Writable接口的类是值
B. 实现WritableComparable接口的类可以是值或键
C. Hadoop的基本类型Text并不实现WritableComparable接口
D. 键和值的数据类型可以超出Hadoop自身支持的基本类型
答案:C
以下四个Hadoop预定义的Mapper实现类的描述错误的是
A. IdentityMapper实现Mapper,将输入直接映射到输出
B. InverseMapper实现Mapper,反转键/值对
C. RegexMapper实现Mapper,为每个常规表达式的匹配项生成一个(match, 1)对
D. TokenCountMapper实现Mapper,当输入的值为分词时,生成(taken, 1)对
答案:B
知识点:InverseMapper实现Mapper
下列关于HDFS为存储MapReduce并行切分和处理的数据做的设计,错误的是
A. FSDataInputStream扩展了DataInputStream以支持随机读
B. 为实现细粒度并行,输入分片(Input Split)应该越小越好
C. 一台机器可能被指派从输入文件的任意位置开始处理一个分片
D. 输入分片是一种记录的逻辑划分,而HDFS数据块是对输入数据的物理分割
答案:B
知识点:每个分片不能太小,否则启动与停止各个分片处理所需的开销将占很大一部分执行时间
针对每行数据内容为”Timestamp Url”的数据文件,在用JobConf对象conf设置conf.setInputFormat(WhichInputFormat.class)来读取这个文件时,WhichInputFormat应该为以下的
A. TextInputFormat
B. KeyValueTextInputFormat
C. SequenceFileInputFormat
D. NLineInputFormat
答案:B
知识点:四项主要的InputFormat类。KeyValueTextInputFormat以每行第一个分隔符为界,分隔符前为key,之后为value,默认制表符为\t
有关MapReduce的输入输出,说法错误的是
A. 链接多个MapReduce作业时,序列文件是首选格式
B. FileInputFormat中实现的getSplits()可以把输入数据划分为分片,分片数目和大小任意定义
C. 想完全禁止输出,可以使用NullOutputFormat
D. 每个reduce需将它的输出写入自己的文件中,输出无需分片
答案:B
知识点:分片数目在numSplits中限定,分片大小必须大于mapred.min.size个字节,但小于文件系统的块
Hadoop Streaming支持脚本语言编写简单MapReduce程序,以下是一个例子:
bin/hadoop jar contrib/streaming/hadoop-0.20-streaming.jar
—input input/filename
—output output
—mapper ‘dosth.py 5’
—file dosth.py
—D mapred.reduce.tasks=1
以下说法不正确的是
A. Hadoop Streaming使用Unix中的流与程序交互
B. Hadoop Streaming允许我们使用任何可执行脚本语言处理数据流
C. 采用脚本语言时必须遵从UNIX的标准输入STDIN,并输出到STDOUT
D. Reduce没有设定,上述命令运行会出现问题
答案:D
知识点:没有设定特殊的reducer,默认使用IdentityReducer
在高阶数据处理中,往往无法把整个流程写在单个MapReduce作业中,下列关于链接MapReduce作业的说法,不正确的是
A.Job和JobControl类可以管理非线性作业之间的依赖
B.ChainMapper和ChainReducer类可以用来简化数据预处理和后处理的构成
C.使用ChainReducer时,每个mapper和reducer对象都有一个本地JobConf对象
D.ChainReducer.addMapper()方法中,一般对键/值对发送设置成值传递,性能好且安全性高
答案:D
知识点:ChainReducer.addMapper()方法中,值传递安全性高,引用传递性能高
a)NameNode
b)Jobtracker
c)Datanode
d)secondaryNameNode
e)tasktracker
a)3 份
b)2 份
c)1 份
d)不确定
a)SecondaryNameNode
b)DataNode
c)TaskTracker
d)Jobtracker
此题分析:
hadoop的集群是基于master/slave模式,namenode和jobtracker属于master,datanode和tasktracker属于slave,master只有一个,而slave有多个SecondaryNameNode内存需求和NameNode在一个数量级上,所以通常secondary NameNode(运行在单独的物理机器上)和NameNode运行在不同的机器上。
JobTracker和TaskTracker
JobTracker 对应于 NameNode
TaskTracker 对应于 DataNode
DataNode 和NameNode 是针对数据存放来而言的
JobTracker和TaskTracker是对于MapReduce执行而言的
mapreduce中几个主要概念,mapreduce整体上可以分为这么几条执行线索:obclient,JobTracker与TaskTracker。
1、JobClient会在用户端通过JobClient类将应用已经配置参数打包成jar文件存储到hdfs,并把路径提交到Jobtracker,然后由JobTracker创建每一个Task(即MapTask和ReduceTask)并将它们分发到各个TaskTracker服务中去执行。
2、JobTracker是一个master服务,软件启动之后JobTracker接收Job,负责调度Job的每一个子任务task运行于TaskTracker上,并监控它们,如果发现有失败的task就重新运行它。一般情况应该把JobTracker部署在单独的机器上。
3、TaskTracker是运行在多个节点上的slaver服务。TaskTracker主动与JobTracker通信,接收作业,并负责直接执行每一个任务。TaskTracker都需要运行在HDFS的DataNode上。
a)Martin Fowler
b)Kent Beck
c)Doug cutting
a)32MB
b)64MB
c)128MB
(因为版本更换较快,这里答案只供参考)
a)CPU
b)网络
c)磁盘IO
d)内存
该题解析:
首先集群的目的是为了节省成本,用廉价的pc机,取代小型机及大型机。小型机和大型机有什么特点?
1.cpu处理能力强
2.内存够大
所以集群的瓶颈不可能是a和d
3.网络是一种稀缺资源,但是并不是瓶颈。
4.由于大数据面临海量数据,读写数据都需要io,然后还要冗余数据,hadoop一般备3份数据,所以IO就会打折扣。
a)它是 NameNode 的热备
b)它对内存没有要求
c)它的目的是帮助 NameNode 合并编辑日志,减少 NameNode 启动时间
d)SecondaryNameNode 应与 NameNode 部署到一个节点。
多选题:
a)Puppet
b)Pdsh
c)Cloudera Manager
d)Zookeeper
a)如果一个机架出问题,不会影响数据读写
b)写入数据的时候会写到不同机架的 DataNode 中
c)MapReduce 会根据机架获取离自己比较近的网络数据
10. Client 端上传文件的时候下列哪项正确?答案B
a)数据经过 NameNode 传递给 DataNode
b)Client 端将文件切分为 Block,依次上传
c)Client 只上传数据到一台 DataNode,然后由 NameNode 负责 Block 复制工作
该题分析:
Client向NameNode发起文件写入的请求。
NameNode根据文件大小和文件块配置情况,返回给Client它所管理部分DataNode的信息。
Client将文件划分为多个Block,根据DataNode的地址信息,按顺序写入到每一个DataNode块中。
a)单机版
b)伪分布式
c)分布式
a)Cloudera manager
b)Tarball
c)Yum
d)Rpm
判断题:
分析:此题的目的是考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的系统级配置。
分析:Nagios是集群监控工具,而且是云计算三大利器之一
分析:SecondaryNameNode是帮助恢复,而不是替代,如何恢复,可以查看
分析:第一套付费产品是Cloudera Enterpris,Cloudera Enterprise在美国加州举行的 Hadoop 大会 (Hadoop Summit) 上公开,以若干私有管理、监控、运作工具加强 Hadoop 的功能。收费采取合约订购方式,价格随用的 Hadoop 叢集大小变动。
分析:rhadoop是用R语言开发的,MapReduce是一个框架,可以理解是一种思想,可以使用其他语言开发。
分析:lucene是支持随机读写的,而hdfs只支持随机读。但是HBase可以来补救。HBase提供随机读写,来解决Hadoop不能处理的问题。HBase自底层设计开始即聚焦于各种可伸缩性问题:表可以很“高”,有数十亿个数据行;也可以很“宽”,有数百万个列;水平分区并在上千个普通商用机节点上自动复制。表的模式是物理存储的直接反映,使系统有可能提高高效的数据结构的序列化、存储和检索。
20. NameNode 负责管理 metadata,client 端每次读写请求,它都会从磁盘中读取或则会写入 metadata 信息并反馈 client 端。(错误)
“`此题分析:
NameNode 不需要从磁盘读取 metadata,所有数据都在内存中,硬盘上的只是序列化的结果,只有每次 namenode 启动的时候才会读取。
1)文件写入
Client向NameNode发起文件写入的请求。
NameNode根据文件大小和文件块配置情况,返回给Client它所管理部分DataNode的信息。
Client将文件划分为多个Block,根据DataNode的地址信息,按顺序写入到每一个DataNode块中。
Hadoop 采用 MapReduce 来整合分布式文件系统上的数据,以保证分析和处理数据的高效。
Datanode 程序负责HDFS数据存储 。
HDFS默认Block Size的是 128MB
磁盘通常是集群的最主要的性能瓶颈
Spark不包含在Hadoop生态系统中。
在默认情况下,HDFS块的大小为128MB
在大多数情况下,副本系数为3,HDFS的存放策略将第二个副本放在同一机架的不同节点
假设设置的副本数是3,现在系统中有5个副本,那么系统会删除2个副本
在配置文件hdfs-default.xml中定义副本率为1时,HDFS 将永远处于安全模式。
汇报Block信息不属于NameNode的功能。
在HDFS文件系统读取文件的过程中,客户端通过对输入流调用read()方法开始读取数据,写入文件的过程中,客
户端通过对输出流调用write()方法开始写入数据
HDFS全部文件的全部元数据是存储在NameNode节点的内存,为了解决这个瓶颈,HDFS产生了Federation机制
HDFS命令行接口中查看文件列表中第五列是文件大小
HDFS中,文件的访问权限不包含读写权限
每个文件和目录都有所属用户、所属组别及模式,这个模式的组成不包含所属组的权限
FileStatus类封装了文件系统中文件和目录的元数据,其中不包括文件大小
Hadoop目前支持很多压缩格式,,bzip2 支持切分
考虑到性能最好使用本地库来压缩和解压,但并非所有格式都有本地实现和Java实现, Gzip、 DEFLATE 压缩格
式既有本地实现又有Java实现,
易操作 不是RPC对于序列化的要求
对于WritableComparable的接口声明, 是正确的
publicinterfaceWritableComparableextendsWritable,Comparable{}
InitWritable 不是Writable集合类
MapReduce程序由Map和Reduce两个阶段组成,用户只需要编写 Map 和 Reduce 两个函数即可完成分布式程序的设计。而在这两个函数中是以 key/value 作为输入输出的
在YARN/MRv2计算框架中提出了全新的资源管理框架 YARN ,它将JobTracker中的资源管理和作业控制功能分开,分别由 ResourceManager 和 ApplicationMaster 两个不同进程实现。
Mapper类和Reducer类具有 setup、map、cleanup、run 四个方法,在我们编写的过程中只需要编写 map 方法即可。
查看新版MapReduce的Web页面默认的端口号是18088
在map和reduce函数的输入和输出类型中,必须一致的是map的输出和reduce的输入
如何减少输入分片的数量 增大分片大小来减少分片的数量
默认的InputFormat是 TextInputFormat 。每条记录是一行输入,键是 LongWritable 类型,存储该行在整个文件中的字节偏移量。值是这行的内容,不包括任何行终止符,它被打包成一个 Text 对象
分片大小的计算公式为 max(minimumSize,min( maximumSize,blockSize)) 。默认情况下,minimumSize、blockSize、maximumSize的大小关系为minimumSize< blockSize