Bootstrap

大数据技术原理与应用

记录每天的自测题

10.17
下列关于Hadoop API 说法错误的是( )

A. Configuration 类的默认实例化方法是以HDFS系统的资源配置为基础
B. FileStatus对象存储文件和目录的元数据
C. FSDataInputStream是java.io.DataInputStream的子类
D. Hadoop的文件API不是通用的,只用于HDFS文件系统

我的答案:D正确答案:D

Hadoop的文件API是通用的,可用于HDFS之外的其他文件系统。

关于Hadoop下列说法错误的是( )

A. HDFS暴露了文件系统的命名空间、允许用户以文件的形式在上面存储数据
B. Datanode执行比如打开、关闭、重命名文件操作
C. HDFS采用了Master/Slave的架构模型
D. Namenode负责维护文件系统的命名空间

我的答案:B正确答案:B

NameNode执行打开、关闭、重命名文件或目录。

关于HDFS Shell操作正确的是( )

A、hadoop fs - moveFromLocal /a.txt /aaa/ 从本地剪切粘贴到hdfs

B、bin/hdfs dfs –ls –R / 表示只查看hdfs上根目录下的目录与文件

C、Hadoop fs -rm URI [URI …] 递归删除HDFS上的文件

D、hadoop fs -mv /aaa/jdk.tar.gz / 将hdfs目录中的文件移动到本地文件夹中

A. C
B. B
C. D
D. A

我的答案:B正确答案:D

Hadoop fs -rm URI [URI …] 仅删除非空目录和文件,递归删除为rmr;

bin/hdfs dfs –ls –R / 表示查看hdfs上根目录下所有的目录与文件;

hadoop fs -mv /aaa/jdk.tar.gz / 在hdfs目录中移动文件。

关于Hadoop体系架构说法不正确的是( )

A. HDFS集群有两类节点以管理者-工作者模式运行
B. NameNode永久保存记录着每个文件中各个块所在的数据节点和位置信息
C. NameNode管理文件系统的命名空间
D. HDFS上的文件也被划分为块大小的多个分块作为独立的存储单元

我的答案:B正确答案:B

Namenode记录着每个文件中各个块所在的数据节点信息,但它并不永久保存块的位置信息,这些信息会在系统启动时由数据节点重建。

关于HDFS Shell操作不正确的是( )

A、Hadoop fs -rm URI [URI …] 递归删除HDFS上的文件

B、Hadoop fs -text 将源文件输出为文本格式

C、Hadoop fs -chmod 改变文件的权限

D、Hadoop fs -du URI [URI …] 显示目录中所有文件的大小,或者当只指定一个文件时,显示此文件的大小

A. D
B. B
C. C
D. A

我的答案:D正确答案:D

Hadoop fs -rm URI [URI …] 仅删除非空目录和文件。递归删除为rmr。

以下关于HDFS中Block的说法正确的是( )

A、一个磁盘有自己的块大小,一般为512个字节,HDFS中的块大小与本地磁盘保持一致

B、为了容错,一般Block的默认备份1份,并且会尽量考虑到网络拓扑进行分布式存储

C、由于分布式文件系统中使用Block来抽象数据存储,由于文件的分块不需要存储在同一个机器上,所以HDFS的文件可以大于每个单独的磁盘大小

D、数据文件的各个Block主要存储在namenode上

A. B
B. D
C. C
D. A

我的答案:C正确答案:C

A、默认1.0是64mb,2.0是128mb B、默认3副本 D、namenode(nn)相当于管理者,数据实际存在datanode

HDFS文件系统中一个gzip文件大小75MB,客户端设置Block的大小为默认,请问此文件占用几个Block?( )

A. 1
B. 2
C. 3
D. 4

我的答案:A正确答案:B

75M数据,数据块大小为64M,则:75M=1*64M+11M,需要占用2个Block。

关于Hadoop单机模式和伪分布式的说法正确的是( )

A. 两者都不与守护进程交互,避免复杂性
B. 两者都启动守护进程,且守护进程运行在一台机器上
C. 单机模式不使用HDFS,但加载守护进程
D. 后者比前者增加了HDFS输入输出以及可检查内存使用情况

我的答案:D正确答案:D

伪分布式守护进程可以不在一台机器上,单机模式使用HDFS,伪分布式与守护进程交互。

hadoop中,下面关于向文件系统中添加一个文件的过程,错误的是( )

A. 将所有操作记录到EditLog中去
B. 需要创建一个新的INode文件
C. 将新的INode文件加入到name space中去
D. 需要创建路径的父目录

我的答案:B正确答案:A

关于Hadoop SSH免密码登录说法错误的是( )

A. 在SSH安全协议的原理中, 是一种非对称加密与对称加密算法的结合
B. 生成SSH密钥之后,只需要输入ssh-copy-id localhost即可免密码登陆
C. 生成公钥和私钥的只要输入~/.ssh/ssh-genkey –t rsa命令,四个回车即可
D. 在本机搭建好SSH免密码登陆,就可以随意的访问其它节点服务

我的答案:D正确答案:D

在本机搭建好SSH免密码登陆,只可以随意的访问本机的服务。

关于NameNode和Secondary NameNode的说法错误的是( )

A. 数据的通信使用的是ftp协议
B. 协议的容器是jetty
C. NameNode上实现的NamenodeProtocol用于二者命令通信
D. 数据通信使用的是http协议

我的答案:D正确答案:A

数据通信使用的是http协议。

HDFS默认的当前工作目录是/user/$USER, fs.default.name的值需要在哪个配置文件内说明?( )

A. mapred-site.xml
B. hdfs-site.xml
C. 以上均不是
D. core-site.xml

我的答案:D正确答案:D

fs.default.name的值需要在core-site.xml配置文件内说明。

下面哪个不是Hadoop的输出数据格式?( )

A. 多输出
B. 二进制输出 
C. 单一输出 
D. 文本输出

我的答案:C正确答案:C

Hadoop的输出数据格式有文本输出、二进制输出、多输出。

Client在HDFS上进行文件写入时,namenode根据文件大小和配置情况,返回部分datanode信息,()负责将文件划分为多个Block,根据DataNode的地址信息,按顺序写入到每一个DataNode块。

A. Client
B. Datanode
C. Secondary namenode 
D. Namenode

我的答案:C正确答案:A

HDFS写入时,Client只上传数据到一台DataNode,然后由NameNode负责Block复制工作。

以下关于Hadoop说法正确的是( )

A、Hadoop支持数据的随机读写

B、因为HDFS中采用了备份的机制, 所以不存在单点故障

C、Hadoop默认调度器策略为FIFO

D、NameNode负责管理metadata,client端每次读写请求, NameNode都需要从磁盘中读取或者写入metadata信息

A. A
B. C
C. D
D. B

我的答案:C正确答案:B

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

下列不是FileSystem类的常见方法的是( )

A. Path()
B. getScheme()
C. getDefaultPort()
D. getStatus()

我的答案:D正确答案:A

Path()是Path类的常用的构造方法。

下列哪个程序通常与 NameNode 在一个节点启动?( )

A. TaskTracker
B. SecondaryNameNode
C. Jobtracker
D. DataNode

我的答案:C正确答案:C

Jobtracker通常与NameNode在一个节点启动。

关于HDFS的文件写入,正确的是( )

A. 用户可以在文件任意位置进行修改
B. 复制的文件块默认都存在同一机架上
C. 支持多用户对同一文件的写操作
D. 默认将文件块复制成三份存放

我的答案:D正确答案:D

在HDFS的一个文件中只有一个写入者,而且写操作只能在文件末尾完成,即只能执行追加操作。默认三份文件块两块在同一机架上,另一份存放在其他机架上。

关于HDFS API的说法不正确的是( )

A、Configuration提供了对配置参数的访问

B、FileSystem基于configuration创建FileSystem对象,为了调用FileSystem里面的相关方法对应具体的操作

C、Path在FileSystem中仅提供文件的路径

D、FSDataInputStream和FSDataOutputStream 这两个分别是HDFS中的输入和输出流

A. D
B. B
C. C
D. A

我的答案:D正确答案:C

Path在FileSystem中提供文件的路径和命名空间。

可通过修改哪个文件,更改SSH服务的默认端口?( )

A. /etc/sysconfig/ssh
B. /etc/ssh/sshd_config
C. /etc/ssh/ssh_config
D. /etc/sysconfig/sshd

我的答案:B正确答案:B

10.21

下列( )不属于NameNode的功能。

A. metadata信息在启动后会加载到内存
B. 保存Block信息,汇报Block信息
C. 提供名称查询服务
D. 保存metadata信息

我的答案:B正确答案:B

DataNode汇报block信息。

关于HDFS的文件写入,正确的是( )

A. 用户可以在文件任意位置进行修改
B. 复制的文件块默认都存在同一机架上
C. 支持多用户对同一文件的写操作
D. 默认将文件块复制成三份存放

我的答案:B正确答案:D

在HDFS的一个文件中只有一个写入者,而且写操作只能在文件末尾完成,即只能执行追加操作。默认三份文件块两块在同一机架上,另一份存放在其他机架上。

下列哪个程序通常与 NameNode 在一个节点启动?( )

A. TaskTracker
B. SecondaryNameNode
C. Jobtracker
D. DataNode

我的答案:A正确答案:C

Jobtracker通常与NameNode在一个节点启动。

关于HDFS API的说法正确的是( )

A、FileSystem中有很多方法,跟File中的方法一致,如exists,delete,mkdir,create等等一些常用的文件操作方法

B、FileSystem实现了Closeable接口

C、操作HDFS,也就是HDFS的读和写,最常用的类File

D、Hadoop的文件API不是通用的,只用于HDFS文件系统

A. B
B. C
C. A
D. D

我的答案:B正确答案:A

FileSystem中的方法并非和File中的方法一致,只是非常类似;

操作HDFS,也就是HDFS的读和写,最常用的类FileSystem;

Hadoop的文件API是通用的,可用于HDFS之外的其他文件系统。

关于HDFS API的说法错误的是( )

A. 在FileSystem系统中文件或目录的名字,使用反斜杠\进行分隔字符串
B. FileSystem不能直接实例化,可以通过get方法获取该对象
C. Configuration可以通过设置配置文件读取类路径来实现
D. Hadoop通过使用FileSystem类来提供文件系统操作

我的答案:C正确答案:A

在FileSystem系统中文件或目录的名字,使用斜杠/进行分割的字符串。

下面有关NameNode和DataNode之间的heartbeat说法错误的是()

A、DataNode通过发送Heartbeat告诉NameNode自己还“活着”,并且工作正常

B、HeartBeat包含DataNode状态相关信息

C、如果NameNode在某一固定时间内没有收到DataNode的Heartbeat,那么它会要求DataNode发送Heartbeat

D、NameNode回复Heartbeat回复一些FataNode Command

A. B
B. A
C. D
D. C

我的答案:C正确答案:D

关于Hadoop FileSystem的说法不正确的是( )

A、FileSystem中有很多方法,跟File中的方法一致,如exists,delete,mkdir,create等等一些常用的文件操作方法

B、FileStatus中有一系列的方法,可以得到文件的信息。如:getLen()得到文件的长度,以字节的形式

C、globStatus()方法返回于其路径匹配的所有文件的FileStatus队形数据,并按路径排序。

D、FileStatus对象存储文件和目录的元数据

A. B
B. A
C. C
D. D

我的答案:C正确答案:B

FileSystem中的方法并非和File中的方法一致,只是非常类似。

下面有关Namenode安全模式(safemode)说法错误的是( )

A. name space处于安全模式时只能被读取
B. 安全模式下不能够复制或删除文件中的数据块
C. 调用setSafeMode()函数能够打开或关闭安全模式
D. NameNode正常启动完成后,就会进入安全模式

我的答案:A正确答案:D

关于HDFS Shell操作不正确的是( )

A、Hadoop fs -get [-ignorecrc] [-crc] 复制文件到本地文件系统

B、Hadoop fs -chmod 改变文件的权限

C、bin/hdfs dfs –ls –R / 表示只查看hdfs上根目录下的目录与文件

D、bin/Hadoop fs –put [-txt] / 表示从本地上传文件到hdfs上

A. B
B. D
C. A
D. C

我的答案:B正确答案:D

下面哪个选项中的Daemon总是运行在同一台主机上?

A. Name Node & Job Tracker
B. Secondary Name Node & Job Tracker
C. Data Node & Task Tracker
D. Name Node & Secondary Name Node

我的答案:D正确答案:C

JobTracker是一个master服务,软件启动之后JobTracker接收Job,负责调度Job的每一个子任务task运行于TaskTracker上,TaskTracker是运行在多个节点上的slaver服务,TaskTracker主动与JobTracker通信,接收作业,并负责直接执行每一个任务。

JobTracker对应于NameNode;

TaskTracker对应于DataNode。

关于Hadoop SSH的使用方法错误的是( )

A. ssh root 192.168.0.2
B. ssh -l root 192.168.0.2
C. ssh 192.168.0.2
D. ssh [email protected] -p 1234

我的答案:B正确答案:A

关于服务启动正确的是( )

A. sbin/start-hdfs.sh
B. sbin/hadoop-daemon.sh namenode start
C. sbin/hadoop-daemon.sh start-yarn.sh
D. sbin/hadoop-daemon.sh start resourcemanager

我的答案:A正确答案:D

三种方式启动Hadoop:

sbin/start-all.sh;

sbin/start-dfs.sh|start-yarn.sh;

sbin/hadoop-daemon.sh start XXX。

HDFS无法高效存储大量小文件,想让它能处理好小文件,比较可行的改进策略不包括()

A. 多Master设计
B. 利用SequenceFile、MapFile、Har等方式归档小文件
C. Block大小适当调小
D. 调大namenode内存或将文件系统元数据存到硬盘里

我的答案:C正确答案:D

HDFS的特性通过调大namenode内存或将文件系统元数据存到硬盘里并不能使HDF处理好小文件。

如何启动ssh服务?( )

A. service ssh status
B. service sshd start
C. service ssh start
D. /etc/init.d/ssh status

我的答案:B正确答案:B

启动ssh服务的命令为service sshd start。

下列关于SecondaryNameNode不正确的是( )

A. 它的目的是帮助NameNode合并编制日志,减少NameNode启动时间
B. 它是NameNode的热备
C. SecondaryNameNode应与NameNode部署到一个节点
D. Secondary namenode就是namenode出现问题时的备用节点

我的答案:A正确答案:C

SecondaryNameNode是为了给namenode减轻压力的角色,工作职责就是定期合并磁盘元数据文件为序列化的镜像文件,以减少namenode冷启动时需要加载元数据的时间。在合并的时候也需要把之前的元数据都加载到内存,所以对内存也有一定的依赖,所以肯定不能和namenode启动在同一个节点。否则就起不到任何减轻压力的作用了。

执行数据块复制的任务是,是下列选项中的哪两个在进行通信?( )

A. datanode and datanode
B. client and datanode
C. namenode and datanode
D. client and namenode

我的答案:D正确答案:A

执行数据块复制的任务是,是datanode和datanode在进行通信。

下列关于HBase存储错误的是()(单选题)

A. 每个列族存储在HDFS上的一个单独文件夹中。
B. Key和version number会在每个列族中存储一份。
C. 存储时, row key(行键)与column-family(列族)就可以确定锁定唯一值。
D. 空值不会被存储,不会占据空间。

我的答案:D正确答案:C

存储时,需要知道table(表)、row key(行键)与column-family(列族)、column(列)、时间戳才可以确定锁定唯一值

HFile数据格式中的KeyValue数据格式中Value部分是()?(单选题)

A. 二进制数据
B. 拥有复杂结构的字符串
C. 拥有简单结构的字符串
D. 压缩数据

我的答案:A正确答案:A

HBase构建二级索引的实现方式有哪些?(多选题)

A. Filter
B. Coprocessor
C. Bloom Filter
D. MapReduce

我的答案:D,A正确答案:B,D

关于自定义过滤器说法错误的是()?(单选题)

A、filterRow(List kvs)一旦所有行和;列经过之前两个方法的检查之后,这个方法就会被调用

B、reset() 在迭代扫描中为每个新行重置过滤器

C、filterRowKey(byte[] buffer,int offset,int length) 该方法使用Filter的实现方法检查行键,用户可以跳出列数据以避免以后的处理

D、filterKeyValue(KeyValue v) 如果本行数据没有被之前的方法过滤掉,那么执行框架会调用这个方法检索这一行中每个KeyValue实例

A. C
B. A
C. B
D. D

我的答案:正确答案:A

本方法使用Filter的实现方法检查行键,用户可以跳出行数据以避免以后的处理。RowFilter使用这个方法来筛选符合条件的行并返回给客户端。

关于HBase 过滤器说法错误的是()?(单选题)

A、Get和Scan两个类都支持过滤器,但这些类对象提供的基本API不能对行键、列名或列值进行过滤,但是通过过滤器可以达到这个目标

B、过滤器最基本的接口叫Filter,除此之外,还有一些由HBase提供的无需编程就可以直接使用的类

C、用户不仅可以使用HBase中预定好的过滤器,而且可以实现自定义的过滤器

D、不是所有的过滤器都在服务端生效

A. A
B. D
C. B
D. C

我的答案:正确答案:B

所有的过滤器都在服务端生效,叫做谓词下推(predicate push down)。这样可以保证被过滤掉的数据不会被传送到客户端

下列选项中哪一个不是Dedicated Filter(专用过滤器) ()?(单选题)

A. SkipFilter
B. TimestampsFilter
C. PageFilter
D. PrefixFilter

我的答案:正确答案:A

SkipFilter属于Decorating Filters(附加过滤器)

下面对HBase的描述哪些是正确的?(多选题)

A. 不是开源的
B. 是一种NoSQL数据库
C. 是分布式的
D. 是面向列的

我的答案:正确答案:B,C,D

HBase是一个开源的非关系型数据库

下列关于专业过滤器说法正确的是()?(多选题)

A、前缀过滤器(PrefixFilter):所有的row的实例匹配prefix的时候返回结果集合

B、单列值过滤器(SingleColumnValueFilter):选定列簇和某一列,然后与列的value相比,正确的返回全部的row

C、首次行键过滤器(FirstKeyOnlyFilter):当对hbase中的表进行count,sum操作等集合操作的时候,使用FirstKeyOnlyFilter会带来性能上的提升

D、分页过滤器(PageFilter):页过滤,通过设置pagesize参数可以返回每一页page的数量

A. B
B. D
C. A
D. C

我的答案:正确答案:A,B,C,D

下列关于HBase平台部署描述错误的是?(单选题)

A、HBASE_MANAGES_ZK=true,表示由hbase自己管理zookeeper,不需要单独的部署zookeeper

B、hbase.rootdir 用于指定HBase数据的存储位置

C、hbase.zookeeper.property 指定zookeeper数据存储目录,默认路径是/tmp,如果不配置,重启之后数据不会被清空

D、hbase.zookeeper.quorum 指定使用zookeeper的主机地址

A. B
B. C
C. D
D. A

我的答案:正确答案:B

hbase.zookeeper.property 指定zookeeper数据存储目录,默认路径是/tmp,如果不配置,重启之后数据会被清空

下面哪些概念是HBase框架中使用的?(多选题)

A. GridFS
B. HDFS
C. Zookeeper
D. EXT3

我的答案:正确答案:B,C

HBase依赖Hadoop、Zookeeper(Zookeeper也可以使用HBase自带的)

HFile数据格式中的Magic字段用于()(单选题)

A. 存储数据块的起点
B. 指定字段的长度
C. 存储数据的起点
D. 存储随机数,防止数据损坏

我的答案:正确答案:D

启动HBase的进程,除了使用start-hbase.sh ,还可以通过hbase-deamon.sh单独启动HBase所示需要的守护进程,那么下列关于单独启动HBase进程表示正确的是()?(单选题)

A. hbase-deamon.sh zookeeper
B. start hbase-deamon.sh master
C. hbase-deamon.sh regionserver start
D. hbase-deamon.sh start master

我的答案:C正确答案:D

关于HBase Get()方法说法错误的是()?(单选题)

A. addFamily()方法使get请求不仅能取得一个指定的列族,还能够取得多个列族
B. 虽然一次get()操作只能允许取一行数据,但不会限制一行当中多少列或者多少单元格
C. get方法与put方法一样,get方法不仅仅只能获取单行数据,也能获取多行数据
D. 使用列表参数的get()方法与使用列表参数的put方法对应,用户可以一次性请求获取多行数据

我的答案:A正确答案:A

addFamily()方法限制get请求只能取得一个指定的列族,要取得多个列族时需要多次调用

下列关于get操作描述错误的是( )?(单选题)

A、get ‘user’, ‘rk0001’, {COLUMN => [‘info’, ‘data’]} 获取user表中row key为rk0001,info、data列族的信息

B、get ‘user’, ‘rk0001’, ‘info’, 'data’获取user表中row key为rk0001,info、data列族的信息

C、get ‘user’, ‘rk0001’, {COLUMN => [‘info:name’, ‘data:pic’]} 获取user表中row key为rk0001,info、data列族的信息

D、get ‘user’, ‘info:name’, 'info:age’获取user表中,info列族的name、age列标示符的信息

A. B
B. A
C. C
D. D

我的答案:D正确答案:D

get ‘user’,’rk0001’, ‘info:name’,
'info:age’获取user表中,行键为rk0001,info列族的name、age列标示符的信息。直接使用get+表名+列族名:列名是查询不到数据

关于API建表的相关方法错误的是()?(单选题)

A、void createTable(HTableDescriptor desc,byte[] startKey,byte[] endKey,int numRegions)

B、void createTable(HTableDescriptor desc,byte[][] splitKeys)

C、void createTable(HTableDescriptor desc)

D、void createTableAsync(HTableDescriptor desc)

A. C
B. D
C. B
D. A

我的答案:D正确答案:B

void createTableAsync(HTableDescriptor desc,byte[][] splitKeys)

关于HBase与MapReduce集成说法错误的是()?(多选题)

A. MapReduce使用HDFS来把任务分配到文件系统上的数据块和移动计算到数据
B. TableMapper允许从MapReduce轻松把数据写回到HBase
C. 通过MapReduce的API实现可以以任何形式访问HBase的代码
D. TableReducer允许MapReduce应用从HBase里轻松读取数据

我的答案:B,C正确答案:B,D

TableMapper允许MapReduce应用从HBase里轻松读取数据

TableReducer允许从MapReduce轻松把数据写回到HBase

关于HBase与MapReduce集成说法错误的是()?(多选题)

A. MapReduce使用HDFS来把任务分配到文件系统上的数据块和移动计算到数据
B. TableMapper允许从MapReduce轻松把数据写回到HBase
C. 通过MapReduce的API实现可以以任何形式访问HBase的代码
D. TableReducer允许MapReduce应用从HBase里轻松读取数据

我的答案:B,C正确答案:B,D

TableMapper允许MapReduce应用从HBase里轻松读取数据

TableReducer允许从MapReduce轻松把数据写回到HBase

关于单计数器说法错误的是()?(单选题)

A. 使用0时可以得到当前计数器的值
B. 用负值时不会减少当前计数器的值
C. 用负值时可以减少当前计数器的值
D. 使用正值是增加计数器的值

我的答案:B正确答案:B

用负值时可以减少当前计数器的值。

关于下列族构造函数写法正确的是()?(多选题)

A、HColumnDescriptor()

B、HColumnDescriptor(String familyName)

C、HColumnDescriptor(byte[] familyName)

D、HColumnDescriptor(byte[] familyName, int maxVersions, String compression,boolean inMemory, boolean blockCacheEnabled, int timeToLive,

String bloomFilter)

A. B
B. A
C. D
D. C

我的答案:C,D正确答案:A,B,C,D

关于表的说法不正确的是()?(单选题)

A、用户只可以用Java String指定表的名称

B、HBase的面向列的存储格式允许你存储很多细节到相同的表中,而在关系型数据库模型中,将会被分成很多单独的表

C、在HBase中数据最终会存储在一张表或多张表中,使用表的主要原因是控制表中的所有列以达到共享表内的某些特性的目的

D、用户可以用一个名称或已经存在的描述符(descriptor)创建一个表

A. C
B. D
C. A
D. B

我的答案:B正确答案:C

用户可以用一个Java String或byte[] 指定表的名称

使用MR向HBase中插入数据时说法正确的是()?(单选题)

A、Mapper任务写入HBase Region。Mapper任务不一定写入同一台物理主机的Region上

B、Reducer任务写入HBase Region。Reducer任务不一定写入同一台物理主机的Region上

C、Mapper任务写入HBase Region。Mapper任务必须要写入同一台物理主机的Region上

D、Reducer任务写入HBase Region。Reducer任务必须要写入同一台物理主机的Region上

A. B
B. D
C. C
D. A

我的答案:C正确答案:A

Reducer任务写入HBase Region。Reducer任务不一定写入同一台物理主机的Region上

关于多计数器说法错误的是()?(单选题)

A、可以一次更新多个计数器,但这些计数器必须位于同一行

B、单计数器一次操作一个计数器,由htable的increment方法执行,多计数器由Increment类和htable的incrementColumnValue方法完成

C、hbase提供了计数器功能,可以方便修改并提供原子性保证

D、通常hbase更新操作步骤:获取rowlock,查询数据,在客户端修改数据,执行put等操作,释放rowlock

A. D
B. B
C. C
D. A

我的答案:D正确答案:B

单计数器一次操作一个计数器,由htable的incrementColumnValue方法执行,多计数器由Increment类和htable的increment方法完成
(反了)

关于Bytes类说法错误的是()?(单选题)

A、Static long toLong(byte[] bytes,int offset,int length), 此方法表示用户可以输入一个字节数组、一个偏移值和一个长度值

B、Bytes类不支持原生Java类型到字节数组的互转

C、Static long toLong(byte[] bytes), 此方法表示用户可以输入一个字节数组

D、Static long toLong(byte[],int offset), 此方法表示用户可以输入一个字节数组再加一个偏移值

A. C
B. B
C. A
D. D

我的答案:B正确答案:B

Bytes类支持原生Java类型到字节数组的互转

关于HBase Delete对象的构造函数写法正确的是()?(多选题)

A. Delete (byte[] row,long timestamp,RowLock rowlock)
B. Delete(byte[] row,RowLock rowlock)
C. Delete (byte[] row)
D. Delete(byte[] row,long timestamp)

我的答案:D,C,B,A正确答案:A,C

关于HBase 缓存和批量处理说法错误的是()?(单选题)

A、缓存是面向行一级的操作,而批量则是面向列一级的操作

B、每一个next()调用都会为每行数据生成一个单独的RPC请求

C、setScannerCaching()可以设置缓存大小,getScannerCaching()可以返回当前缓存大小的值

D、在扫描设置setBatch(2),则一次next()返回的Result实例会包括10列

A. C
B. A
C. D
D. B

我的答案:D正确答案:C

在扫描设置setBatch(2),则一次next()返回的Result实例会包括2列

关于扫描说法正确的是()?(单选题)

A、当遇到了与设置的终止行相同或大于终止行的行键时,扫描就会停止。如果没有指定终止行键,会扫描到表尾

B、用户可以通过setTimestamp()设置的时间戳,或者通过setTimeRange()设置时间范围,进一步对结果进行限制

C、一旦设置好了Scan实例,就可以调用HTable的getScanner()方法,获得用于检索数据的ResultScanner实例

D、由于扫描操作的工作方式类似于迭代器,所以用户无需调用scan()方法创建实例,只需调用HTable的getScanner()方法

A. C
B. D
C. A
D. B

我的答案:A,C,D,B正确答案:A,B,C,D

关于HBase与MapReduce集成说法错误的是()?(单选题)

A、一个MapReduce作业中的源和目标都可以是HBase表,但不能够在一个作业中同时使用HBase作为输入和输出

B、使用MapReduce作业作为过程的一部分,该作业可以使用HBase进行读取或写入

C、用户可以在存储组合结果的不同表中查询数据。用户从哪里读数据和向哪里写数据是不受限制的

D、通过MapReduce的API实现可以以任何形式访问HBase的代码

A. A
B. C
C. D
D. B

我的答案:C正确答案:A

一个MapReduce作业中的源和目标都可以是HBase表,但也有可能在一个作业中同时使用HBase作为输入和输出

关于HBase put构造方法写法正确的是()?(多选题)

A. Put (byte[] row,long ts)
B. Put (byte[] row,RowLock rowlock)
C. Put (byte[] row,long ts,RowLock rowlock)
D. Put(byte[] row)

我的答案:C,D正确答案:A,B,C,D

关于表中列族说法正确的是()?(多选题)

A、列是用列族(column family)名和列限定符(column qualifier)的组合来称呼的,两部分用一个冒号分开:family:qualifier

B、列族(column family)名称必须由可打印字符组成:限定符(qualifier)可以由任意二进制字符组成

C、Java中的类有一些误拼。一个更合适的名称是HColumnFamilyDescriptor,它指出它的目的是定义列族(column family)参数而不是实际的列(column)

D、创建一个列族(column family)时,你可以指定各种参数来控制它的所有特性

A. B
B. C
C. D
D. A

我的答案:A,B,C,D正确答案:A,B,C,D

关于下列族构造函数写法正确的是()?(多选题)

A、HColumnDescriptor()

B、HColumnDescriptor(String familyName)

C、HColumnDescriptor(byte[] familyName)

D、HColumnDescriptor(byte[] familyName, int maxVersions, String compression,boolean inMemory, boolean blockCacheEnabled, int timeToLive,

String bloomFilter)

A. B
B. A
C. D
D. C

我的答案:A,B,C,D正确答案:A,B,C,D

使用MR从HBase中读取数据时说法正确的是()?(单选题)

A、MapReduce Reducer作业从HBase中取得region作为输入源,每个region默认建立一个Reducer

B、MapReduce Mapper作业从HBase中取得region作为输入源,每个region默认建立一个Mapper

C、MapReduce Reducer作业从HBase中取得region作为输入源,每个region默认建立两个Reducer

D、MapReduce Mapper作业从HBase中取得region作为输入源,每个region默认建立两个Mapper

A. C
B. A
C. B
D. D

我的答案:B正确答案:C

下列关于HBase Shell操作描述错误的是( )?(单选题)

A、describe 'student’查看表详情

B、deleteall ‘student’ 操作用于删除’student’表中所有的数据

C、在添加数据时,HBase会自动为添加的数据添加一个时间戳,故在需要修改数据时,只需直接添加数据,HBase即会生成一个新的版本,从而完成“改”操作

D、删除表有两步,第一步先让该表不可用,第二步删除表。直接drop未disable的表会失败

A. A
B. D
C. C
D. B

我的答案:D正确答案:D

deleteall 'student’后面必须加上行,操作用于删除’student’表中某一行的数据

列关于多计数器的API写法错误的是()(单选题)

A、Increment addColumn(byte[] family,byte[] qualifier,long amount)

B、Increment(byte[] row)

C、Increment(byte[] row,Rowlock rowlock)

D、Increment addColumn(byte[] row ,byte[] family,byte[] qualifier,long amount)

A. D
B. B
C. A
D. C

我的答案:B正确答案:A

Increment(byte[] row);Increment addColumn(byte[] family,byte[]
qualifier,long amount)

Rowkey设计的原则,下列哪些选项的描述是正确的?(多选题)

A. 可以使用字符串
B. 尽量保证越短越好
C. 本身是无序的
D. 可以使用汉字

我的答案:B,C,A正确答案:A,B,D

关于HBase API描述正确的是()?(多选题)

A、HTableDescriptor包含表的元信息,以key-value形式存储

B、HColumnDescriptor描述column family的信息

C、disable,enable,delete,这些操作封装在继承自TableOperation的类中

D、建表过程(HMaster的createTable方法):若指定了splitKeys则为该table按指定键初始创建多个region,否则仅创建一个region

A. D
B. A
C. C
D. B

我的答案:A,B,C,D正确答案:A,B,C,D

关于ResultScanner类说法错误的是()?(单选题)

A、当用户扫描到尾或到终止行时,由于没有足够的行来填充数据,返回的结果数组可能会小于既定长度

B、ResultScanner把扫描操作转换为类似的get操作,它将每一行数据封装成一个Result实例,并将所有的Result实例放入一个迭代器中

C、扫描操作通过一次RPC请求返回所有匹配的行

D、调用close()方法释放所有由扫描控制的资源

A. A
B. C
C. B
D. D

我的答案:B正确答案:B

扫描操作不会通过一次RPC请求返回所有匹配的行,而是以行为单位进行返回

关于API列操作的相关方法正确的是()?(多选题)

A、void addColumn(String tableName,HColumnDescriptor column)

B、void addColumn(byte[] tableName,HColumnDescriptor column)

C、void addColumn(String tableName,String columnName)

D、void addColumn(byte[] tableName,byte columnName)

A. A
B. C
C. B
D. D

我的答案:A,B正确答案:A,B,C,D

下列关于HBase Shell操作描述错误的是( )?(单选题)

A. scan ‘hbase:meta’ meta存放所有HFile信息
B. list_namespace查看HBase命名空间
C. scan ‘hbase:namespace’ namespace存放表中所有命名空间
D. list_namespace_tables ‘hbase’ 查看命名空间下的表

我的答案:A正确答案:A

存放所有region信息

下列关于单计数器 API说法错误的是()(单选题)

A、long incrementColumnvalue(byte [] row,byte[] family,byte[] qualifier,long amount)throws IOException

B、long incrementColumnvalue(string [] row, string [] family, string [] qualifier,long amount)throws IOException

C、long incrementColumnvalue(byte [] row,byte[] family,byte[] qualifier,long amount,

boolean writeToWAL) throws IOException

D、使用正值是增加计数器的值,使用0时可以得到当前计数器的值,使用负值时可以减少当前计数器的值

A. C
B. D
C. A
D. B

我的答案:A正确答案:D

下列关于从HBase中删除数据的应用示例说法错误的是()?(单选题)

A、delete.deleteFamily(Bytes.toBytes(“colfam3”)):删除整个列族,包括所有的列和版本

B、delete.deleteColumns(Bytes.toBytes(“colfam2”),Bytes.toBytes(“qual3”),15):删除一列中的给定版本,但不会删除旧的版本

C、delete.deleteColumns(Bytes.toBytes(“colfam2”),Bytes.toBytes(“qual1”):删除一列中的全部版本

D、delete.setTimestamp(1):设置时间戳

A. C
B. D
C. A
D. B

我的答案:C正确答案:D

delete.deleteColumns(Bytes.toBytes(“colfam2”),Bytes.toBytes(“qual3”),15):删除一列中的给定版本和所有更旧的版本

关于HBase Delete()方法说法正确的是()?(多选题)

A、Delete deleteColumns(byte[] family,byte[] qualifier),此方法从给定列中删除与给定时间戳相等或更旧的版本

B、Void setTimestamp(long timestamp) ,此方法从所有列族的所有列中删除与给定时间戳相同或更旧的版本

C、Delete deleteFamily(byte[] family,long timestamp),此方法删除给定列族中所有的列(包括所有版本)

D、Delete deleteColumn(byte[] family,byte[] qualifier,long timestamp) ,此方法只删除与时间戳匹配的给定列的指定版本,如果不存在,则不删除

A. B
B. D
C. C
D. A

我的答案:A,B,C,D正确答案:A,B

下列关于从HBase中获取数据的应用示例说法错误的是()?(单选题)

A、Get get= new Get(“row1”):使用一个指定的行键构建一个Get实例

B、get.addColumn(Bytes.toBytes(“colfam1”),Bytes.toBytes(“qual1”)):向Get实例中添加一个名为“colfam1:qual1”的列

C、Result result =table.get(get):从HBase中获取指定列的行数据

D、result.getValue(Bytes.toBytes(“colfama”),Bytes.toBytes(“qual1”)):从返回的结果中获取指定列的数据

A. A
B. D
C. C
D. B

我的答案:C正确答案:A

Get get= new Get(Bytes.toBytes(“row1”)) :使用一个指定的行键构建一个Get实例

关于服务启动正确的是()(单选题)

A. sbin/start-hbase.sh
B. sbin/start-all.sh
C. bin/start-hbase.sh
D. sbin/hbase-daemon.sh start RegionServer

我的答案:D正确答案:C

1、三种方式启动hadoop:sbin/start-all.sh; sbin/start-dfs.sh|start-yarn.sh

sbin/hadoop-daemon.sh start XXX

2、HBase服务启动,只能在bin目录下,不能再sbin/目录下

下列关于单计数器 API说法错误的是()(单选题)

A、long incrementColumnvalue(byte [] row,byte[] family,byte[] qualifier,long amount)throws IOException

B、long incrementColumnvalue(string [] row, string [] family, string [] qualifier,long amount)throws IOException

C、long incrementColumnvalue(byte [] row,byte[] family,byte[] qualifier,long amount,

boolean writeToWAL) throws IOException

D、使用正值是增加计数器的值,使用0时可以得到当前计数器的值,使用负值时可以减少当前计数器的值

A. C
B. D
C. A
D. B

我的答案:A正确答案:D

关于Cell说法正确的是()?(多选题)

A. cell.getRowOffset() 得到rowkey在数组中的索引下标
B. cell.getRowLength() 得到rowkey的长度
C. cell.getRowArray() 得到数据的byte数组
D. cell.getQualifierArray() 得到列名

我的答案:B,A,C正确答案:A,B,C,D

HBase依靠()存储底层数据(单选题)

A. Hadoop
B. HDFS
C. Memory
D. MapReduce

我的答案:D正确答案:B

HBase依赖于Hadoop中的HDFS

HBase构建二级索引的实现方式有哪些?(多选题)

A. Filter
B. Coprocessor
C. Bloom Filter
D. MapReduce

我的答案:A,D正确答案:B,D

下列关于HBase Shell查看记录的操作正确的是()?(多选题)

A. get ’表名’,’列名’ ,’值’
B. scan ’表名’
C. get ’表名’,’行名’
D. scan ’表名’,{COLUMNS=>‘列族名:列名’}

我的答案:D,B,A正确答案:B,C,D

下列选项中哪一个不是Dedicated Filter(专用过滤器) ()?(单选题)

A. SkipFilter
B. TimestampsFilter
C. PageFilter
D. PrefixFilter

我的答案:C正确答案:A

SkipFilter属于Decorating Filters(附加过滤器)

关于HBase Get的构造函数写法正确的是()?(多选题)

A. Get (byte[] row,long ts,RowLock rowlock)
B. Get(byte[] row,RowLock rowlock)
C. Get(byte[] row,long ts)
D. Get(byte[] row)

我的答案:D,C,B,A正确答案:B,D

关于Partitioner的说法错误的是( )

A. Partition是在map阶段完成后执行的
B. 由Partitioner来决定每条记录应该送往哪个reducer节点
C. 自定义分区的数量需要和reduce task的数量保持一致
D. mapreduce中默认的分区是BinaryPartitioner类

我的答案:A正确答案:D

mapreduce中的默认的分区是hashPartitioner类。

mapreduce中的默认的分区是hashPartitioner类。

在MapReduce编程模式中,Map任务的输入是( )

A. 一个或多个文件块
B. 文件系统中一篇文档
C. 由文件块转换的键值表对
D. 数据库中一条元组

我的答案:C正确答案:A

在MapReduce编程模式中,Map任务的输入是一个或多个文件块。

关于MapReduce提供的4种Partitioner,不正确的是( )

A、HashPartitioner是MapReduce的默认Partitioner

B、BinaryPartitioner继承于Partitioner<BinaryComparable,V>,是Partitioner的字节码子类

C、KeyFieldBasedPartitioner是基于hash的Partitioner。与BinaryPartitioner不同的是,它提供了多个区间用于计算hash

D、TotalOrderPartitioner类可以实现输出额全排序。这个类也是基于hash的

A. C
B. B
C. A
D. D

我的答案:C正确答案:D

TotalOrderPartitioner类可以实现输出额全排序。不同于以上3个Partitioner,这个类不是基于hash的。

关于MapReduce过程各个角色的作用说法不正确的是( )

A、JobTracker负责接收用户提交的作业,负责启动、跟踪任务执行

B、TaskTracker负责执行任务,负责启动、跟踪任务执行、访问任务状态和日志

C、JobClient负责提交作业

D、客户端提交一个MR的jar包给JobTracker,再由JobTracker分给TaskTracker

A. C
B. B
C. A
D. D

我的答案:B正确答案:A

MapReduce框架提供了一种序列化键/值对的方法,支持这种序列化的类能够在Map和Reduce过程中充当键或值,以下说法错误的是 ( )

A. 实现Writable接口的类是值
B. 实现WritableComparable接口的类可以是值或键
C. 键和值的数据类型可以超出Hadoop自身支持的基本类型
D. Hadoop的基本类型Text并不实现WritableComparable接口

我的答案:C正确答案:D

MapReduce的任意Key和Value必须实现Writable接口。Hadoop的基本类型Text实现WritableComparable< T >接口。

下面关于MapReduce的描述中正确的是( )

A. MapReduce程序的ReduceTask可以任意指定
B. MapReduce程序必须包含Mapper和Reducer
C. MapReduce程序的MapTask可以任意指定
D. MapReduce程序的默认数据读取组件是TextInputFormat

我的答案:D正确答案:A

分片数目在numSplits中限定,分片大小必须大于mapred.min.size个字节,但小于文件系统的块。

MapReduce编程模型中的默认数据读取组件是TextInputFormat和LineRecordReade

在MapReduce中,哪个组件是用户不指定也不会有默认的?( )

A. Combiner
B. InputFormat
C. Partitioner
D. OutputFormat

我的答案:C正确答案:A

在MapReduce编程模型中,Combiner是可有可无的组件,它的作用就是用来给mapTask的结果数据做局部合并以减少reduceTask接收的数据量,以减少网络数据传输。OutputFormat的默认组件是TextOutputFormat,InputFormat的默认组件是TextInputFormat,Partitioner的默认实现是HashPartitioner。

以下关于Combiner编程的说法错误的是( )

A. Combiner组件的父类就是Reducer
B. Combiner最基本的是实现本地的key的归并
C. combiner是发生在reduce的阶段中,主要作用是提高reducer的执行效率
D. 使用Combiner编程,先完成的map会在本地聚合

我的答案:D正确答案:C

combiner是发生在map的最后一个阶段,其原理也是一个小型的reducer,主要作用是减少输出到reduce的个数,减少reducer的输入,提高reducer的执行效率。

MapReduce框架中,在Map和Reduce之间的combiner的作用是( )

A. 对中间格式进行压缩
B. 对中间过程的输出进行本地的聚集
C. 对中间结果进行混洗
D. 对Map的输出结果排序

我的答案:D正确答案:B

combiner的作用是对中间过程的输出进行本地的聚集。

下列关于HBase Shell命令创建表正确的是()?(多选题)

A. create ’表名’,’列族1’,’列族2’
B. create ’表名’
C. create ’表名1’,’表名2’
D. create ’表名’,’列族’

我的答案:B,D,A正确答案:A,D

关于HBase Delete()方法说法正确的是()?(多选题)

A、Delete deleteColumns(byte[] family,byte[] qualifier),此方法从给定列中删除与给定时间戳相等或更旧的版本

B、Void setTimestamp(long timestamp) ,此方法从所有列族的所有列中删除与给定时间戳相同或更旧的版本

C、Delete deleteFamily(byte[] family,long timestamp),此方法删除给定列族中所有的列(包括所有版本)

D、Delete deleteColumn(byte[] family,byte[] qualifier,long timestamp) ,此方法只删除与时间戳匹配的给定列的指定版本,如果不存在,则不删除

A. B
B. D
C. C
D. A

我的答案:A,B,C,D正确答案:A,B

HFile数据格式中的Data字段用于()?(单选题)

A. 存储实际的KeyValue数据
B. 指定字段的长度
C. 存储数据块的起点
D. 存储数据的起点

我的答案:B正确答案:A

关于自定义过滤器说法错误的是()?(单选题)

A、filterRow(List kvs)一旦所有行和;列经过之前两个方法的检查之后,这个方法就会被调用

B、reset() 在迭代扫描中为每个新行重置过滤器

C、filterRowKey(byte[] buffer,int offset,int length) 该方法使用Filter的实现方法检查行键,用户可以跳出列数据以避免以后的处理

D、filterKeyValue(KeyValue v) 如果本行数据没有被之前的方法过滤掉,那么执行框架会调用这个方法检索这一行中每个KeyValue实例

A. C
B. A
C. B
D. D

我的答案:B正确答案:A

本方法使用Filter的实现方法检查行键,用户可以跳出行数据以避免以后的处理。RowFilter使用这个方法来筛选符合条件的行并返回给客户端。

关于HBase put构造方法写法正确的是()?(多选题)

A. Put (byte[] row,long ts)
B. Put (byte[] row,RowLock rowlock)
C. Put (byte[] row,long ts,RowLock rowlock)
D. Put(byte[] row)

我的答案:B,D正确答案:A,B,C,D
下列关顾store与HFile说法错误的是()?(单选题)

A. 每个Strore又由一个memStore和0至多个StoreFile组成
B. File Info 段–HFile的元信息,不被压缩,用户也可以在这一部分添加自己的元信息
C. Trailer–这一段是定长的,保存了每一段的偏移量
D. Meta Block 段-保存表中的数据,这部分可以被压缩

我的答案:B正确答案:D

Meta Block 段 (可选的)–保存用户自定义的键值对,可以被压缩

下列关于从HBase中获取数据的应用示例说法错误的是()?(单选题)

A、Get get= new Get(“row1”):使用一个指定的行键构建一个Get实例

B、get.addColumn(Bytes.toBytes(“colfam1”),Bytes.toBytes(“qual1”)):向Get实例中添加一个名为“colfam1:qual1”的列

C、Result result =table.get(get):从HBase中获取指定列的行数据

D、result.getValue(Bytes.toBytes(“colfama”),Bytes.toBytes(“qual1”)):从返回的结果中获取指定列的数据

A. A
B. D
C. C
D. B

我的答案:C正确答案:A

Get get= new Get(Bytes.toBytes(“row1”)) :使用一个指定的行键构建一个Get实例

比较操作的过程传入参数时,关于其中参数可用值说法错误的是()?(单选题)

A. LESS –> 小于
B. NO_OP -> 排除所有
C. GREATER ->大于
D. NO_EQUAL –> 不等于

我的答案:B正确答案:D

NOT_EQUAL –> 不等于

not——equal 不等于

下面继承UDF,必须需要重写的方法是( )

A. configure
B. getDisplayString
C. initialize
D. evaluate

我的答案:B正确答案:D

initialize、configure、getDisplayString均是GenericUDF中需要重写的方法

下面关于UDF编程的说法不正确的是( )

A、org.apache.hadoop.hive.ql.exec.UDF是字段转换操作的基类,提供对于简单数据类型进行转换操作。在实现转换操作时,需要重写evaluate()方法。

B、org.apache.hadoop.hive.ql.udf.generic.GenericUDF提供更为复杂的处理方法类

C、UDF包括对于字段进行转换操作的函数、聚集函数,表生成函数,生成多列或多行数据

D、继承UDF更加有效率,因为UDF class需要Hive使用反射的方式去实现

A. B
B. C
C. A
D. D

我的答案:B正确答案:D

GenericUDF 可以处理复杂类型参数,并且继承GenericUDF更加有效率,因为UDF class需要HIve使用反射的方式去实现。

关于Hive的数据导出操作不正确的是( )

A、insert overwrite local directory ‘path’ select q1;将数据保存到本地

B、insert into directory ‘hdfs_path’ select * from dept;将数据保存到HDFS上

C、可以使用Linux命令执行HDFS,使用-e、-f,然后重定向到指定的文件

D、可以使用Sqoop框架将数据导出

A. D
B. B
C. A
D. C

我的答案:D正确答案:B

insert overwrite directory ‘hdfs_path’ select * from dept; 将数据保存到HDFS上

数据清洗处理的数据类型主要有:残缺数据、错误数据、重复数据、不一致数据。

关于数据仓库建模的四个阶段,下列哪项说法是错误的?

A. 逻辑建模
B. 业务建模
C. 领域概念建模
D. ER模型

我的答案:C正确答案:D

数据仓库建模大致分为4个阶段:①业务建模;②领域概念建模;③逻辑建模;④物理建模。

关于外部表的说法错误的是( )

A. 当删除一个外部表时,仅删除该链接
B. 当删除外部表的时候,metastore中的元数据信息会丢失,但是外部目录总指向数据不会丢失
C. metastore中的描述信息不可以作为外部数据信息的一个引用
D. 外部表和内部表在元数据的组织上是相同的,而实际数据的存储则有较大的差异

我的答案:C正确答案:C

metastore中的描述信息可以作为外部数据信息的一个引用

A. 从多数据源集成的数据可能有语义冲突,可定义完整性约束用于检测不一致性。识别出的不一致数据不需要做任何处理。
从多数据源集成的数据可能有语义冲突,可定义完整性约束用于检测不一致性,也可通过分析数据发现联系,从而使得数据保持一致。不一致数据的处理,大体有如下3种:
①数据迁移工具允许指定简单的转换规则,如:将字符串gender替换成sex。sex公司的PrismWarehouse是一个流行的工具,就属于这类。

②使用领域特有的知识(如,邮政地址)对数据作清洗。它们通常采用语法分析和模糊匹配技术完成对多数据源数据的清理。某些工具可以指明源的“ 相对清洁程度”。工具Integrity和Trillum属于这一类。

③数据审计工具可以通过扫描数据发现规律和联系。因此,这类工具可以看作是数据挖掘工具的变形。

下面关于UDF编程说法错误的是( )

A. 需要实现evaluat函数,evaluate函数支持重载
B. UDF必须要有返回值类型,可以返回null, 可以为void
C. 需要继承org.apache.hadoop.hive.ql.UDF
D. UDF中常用Text/LongWritable等类型,不推荐使用Java类型

我的答案:D正确答案:B

UDF必须要有返回值类型,可以返回null,但是不能为void

数据集成是把不同来源、格式、特点性质的数据在逻辑上或物理上有机地集中,从而为企业提供全面的数据共享。在企业数据集成领域,已经有了很多成熟的框架可以利用。下列哪项不是数据集成的方法?

A. 数据仓库模式
B. 联邦模式
C. 中间件模式
D. 本地模式

我的答案:C正确答案:D

数据集成常见的方法或模式有如下3种:联邦模式、中间件模式、数据仓库模式

关于雪花模型和星型模型,下列哪项说法是错误的?

A. 雪花模型在维度表、事实表之间的连接很多,因此性能会比较高
B. 雪花模型使用的是规范化数据,星型模型使用的是反规范化数据
C. 在雪花模型中,数据模型的业务层级是由一个不同维度表主键-外键的关系来代表的
D. 在星形模型中,所有必要的维度表在事实表中都只拥有外键

我的答案:D正确答案:A

雪花模型在维度表、事实表之间的连接很多,因此,性能会比较低。

Hive的计算引擎是( )

A. MapReduce
B. HBase
C. Spark
D. HDFS

我的答案:D正确答案:A

Hive的底层框架是MapReduce

按粒度大小的顺序,hive数据被组成为:数据库,表,( )和桶

A. 行
B. 块
C. 分区
D. 元数据

我的答案:A正确答案:C

按粒度大小的顺序,hive数据被组成为:数据库,表,分区和桶

下面关于UDF编程的说法正确的有?( )

a、udf 必须要有返回类型,可以返回null,返回类型能为void;

b、hive自带了一些函数比如:max/min等,但是由于自带的函数数量有限,自己可以定义udf来方便扩展

c、自定义函数调用过程为:添加jar包->创建临时函数->调用->输出查询结果

d、继承UDF更加有效率,因为UDF class需要Hive使用反射的方式去实现

A. 3个
B. 2个
C. 1个
D. 4个

我的答案:D正确答案:B

udf必须要有返回类型,可以返回null,但是返回类型不能为void

GenericUDF 可以处理复杂类型参数,并且继承GenericUDF更加有效率,因为UDF class
需要HIve使用反射的方式去实现。

下面继承GenericUDF,不是必须需要重写的方法是( )

A. getDisplayString
B. configure
C. evaluate
D. initialize

我的答案:B正确答案:B

关于Hive的数据导入操作不正确的是( )

A、load data local inpath ‘/ student.txt’ into table stu;从本地导入到hive的指定数据表中(导入数据)

B、insert into table testA Partition(date=’2019-01-01’) select * from testB where id =1;将testA的数据导入到testB

C、load data inpath ‘/student.txt’ into table testB partition(date=’2019-01-01’);HDFS文件导入到Hive表中

D、create table testC as select name ,code from testB;创建表过程中从其他表导入

A. B
B. D
C. A
D. C

我的答案:C正确答案:A

下列哪个不是Hive的内置函数的是( )

A. concat
B. abs
C. upper
D. array

我的答案:A正确答案:C

Hive中没有支持大小写转换的内置函数

下列哪种语言可以用于开发UDF?( )

A. C/C++、Java、CLR
B. Perl、C/C++、SQL
C. SQL、C#、Perl
D. Java、JavaScript、SQL

我的答案:D正确答案:A

下列关于Hive表说法不正确的是( )

A、创建表的时候指定格式:create table t1(id int)row format delimited fields terminated by ‘\t’;

B、当删除外部表的时候,metastore中元数据信息会丢失,但是外部目录中指向数据不会丢失

C、删除表的时候,对跟随数据也随着丢失:drop table db_name;

D、Hive桶表主要用于小样本的取样

A. B
B. C
C. D
D. A

我的答案:A正确答案:C

Hive桶表主要用于大数据集群的大样本取样

以下关于Hive基本操作描述正确的是( )

A. 创建外部表使用external关键字,创建普通表需要指定internal关键字
B. 加载数据到Hive时源数据必须是HDFS的一个路径
C. 创建外部表必须要指定location信息
D. 分区可以在创建表时指定也可在创建表后通过Alter命令添加分区

我的答案:C正确答案:C

EXTERNAL关键字可以让用户创建一个外部表,在建表的同时指定一个指向实际数据的路径(LOCATION),Hive
创建内部表时,会将数据移动到数据仓库指向的路径;若创建外部表,仅记录数据所在的路径,不对数据的位置做任何改变。

关于Hive的数据导入操作不正确的是( )

A、load data local inpath ‘/ student.txt’ into table stu;从本地导入到hive的指定数据表中(导入数据)

B、insert into table testA Partition(date=’2019-01-01’) select * from testB where id =1;将testA的数据导入到testB

C、load data inpath ‘/student.txt’ into table testB partition(date=’2019-01-01’);HDFS文件导入到Hive表中

D、create table testC as select name ,code from testB;创建表过程中从其他表导入

A. B
B. D
C. A
D. C

我的答案:A正确答案:A

B中是将testB的数据导入到testA中

下面关于Hive编写UDF函数的时候需要注意的地方说法不正确的是( )

A、当我们在hive中使用自己定义的UDF的时候,hive会调用类中的evaluate方法来实现特定的功能

B、导出项目为jar文件,项目的jdk和集群的jdk可以不一致

C、自定义函数调用过程为:添加jar包->创建临时函数->调用->输出查询结果

D、UDF常用Text/LongWrite等类型,不推荐使用java类型

A. B
B. A
C. D
D. C

我的答案:A正确答案:A

项目的jdk和集群的jdk要一致

下列关于分区表说法正确的是( )

A. Partition对应于数据库的Partition列的密集索引
B. 分区表跟外部表删除数据原理相似,即删除元数据信息metastore时,实际数据不会随着丢失
C. 分区表和内部表在元数据的组织上是相同的,而实际数据的存储则有较大的差异
D. 当删除一个分区时,不会删除实际数据

我的答案:D正确答案:A

当删除一个分区表时,会删除实际数据;分区表和内部表在元数据的组织上是不相同的,而实际数据的存储则差异不是很大。

以下查询操作正确的是( )

A、select a, b from table group by a

B、select b from table cluster by a

C、select a from (select a from t1 union all select a from t2)

D、select a from table sort by a distribute by b

A. C
B. A
C. B
D. D

我的答案:B正确答案:C

Hive查询语言中的算术操作符的返回结果是( )类型的。

A. Int
B. String
C. Number
D. Bigint

我的答案:B正确答案:C

Hive查询语言中的算术操作符的返回结果是number类型

Hive是建立在_______之上的一个数据仓库?

A. hdfs
B. MapReduce
C. hadoop
D. HBase

我的答案:B正确答案:C

下面关于Hive的说法正确的是( )

A、Hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文本映射为一张数据库表,并提供简单的SQL查询功能

B、Hive可以直接使用SQL语句进行相关操作

C、Hive能够在大规模数据集上实现低延迟快速的查询

D、Hive 的数据存储在 HDFS 中,大部分的查询由 MapReduce 完成

A. D
B. C
C. B
D. A

我的答案:B正确答案:D

Hive使用类sql语句进行相关操作,称为HQL,它允许熟悉 SQL 的用户查询数据。同时,这个语言也允许熟悉 MapReduce
开发者的开发自定义的 mapper 和 reducer 来处理内建的 mapper 和 reducer 无法完成的复杂的分析工作。

下列选项中,哪项不属于Hive支持的集合类型?

A. STRUCT
B. LIST
C. MAP
D. ARRAY

我的答案:D正确答案:B

HIVE支持的集合数据类型有:ARRAY、MAP、STRUCT。

下列哪项不是Hive用户接口?

A. CMD
B. WUI
C. CLI
D. Client

我的答案:A正确答案:A

Hive用户接口主要有三个:CLI,Client 和
WUI。其中最常用的是Cli,Cli启动的时候,会同时启动一个Hive副本。Client是Hive的客户端,用户连接至Hive
Server。在启动Client模式的时候,需要指出Hive Server所在节点,并且在该节点启动Hive
Server。WUI是通过浏览器访问Hive。

Hive是一种底层封装了Hadoop的数据仓库处理工具,使用类SQL的HiveSQL语言实现数据查询,所有Hive的数据都存储在Hadoop兼容的文件系统(例如,Amazon S3、HDFS)中。Hive在加载数据过程中不会对数据进行任何的修改,只是将数据移动到HDFS中Hive设定的目录下,因此,Hive不支持对数据的改写和添加,所有的数据都是在加载的时候确定的。Hive的设计特点如下:
①支持创建索引,优化数据查询;
②不同的存储类型,例如,纯文本文件、HBase 中的文件;
③将元数据保存在关系数据库中,大大减少了在查询过程中执行语义检查的时间;
④可以直接使用存储在Hadoop 文件系统中的数据;
⑤内置大量用户函数UDF 来操作时间、字符串和其他的数据挖掘工具,支持用户扩展UDF 函数来完成内置函数无法实现的操作。

下列哪项不是Hive的服务端组件?

A. Driver组件
B. Thrift服务
C. HDFS组件
D. Metastore组件

我的答案:B正确答案:C

Hive的服务端组件包括:Driver组件、Metastore组件、Thrift服务。

下列关于Hive的优点,哪项描述是错误的?

A. Hive可以存储、查询和分析存储在Hadoop中的大规模数据
B. Hive适合对数据仓库进行统计分析
C. Hive的学习成本(花费的时间投入的精力)较高
D. Hive实现快速MapReduce统计,使MapReduce变得更加简单

我的答案:A正确答案:C

Hive是基于Hadoop的一个数据仓库工具,用来进行数据提取、转化、加载,这是一种可以存储、查询和分析存储在Hadoop中的大规模数据的机制。Hive的优点是学习成本低,可以通过类似SQL语句实现快速MapReduce统计,使MapReduce变得更加简单,而不必开发专门的MapReduce应用程序。Hive十分适合对数据仓库进行统计分析。

关于Hive的优点,下列哪项描述是正确的?

A. Hive不适合对数据仓库进行统计分析
B. Hive可以用于联机(online)事务处理,能提供实时查询功能
C. Hive的学习成本(花费的时间投入的精力)较高
D. Hive适合应用在基于大量不可变数据的批处理作业

我的答案:B正确答案:D

Hive是基于Hadoop的一个数据仓库工具,用来进行数据提取、转化、加载,这是一种可以存储、查询和分析存储在Hadoop中的大规模数据的机制。Hive的优点是学习成本低,可以通过类似SQL语句实现快速MapReduce统计,使MapReduce变得更加简单,而不必开发专门的MapReduce应用程序。Hive十分适合对数据仓库进行统计分析。Hive不适合用于联机(online)事务处理,也不提供实时查询功能。它最适合应用在基于大量不可变数据的批处理作业。

关于Hive的功能实现,下列哪项描述是正确的?

A. Hive构建在基于静态批处理的HBase之上
B. 开发人员不可以可以把自己写的Mapper和Reducer作为插件来支持Hive做数据分析
C. Hive支持UDF、UDAF和UDTF,也可以实现对Map和Reduce函数的定制
D. Hive与关系型的SQL不同,不支持DDL、DML以及常见的聚合函数、连接条件查询等

我的答案:D正确答案:C

MapReduce开发人员可以把自己写的Mapper和Reducer作为插件来支持Hive做更复杂的数据分析。Hive与关系型数据库的SQL略有不同,但支持了绝大多数的语句如DDL、DML以及常见的聚合函数、连接查询、条件查询。它还提供了一系列的工具进行数据提取转化加载,用来存储、查询和分析存储在Hadoop中的大规模数据集,并支持UDF(User-DefinedFunction)、UDAF(User-Defnes AggregateFunction)和UDTF(User-DefinedTable-Generating Function),也可以实现对Map和Reduce函数的定制,为数据操作提供了良好的伸缩性和可扩展性。

关于Hive查询的执行过程,下列哪项说法有误?

A. Get Metadata编译器将元数据请求发送给Metastore(数据库)
B. Get Plan调用编译器解析、验证查询语句的语法,生成查询计划等
C. Metastore将元数据作为响应发送给Driver
D. Execute Query将查询脚本发送Driver执行

我的答案:D正确答案:C

Metastore将元数据作为响应发送给编译器

下列哪项不是Hive的客户端组件?

A. WEBGUI组件
B. MapReduce组件
C. CLI组件
D. JDBC/ODBC组件

我的答案:A正确答案:B

Hive的服务端组件包括:CLI组件、JDBC/ODBC组件、WEBGUI组件。

Hive包含如下四类数据存储模型:表(Table)、外部表(External Table)、分区(Partition)、桶(Bucket)。
①hive中的Table和数据库中的Table在概念上是类似的。在hive中每一个Table都有一个相应的目录存储数据。
②外部表是一个已经存储在HDFS中,并具有一定格式的数据。使用外部表意味着hive表内的数据不在hive的数据仓库内,它会到仓库目录以外的位置访问数据。
外部表和普通表的操作不同,创建普通表的操作分为两个步骤,即表的创建步骤和数据装入步骤(可以分开也可以同时完成)。在数据的装入过程中,实际数据会移动到数据表所在的hive数据仓库文件目录中,其后对该数据表的访问将直接访问装入所对应文件目录中的数据。删除表时,该表的元数据和在数据仓库目录下的实际数据将同时删除。
外部表的创建只有一个步骤,创建表和装入数据同时完成。外部表的实际数据存储在创建语句。LOCATION参数指定的外部HDFS文件路径中,但这个数据并不会移动到hive数据仓库的文件目录中。删除外部表时,仅删除其元数据,保存在外部HDFS文件目录中的数据不会被删除。
③分区对应于数据库中的分区列的密集索引,但是hive中分区的组织方式和数据库中的很不相同。在hive中,表中的一个分区对应于表下的一个目录,所有的分区的数据都存储在对应的目录中。
④桶对指定列进行哈希(hash)计算,会根据哈希值切分数据,目的是为了并行,每一个桶对应一个文件。

对于最小粒度的任务,Hive 查询的反应时间约为 ___?

A. 几毫秒
B. 几秒
C. 几微秒
D. 几分钟

我的答案:A正确答案:D

以下对 Hive 操作描述不正确的是( )

A. 数据加载时,overwrite 关键字不是必须的
B. 删除表时,表中的数据同时被删除掉
C. Hive 是在数据查询时进行模式验证,而不是加载的时候验证
D. hive 的内表和外表都可以修改 location 属性

我的答案:D正确答案:B

删除表时,如果是内部表,表中的数据可以同时删除掉

关于Hive与Hadoop之间说法正确的是( )

A. Hive构建在 Hadoop 之上, HQL 中对查询语句的解释、优化、生成查询计划是由 Hive
B. Hive所有的数据都是存储在 Hadoop 中,查询计划不会被转化为 MapReduce 任务
C. select count(*)from table,没有 MR 任务
D. select * from table,有 MR 任务

我的答案:D正确答案:A

select * from table,没有 MapReduce 任务;而select count(*)from table,调用了MapReduce 任务

关于常见的数据导入方式错误的是?( )

A、Hive不支持insert into…values形式的语句

B、Hive支持insert overwrite方式来插入数据

C、在做动态分区插入前,需先把hive.exec.dynamic.partition.mode设置为nonstrict。

D、在做CTAS操作时,如果select查询由于某种原因失败,新表依旧会被创建。

A. D
B. B
C. A
D. C

我的答案:C正确答案:A

CTAS操作是原子的,因此如果select查询由于某种原因而失败,新表是不会创建的。

Hive的集合类型不包括如下哪个 ?( )

A. set
B. map
C. array
D. struct

我的答案:C正确答案:A

hive的集合类型不包括set

关于Hive说法不正确的是( )

A. Hive上的操作的数据格式可以由用户进行设定,否则,会出现存入当然数据和读取的数据显示不一致
B. Hive是为对数据库比较数据的非专业人员准备的
C. Hive的操作语句:QL语句->HSQL->类(like)SQL
D. Hive在处理业务的时候,局限性很少,可以处理比较复杂的业务处理

我的答案:A正确答案:D

Hive在处理业务的时候,有一定的局限性,只能处理一些简单的、常用的业务,如果碰到比较复杂的业务处理时,依然需要开发人员自己的MapReduce应用。

关于Hive的数据存储说法不正确的是( )

A. Hive 的数据存储在 HDFS 中,大部分的查询由 MapReduce 完成
B. HiveSQL并不支持Having子句和子查询
C. Hive 将元数据存储在数据库中(metastore),目前只支持MySQL、derby
D. 生成的查询计划存储在 HDFS 中,并在随后有 MapReduce 调用执行

我的答案:D正确答案:B

hive中子查询语句只能出现在from子句中,其他地方目前不允许。

关于Hive的设计特性,下列描述哪项是正确的?

A. 不支持用户扩展UDF函数来完成内置函数无法实现的操作
B. 不支持纯文本文件、HBase文件等存储类型
C. 支持创建索引,优化数据查询
D. 将元数据保存在关系数据库中,大大减少了在查询过程中执行语义检查的时间

我的答案:A正确答案:D

以下哪个操作的reduce数设置无效 ?( )

A. order by
B. distribute by
C. Join
D. group by

我的答案:B正确答案:A

order by 始终只有一个reduce。

以下对 Hive 操作描述不正确的是( )

A. 数据加载时,overwrite 关键字不是必须的
B. 删除表时,表中的数据同时被删除掉
C. Hive 是在数据查询时进行模式验证,而不是加载的时候验证
D. hive 的内表和外表都可以修改 location 属性

我的答案:D正确答案:B

删除表时,如果是内部表,表中的数据可以同时删除掉。

关于Hive CRUD操作不正确的是( )

A、show databases:查看所有的数据库

B、create databse bigdata;创建数据库

C、show table;查看数据库中所有的表

D、load data local inpath ‘/ student.txt’ into table stu;从本地导入到hive的指定数据表中(导入数据)

A. A
B. D
C. B
D. C

我的答案:D正确答案:D

关于Hive与关系型数据库说法不正确的是( )

A. Hive可以图索引,而关系型数据库不可以图索引
B. Hive的人执行延迟性高,而关系型数据库比较小
C. Hive处理数据的规模大,而关系型数据库处理的数据规模较小
D. Hive数据存储在HDFS上,而关系型数据库数据存储在本地

我的答案:C正确答案:A

Hive可以图索引,而关系型数据库也可以图索引。

以下操作不正确的是( )

A. insert overwrite into table name
B. insert into table name
C. load data inpath into table name
D. insert overwrite table name

我的答案:B正确答案:A

下列哪项不属于Hive的体系结构?

A. Hadoop和HBase
B. 元数据存储
C. 用户存储
D. 解释器、编译器、优化器、执行器

我的答案:C正确答案:A

Hive的体系结构主要分为如下几部分:

①用户存储;②元数据存储;③解释器、编译器、优化器、执行器;④Hadoop。

下面哪种类型间的转换不是被hive查询语言所支持的?( )

A. boolean->int
B. bigint->double
C. int->bigint
D. string->double

我的答案:B正确答案:A

BOOLEAN类型不能转换为其他任何数据类型

关于Hive的设计特性,下列描述哪项是正确的?(有歧义,因为c也是对的

A. 不支持用户扩展UDF函数来完成内置函数无法实现的操作
B. 不支持纯文本文件、HBase文件等存储类型
C. 支持创建索引,优化数据查询
D. 将元数据保存在关系数据库中,大大减少了在查询过程中执行语义检查的时间

我的答案:C正确答案:D

下列关于Hive基本概念,哪项描述是错误的?

A. Hive是基于Hadoop的一个数据仓库工具
B. Hive提供SQL查询功能,并将SQL语句转变成MapReduce任务来执行
C. Hive不能将结构化的数据文件映射为一张数据库表
D. Hive用来进行数据的提取、转化、加载

我的答案:B正确答案:C

关于Hive与关系型数据库说法不正确的是( )

A. Hive可以图索引,而关系型数据库不可以图索引
B. Hive的人执行延迟性高,而关系型数据库比较小
C. Hive处理数据的规模大,而关系型数据库处理的数据规模较小
D. Hive数据存储在HDFS上,而关系型数据库数据存储在本地

我的答案:D正确答案:A

Hive可以图索引,而关系型数据库也可以图索引。

关于HDFS Shell操作不正确的是( )

A、Hadoop fs -cp URI [URI …] 将文件从源路径复制到目标路径

B、Hadoop fs -get [-ignorecrc] [-crc] 复制文件到本地文件系统

C、Hadoop fs -test -[ezd] URI 将源文件输出为文本格式。

D、Hadoop fs -stat URI [URI …] 返回指定路径的统计信息

A. A
B. B
C. C
D. D

我的答案:正确答案:C

Hadoop fs -test -[ezd] URI 。-e 检查文件是否存在;-z 检查文件是否是0字节;-d
如果路径是个目录,则返回1,否则返回0。

在Hadoop上提交Job时不涉及哪个实体?( )

A. 客户端
B. SecondaryNameNode
C. HDFS
D. JobTracker

我的答案:正确答案:B

在Hadoop上提交job不涉及SecondaryNameNode。

HDFS无法高效存储大量小文件,想让它能处理好小文件,比较可行的改进策略不包括()

A. 多Master设计
B. 利用SequenceFile、MapFile、Har等方式归档小文件
C. Block大小适当调小
D. 调大namenode内存或将文件系统元数据存到硬盘里

我的答案:C正确答案:D

HDFS的特性通过调大namenode内存或将文件系统元数据存到硬盘里并不能使HDF处理好小文件。

关于HDFS API的使用说法不正确的是( )

A. FileStatus对象存储文件和目录的元数据
B. 每个应用程序必须拥有访问Hadoop程序的jar文件
C. 如果要访问HDFS,HDFS客户端必须有一份HDFS的配置文件
D. 操作HDFS,也就是HDFS的读和写,最常用的类File

我的答案:D正确答案:D

操作HDFS,也就是HDFS的读和写,最常用的类FileSystem。

下面哪个不是Hadoop的输出数据格式?( )

A. 多输出
B. 二进制输出 
C. 单一输出 
D. 文本输出

我的答案:A正确答案:C

Hadoop的输出数据格式有文本输出、二进制输出、多输出。

下列关于HBaseShell的终端给用户交互正确的是( )?(多选题)

A、查看scores表中所有数据courses列族的所有数据: scan’scores’,{COLUMNS => ‘course’}

B、在scores表中,给zkb这一行的数据的列族course添加一列<math,97>:put’scores’,‘zkb’,‘math’,‘97’

C、查看scores表中zkb的相关数据:get’scores’,‘zkb’

D、查看scores表的构造:describe ‘scores’

A. B
B. C
C. D
D. A

我的答案:A,B,C,D正确答案:B,C,D

在scores表中,给zkb这一行的数据的列族course添加一列<math,97>:put’scores’,‘zkb’,‘course:math’,‘97’

下列关顾store与HFile说法错误的是()?(单选题)

A. 每个Strore又由一个memStore和0至多个StoreFile组成
B. File Info 段–HFile的元信息,不被压缩,用户也可以在这一部分添加自己的元信息
C. Trailer–这一段是定长的,保存了每一段的偏移量
D. Meta Block 段-保存表中的数据,这部分可以被压缩

我的答案:正确答案:D

Meta Block 段 (可选的)–保存用户自定义的键值对,可以被压缩

关于Comparision Filters说法错误的是()?(单选题)

A. QualifierFilter通过和列名比较,返回为真的数据
B. ValueFilter通过和列名比较,返回为真的数据
C. wFilter选择比较column来确定选择合适的列信息
D. FamilyFilter通过和列簇比较得到,返回结果为真的数据

我的答案:D正确答案:C

wFilter选择比较rowkey来确定选择合适的行信息

关于HBase与MapReduce集成说法错误的是()?(单选题)

A、一个MapReduce作业中的源和目标都可以是HBase表,但不能够在一个作业中同时使用HBase作为输入和输出

B、使用MapReduce作业作为过程的一部分,该作业可以使用HBase进行读取或写入

C、用户可以在存储组合结果的不同表中查询数据。用户从哪里读数据和向哪里写数据是不受限制的

D、通过MapReduce的API实现可以以任何形式访问HBase的代码

A. A
B. C
C. D
D. B

我的答案:C正确答案:A

一个MapReduce作业中的源和目标都可以是HBase表,但也有可能在一个作业中同时使用HBase作为输入和输出

用户可以用一个Java String或byte[] 指定表的名称

关于HTable实用方法说法错误的是()?(单选题)

A、HTableDescriptor getTableDescriptor(),这个方法,在每个表都使用一个HTableDescriptor实例来定义自己的表结构

B、所有客户端缓冲的写操作:close()方法会显式调用flushCache()方法

C、Configuration getConfiguration(), 这个方法允许用户访问HTable实例中使用的配置

D、byte[] getTableName(),这是一个获取表名称的快捷方法

A. B
B. C
C. A
D. D

我的答案:D正确答案:A

所有客户端缓冲的写操作:close()方法会隐式调用flushCache()方法

关于Storm工作原理描述不正确的是 ( )

A、Nimbus负责在集群分发代码,topo不仅仅能在nimbus机器上提交,也能够在supervisor上提交

B、Supervisor监听分配给它的节点,根据Nimbus的委派在必要时启动和关闭工作进程

C、在Storm中有对于流stream的抽象,流是一个不间断的无界的连续tuple,注意Storm在建模事件流时,把流中的事件抽象为tuple即元组

D、处理stream内的tuple,抽象为Bolt,bolt可以消费任意数量的输入流

A. D
B. B
C. A
D. C

我的答案:D正确答案:C

Nimbus负责在集群分发代码,topo只能在nimbus机器上提交

下列关于Storm集群组件说法错误的是()?(单选题)

A. 搭建Storm集群之前必须要进行Zookeeper环境部署
B. Nimbus和Supervisor节点之间所有的协调工作是通过Zookeeper集群来实现的
C. Nimbus的作用类似于Hadoop中的Namenode的角色
D. 一个运行中的Topology由分布在不同工作节点上的多个工作进程组成

我的答案:B正确答案:C

Nimbus的作用类似于Hadoop中的JobTracker的角色

下列哪些选项是安装Storm前所必须安装的?(多选题)

A. Shell Script
B. Python
C. Zookeeper
D. JDK

我的答案:D,C正确答案:B,C,D

下列关于Hama的安装和使用说法错误的是()?(单选题)

A. hama-site.xml文件,是hama配置的核心文件
B. 安装Hama环境之前,需要完成JDK和Hadoop的环境部署
C. fs.default.name是hadoop中SecondaryNamenode的地址和端口
D. bsp.master.address即bsp中的BSPMaster的地址和端口

我的答案:C正确答案:C

fs.default.name是hadoop中Namenode的地址和端口

下列关于Storm体系架构说法正确的是( )

A、Nimbus负责在集群分发代码

B、Supervisor监听分配给它的节点,根据Nimbus的委派在必要时启动和关闭工作进程

C、Storm在建模事件流时,把流中的事件抽象为tuple即元组

D、处理stream内的tuple,抽象为bolt,bolt可以消费任意数量的输入流,只要将流方向导向该bolt,同时它可以发送新的流给其他bolt使用

A. B
B. C
C. D
D. A

我的答案:A,B,C,D正确答案:A,B,C,D

下列关于communication函数描述错误的是()?(单选题)

A. getAllPeerNames():返回所有peer的hostname
B. getCurrentMessage():返回消息的数量
C. send(String peerName, BSPMessage msg):发送消息到下一个peer
D. getSuperstepCount():返回超步的数量

我的答案:C正确答案:B
getCurrentMessage():返回消息;getNumCurrentMessages():返回消息的数量

下列关于Hama的启动进程说法正确的是()?(单选题)

A. bin/start-all.sh
B. bin/start-bspd.sh
C. sbin/start-all.sh
D. sbin/start-bspd.sh

我的答案:D正确答案:D

如果在/etc/profile文件中已经配置,直接执行该命令即可;如果没有,则到hama的bin目录下执行

下列关于Storm Shell说法错误的是()?(单选题)

A. storm deactivate Topology:停止指定拓扑的运行
B. storm kill Topology -t 10:在过10s会关闭Topology
C. storm activate Topology:激活运行指定拓扑
D. storm kill Topology -w 10:在过10s会关闭Topology

我的答案:D正确答案:B

storm kill Topology -w 10:在过10s会关闭Topology

下列关于Storm体系架构说法正确的是()?(多选题)

A、Nimbus负责在集群分发代码

B、Supervisor监听分配给它的节点,根据Nimbus的委派在必要时启动和关闭工作进程

C、Storm在建模事件流时,把流中的事件抽象为tuple即元组

D、处理stream内的tuple,抽象为bolt,bolt可以消费任意数量的输入流,只要将流方向导向该bolt,同时它可以发送新的流给其他bolt使用

A. B
B. D
C. C
D. A

我的答案:A,B,C,D正确答案:A,B,C,D

下列关于BSP的编程模型说法正确的是()?(多选题)

A、BSP程序包含一序列的superstep(超步),每一个superstep包含三个步骤

B、每个计算节点进行并行计算, 在communication的阶段进行收发, 将运行结果记录在barrier上

C、Hama提供用户自定义的函数bsf(),通过bsf函数,用户可以编写自己的BSP程序

D、BSP是一种跟MapReduce平行的一种并行计算方法

A. B
B. D
C. A
D. C

我的答案:B,A,C,D正确答案:A,B,C,D

关于Storm与Hadoop对比不正确的是?( )

A、 Storm的组件接口是Spout/Bolt,Hadoop的组件接口是Mappper/Reducer

B、 Nimbus:负责资源分配和任务调度,类似与Hadoop中的NameNode

C、 Supervisor:负责接收nimbus分配的任务,启动和停止属于自己管理的worker进程,类似于Hadoop中的TaskTracker

 D、Storm关注的是数据多次处理一次写入,而Hadoop关注的是数据一次写入,多次处理使用(查询)


A. B
B. A
C. C
D. D

我的答案:D正确答案:A

Nimbus:负责资源分配和任务调度,类似与Hadoop中的JobTracker

下列关于生成randomgraph,100个节点,1000条边的数据,存储在两个文件中(part-00000,part-00001)的命令正确的是()?(单选题)

A、./bin/hama jar hama-examples-0.7.1.jar gen fastgen -v 100 -e 10 -o randomgraph -t 2

B、./bin/hama jar hama-examples-0.7.1.jar gen fastgen -v 100 -e 1000 -o randomgraph -t 2

C、./bin/hama jar hama-examples-0.7.1.jar gen fastgen -v 100 -e 1000 -o randomgraph -t part-00000 part-00001

D、./bin/hama jar hama-examples-0.7.1.jar gen fastgen -v 100 -e 10 -o randomgraph -t part-00000 part-00001

A. A
B. D
C. B
D. C

我的答案:B正确答案:A

关于Storm工作原理说法错误的是 ( )

A. Spout从数据源获取数据并进行分发
B. 在storm中,一条数据可以理解为是一个Tuple
C. Supervisor负责实际的同步worker的操作,定期获取任务分配信息
D. Nimbus是从节点,任务执行的地方

我的答案:D正确答案:D

Nimbus是主节点,是一个调度中心,负责分发任务

关于Storm整体架构描述正确的是 ( )

A、数据链入层:直接通过网络Socket传输数据,前端业务系统专有数据采集API,对log问价定时监控

B、Storm实时处理层:Storm系统运行起来后是持续不断的,而Hadoop往往只是在业务需要时调用数据

C、元数据管理器:元数据管理器的设计目的是,整个系统需要一个统一协调的组件,指导前端业务系统的数据写入,通知实时处理部分数据类型及其他数据描述,及指导数据如何落地

D、数据落地层:实时处理层处理数据如果少量存储RDBMS,如果数据量过大可以存储在HDFS中

A. A
B. D
C. C
D. B

我的答案:A,B,C,D正确答案:A,B,C,D

Storm支持在不重启topology的情况下,动态的改变(增减)worker process的数目和executor的数目,称为rebalancing,下列关于使用命令行的方式实现拓扑的再平衡正确的是()?(单选题)

A、storm rebalance Topology -e 6 -n onespout 5:拓扑使用6个Worker进程,Spout使用5个Executor

B、storm rebalance Topology -n 6 -e onespout 5:拓扑使用6个Worker进程,Spout使用5个Executor

C、storm rebalance Topology -n 6 -e onespout 5:拓扑使用6个Executor进程,Spout使用5个Worker

D、storm rebalance Topology -e 6 -n onespout 5:拓扑使用6个Executor进程,Spout使用5个Worker

A. C
B. A
C. D
D. B

我的答案:B正确答案:D

storm rebalance Topology -n 6 -e onespout5:拓扑使用6个Worker进程,Spout使用5个Executor

下列对于Storm集群部署描述不正确的一项是( )

A. A、Storm集群依赖于外部的Zookeeper
B. ​B、Storm在0.9版本之前,环境部署必须搭建ZeroMQ和JZMQ软件
C. D、storm.Zookeeper.servers:是一个为Storm集群配置的Zookeep
D. C、supervisor.slot.ports是用来配置指定多少个Executor运行在机器上

我的答案:D正确答案:D

supervisor.slot.ports是用来配置指定多少个Worker运行在机器上

下列哪个不属于实时计算的产品( )

A. D、Impala
B. A、Spark Streaming
C. C、Flink
D. B、Storm

我的答案:D正确答案:A

Impala是用于与HBase结合的查询引擎

下列对于Storm进程启动描述正确的一项是( )

A. ​ B、后台启动storm nimbus进程命令nohup bin/storm nimbus
B. ​ D、后台启动storm nimbus进程命令nohup bin/storm nimbus &
C. A、启动Storm全部进程命令bin/start-all.sh
D. ​ C、后台启动storm nimbus进程命令bin/storm nimbus &

我的答案:B正确答案:B

Storm中没有自带的start-all.sh命令,需要写脚本才能实现这个功能;对于nimbus进程后台启动,如果采用nohup命令,必须要以nohup开头,&结尾的形式

通常,BSP程序包含一序列的superstep。每一个superstep(超步)包含三个步骤,下列关于三个步骤描述正确的是()?(多选题)

A. Local computation(本地计算阶段,每个处理器只对存储本地内存中的数据进行本地计算)
B. Barrier synchronization(栅栏同步阶段,等待所有通信行为的结束)
C. Process communication(全局通信阶段,对任何非本地数据进行操作)
D. Process communication(全局通信阶段,对任何本地数据进行操作)

我的答案:A,B,C正确答案:A,B,C

Process communication(全局通信阶段,对任何非本地数据进行操作)

下列不是Storm框架组件的是 ( )

A. C、Executor
B. D、Nimbus
C. ​B、Supervisor
D. A、process

我的答案:C正确答案:D

Worker
process(工作进程),Supervisor(工作节点),Executor(执行者),Task(任务)均属于Storm框架组件的组件。

下列关于Storm基本概念说法正确的是()?(多选题)

A、Topology: Storm实时运行应用包逻辑上成为一个topology,一个Storm的topology相当于MapReduce的job

B、spout是Topology中数据流的数据入口,充当数据采集器功能

C、在Topology中所有操作都是在bolt中执行的,它可以进行过滤、计算、连接、聚合、数据库读写,以及其他操作

D、Fields Grouping:按字段分组,比如按userid,具有userid的tuple会被分到相同的Bolts。而不同的userid则会被分配到不同的Bolts

A. C
B. B
C. A
D. D

我的答案:A,B,C,D正确答案:A,B,C,D

下面关于UDF编程的说法不正确的是( )

A、org.apache.hadoop.hive.ql.exec.UDF是字段转换操作的基类,提供对于简单数据类型进行转换操作。在实现转换操作时,需要重写evaluate()方法。

B、org.apache.hadoop.hive.ql.udf.generic.GenericUDF提供更为复杂的处理方法类

C、UDF包括对于字段进行转换操作的函数、聚集函数,表生成函数,生成多列或多行数据

D、继承UDF更加有效率,因为UDF class需要Hive使用反射的方式去实现

A. B
B. C
C. A
D. D

我的答案:B正确答案:D

GenericUDF 可以处理复杂类型参数,并且继承GenericUDF更加有效率,因为UDF class
需要HIve使用反射的方式去实现。

关于Hive的数据导出操作不正确的是( )

A、insert overwrite local directory ‘path’ select q1;将数据保存到本地

B、insert into directory ‘hdfs_path’ select * from dept;将数据保存到HDFS上

C、可以使用Linux命令执行HDFS,使用-e、-f,然后重定向到指定的文件

D、可以使用Sqoop框架将数据导出

A. D
B. B
C. A
D. C

我的答案:D正确答案:B

insert overwrite directory ‘hdfs_path’ select * from dept; 将数据保存到HDFS上

数据集成是把不同来源、格式、特点性质的数据在逻辑上或物理上有机地集中,从而为企业提供全面的数据共享。在企业数据集成领域,已经有了很多成熟的框架可以利用。下列哪项不是数据集成的方法?

A. 数据仓库模式
B. 联邦模式
C. 中间件模式
D. 本地模式

我的答案:A正确答案:D

数据集成常见的方法或模式有如下3种:联邦模式、中间件模式、数据仓库模式。

下列关于分区表说法正确的是( )

A. Partition对应于数据库的Partition列的密集索引
B. 分区表跟外部表删除数据原理相似,即删除元数据信息metastore时,实际数据不会随着丢失
C. 分区表和内部表在元数据的组织上是相同的,而实际数据的存储则有较大的差异
D. 当删除一个分区时,不会删除实际数据

我的答案:B正确答案:A

当删除一个分区表时,会删除实际数据;分区表和内部表在元数据的组织上是不相同的,而实际数据的存储则差异不是很大。

关于metastore常见配置错误的是( )

A. javax.jdo.option.ConnectionURL 所使用数据库的URL
B. hive.metastore.warehouse.dir 存储表格数据的目录
C. hive.metastore.uris 使用内嵌的metastore服务
D. javax.jdo.option.ConnectionDriverName 数据库驱动类

我的答案:正确答案:C

hive.metastore.uris 如果不使用内嵌的metastore服务,需指定远端服务的Uri

关于Hive的设计特性,下列描述哪项是正确的?

A. 不支持用户扩展UDF函数来完成内置函数无法实现的操作
B. 不支持纯文本文件、HBase文件等存储类型
C. 支持创建索引,优化数据查询
D. 将元数据保存在关系数据库中,大大减少了在查询过程中执行语义检查的时间

我的答案:正确答案:D

关于Hive的功能实现,下列哪项描述是正确的?

A. Hive构建在基于静态批处理的HBase之上
B. 开发人员不可以可以把自己写的Mapper和Reducer作为插件来支持Hive做数据分析
C. Hive支持UDF、UDAF和UDTF,也可以实现对Map和Reduce函数的定制
D. Hive与关系型的SQL不同,不支持DDL、DML以及常见的聚合函数、连接条件查询等

我的答案:正确答案:C

关于Hive查询的执行过程,下列哪项说法有误?

A. Get Metadata编译器将元数据请求发送给Metastore(数据库)
B. Get Plan调用编译器解析、验证查询语句的语法,生成查询计划等
C. Metastore将元数据作为响应发送给Driver
D. Execute Query将查询脚本发送Driver执行

我的答案:正确答案:C

Metastore将元数据作为响应发送给编译器。

下列哪项不是Hive的客户端组件?

A. WEBGUI组件
B. MapReduce组件
C. CLI组件
D. JDBC/ODBC组件

我的答案:正确答案:B

Hive的服务端组件包括:CLI组件、JDBC/ODBC组件、WEBGUI组件。

关于Hive元数据描述错误的是( )

A、Hive中的元数据包括表的名字、表的列和分区及其属性,表的属性,表的数据所在目录等

B、Hive元数据表及分区的属性、存放位置等元数据存储路径和内表一样,分为本地和远程,可通过hive-env.sh文件设置

C、Hive元数据信息即数据的描述信息,比如存储位置、时间、大小之类

D、Hive将表中的元数据信息存储在derby、mysql数据库

A. D
B. A
C. B
D. C

我的答案:正确答案:C

Hive元数据表及分区的属性、存放位置等元数据存储路径和内表一样,分为本地和远程,可通过hive-site.xml文件设置。

以下哪个操作的reduce数设置无效 ?( )

A. order by
B. distribute by
C. Join
D. group by

我的答案:正确答案:A

order by 始终只有一个reduce

下面关于Hive的安装说法不正确的是?( )

A、如果要支持多会话,或者多用户的话,需要使用一个独立的数据库(比如mysql,比较常用),这种配置方式称为本地metastore配置。

B、Metastore的作用是:客户端连接metastore服务,metastore再去连接MySQL数据库来存取元数据。

C、使用metastore服务,就可以有多个客户端同时链接,且这些客户端不需要知道MySQL数据库的用户名和密码。

内嵌模式使用Derby数据库来存储元数据,需要开启metastore服务

A. D
B. C
C. A
D. B

我的答案:正确答案:A

内嵌模式使用的是内嵌的Derby数据库来存储元数据,也不需要额外起Metastore服务。

关于常见的数据导入方式错误的是?( )

A、Hive不支持insert into…values形式的语句

B、Hive支持insert overwrite方式来插入数据

C、在做动态分区插入前,需先把hive.exec.dynamic.partition.mode设置为nonstrict。

D、在做CTAS操作时,如果select查询由于某种原因失败,新表依旧会被创建。

A. D
B. B
C. A
D. C

我的答案:正确答案:A

CTAS操作是原子的,因此如果select查询由于某种原因而失败,新表是不会创建的。

关于Hive的安装错误的是( )

A. 如果使用自带的数据库,需要进行数据库的相关配置
B. hive-evn.sh文件名是固定的,不得随意修改
C. 目前Hive主要是支持Oracle和MySQL数据库
D. 安装Hive时,首先确保Hadoop已经安装完毕并且能正确使用

我的答案:正确答案:C

目前Hive主要是支持derby和MySQL数据库,而不支持Oracle

HIVE不支持非等值连接,Hive可以使用derby、mysql作为数据库

关于Storm工作原理描述不正确的是 ( )

A、Nimbus负责在集群分发代码,topo不仅仅能在nimbus机器上提交,也能够在supervisor上提交

B、Supervisor监听分配给它的节点,根据Nimbus的委派在必要时启动和关闭工作进程

C、在Storm中有对于流stream的抽象,流是一个不间断的无界的连续tuple,注意Storm在建模事件流时,把流中的事件抽象为tuple即元组

D、处理stream内的tuple,抽象为Bolt,bolt可以消费任意数量的输入流

A. D
B. B
C. A
D. C

我的答案:C正确答案:C

Nimbus负责在集群分发代码,topo只能在nimbus机器上提交

关于Storm工作原理说法正确的是 ( )

B、Supervisor 主节点,是一个调度中心,负责分发任务
A、Tuple:在storm中,一条数据可以理解为是一个Tuple。
C、Nimbus从节点,任务执行的地方
D、Spout:从数据源获取数据并进行分发。

我的答案:C,D,B,A正确答案:B,D

Supervisor主节点,是一个调度中心,负责分发任务,Nimbus主节点,是一个调度中心,负责分发任务。

下列关于Storm的节点说法不正确的是 ( )

A、Storm节点可以分为Nimbus节点和Supervisor节点

B、Supervisor是主节点,Nimbus是工作节点,其中Supervisor节点是Storm的核心组件

C、Nimbus的主要工作是运行Storm拓扑,Nimbus分析拓扑并收集要执行的任务。然后,它将任务分配给可用的supervisor

D、Supervisor将有一个或多个工作进程。Supervisor将任务委派给工作进程

A. C
B. B
C. A
D. D

我的答案:D正确答案:B

Nimbus是主节点,Supervisor是工作节点,Nimbus是Storm的核心组件。

下列哪些选项是安装Storm前所必须安装的?(多选题)

A. Shell Script
B. Python
C. Zookeeper
D. JDK

我的答案:D,C正确答案:B,C,D

下列关于Hama的安装和使用说法错误的是()?(单选题)

A. hama-site.xml文件,是hama配置的核心文件
B. 安装Hama环境之前,需要完成JDK和Hadoop的环境部署
C. fs.default.name是hadoop中SecondaryNamenode的地址和端口
D. bsp.master.address即bsp中的BSPMaster的地址和端口

我的答案:C正确答案:C

fs.default.name是hadoop中Namenode的地址和端口

下列关于Storm体系架构说法正确的是( )

A、Nimbus负责在集群分发代码

B、Supervisor监听分配给它的节点,根据Nimbus的委派在必要时启动和关闭工作进程

C、Storm在建模事件流时,把流中的事件抽象为tuple即元组

D、处理stream内的tuple,抽象为bolt,bolt可以消费任意数量的输入流,只要将流方向导向该bolt,同时它可以发送新的流给其他bolt使用

A. B
B. C
C. D
D. A

我的答案:A,B,C,D正确答案:A,B,C,D

下列关于Hama的启动进程说法正确的是()?(单选题)

A. bin/start-all.sh
B. bin/start-bspd.sh
C. sbin/start-all.sh
D. sbin/start-bspd.sh

我的答案:D正确答案:D

如果在/etc/profile文件中已经配置,直接执行该命令即可;如果没有,则到hama的bin目录下执行

关于Storm体系架构描述不正确的是 ( )

A、 Worker:每个worker进程都属于一个特定的Topology,每个Supervisor节点的worker只能有一个

B、 Zookeeper:协调公有数据的存放(如心跳信息、集群状态、配置信息等)Nimbus将分配给Supervisor的任务写在Zookeeper中

C、 Nimbus:控制节点,用于提交、分配任务、集群监控等

D、Supervisor:负责接收Nimbus分配的任务,管理属于自己的worker进程


A. B
B. A
C. D
D. C

我的答案:C正确答案:B

Worker:每个worker进程都属于一个特定的Topology,每个Supervisor节点的worker可以有多个

Nimbus是主节点,是一个调度中心,负责分发任务

下列关于storm.yaml参数解释错误的是()?(单选题)

A、supervisor.slot.ports: 每一台worker机器,你用这个配置来指定多少workers运行在哪台机器

B、storm.Zookeeper.servers: 这是一个为Storm集群配置的Zookeeper集群的主机列表

C、java.library.path: 这是Storm使用的本地库(ZeroMQ和JZMQ)载入路径

D、storm.local.dir: Nimbus和Supervisor守护程序需要一个本地磁盘目录存储大量状态(像jars,conf,其它),每台机器都创建这些目录,赋可写权限

A. D
B. C
C. A
D. B

我的答案:A正确答案:A

storm.local.dir: Nimbus和Supervisor守护程序需要一个本地磁盘目录存储小量状态(像jars,conf,其它),每台机器都创建这些目录,赋可写权限

下列对于Storm集群部署描述错误的一项是(单选题)

A、Storm集群依赖于外部的Zookeeper

B、Storm在0.9版本之前,环境部署必须搭建ZeroMQ和JZMQ软件

C、supervisor.slot.ports是用来配置指定多少个Executor运行在机器上

D、storm.Zookeeper.servers:是一个为Storm集群配置的Zookeeper集群的主机列表

A. C
B. D
C. B
D. A

我的答案:B正确答案:A

supervisor.slot.ports是用来配置指定多少个Worker运行在机器上

storm rebalance Topology -n 6 -e onespout 5:拓扑使用6个Worker进程,Spout使用5个Executor

通常,BSP程序包含一序列的superstep。每一个superstep(超步)包含三个步骤,下列关于三个步骤描述正确的是()?(多选题)

A. Local computation(本地计算阶段,每个处理器只对存储本地内存中的数据进行本地计算)
B. Barrier synchronization(栅栏同步阶段,等待所有通信行为的结束)
C. Process communication(全局通信阶段,对任何非本地数据进行操作)
D. Process communication(全局通信阶段,对任何本地数据进行操作)(错误

我的答案:B,A,D正确答案:A,B,C

Process communication(全局通信阶段,对任何非本地数据进行操作)

Nimbus整个集群的主控核心,supervisor是工作节点,主要是分配任务,记录心跳状态。task是spout、bolt 和 acker 的逻辑抽象。woker是工作节点,一个 worker 对应一个进程。

;