搜索
查看: 6137|: 0

史上最全大数据工程师面试题以及答案汇总(一)

[复制链接]

24

主题

0

回帖

159

积分

注册会员

积分
159
发表于 2016-12-14 14:22:52 | 显示全部楼层 |阅读模式
  一、大数据基本概念

  1.1Gb=109bytes(1Gb=10亿字节),

  1Gb=1024Mb,

  1Mb=1024Kb,

  1Kb=1024bytes;

  2.基本流程是,分解大问题,解决小问题,从局部最优中选择全局最优;(当然,如果直接放内存里就能解决的话,那就直接想办法求解,不需要分解了。)

  3.分解过程常用方法:hash(x)%m。其中x为字符串/url/ip,m为小问题的数目,比如把一个大文件分解为1000份,m=1000;

  (4)解决问题辅助数据结构:hash_map,Trie树,bitmap,二叉排序树(AVL,SBT,红黑树);

  (5)topK问题:最大K个用最小堆,最小K个用最大堆。(至于为什么?自己在纸上写个小栗子,试一下就知道了。)

  (6)处理大数据常用排序:快速排序/堆排序/归并排序/桶排序

  二、大数据选择题

  1.HDFS中的block默认保存几份?(A)

  A.3份

  B.2份

  C.1份

  D.不确定

  2.与NameNode在一个节点启动的是?(D)

  A.SecondaryNameNode

  B.DataNode

  C.TaskTracker

  D.Jobtracker

  3.下列哪项通常是集群的最主要瓶颈?(C)

  A.CPU

  B.网络

  C.磁盘IO

  D.内存

  4.关于SecondaryNameNode正确的是?(C)

  A.它是NameNode的热备

  B.它对内存没有要求

  C.它的目的是帮助NameNode合并编辑日志

  D.SecondaryNameNode应与NameNode部署同节点

  5.大数据应用需依托的新技术有?(D)

  A.大规模存储与计算

  B.数据分析处理

  C.智能化

  D.以上都是

  6.大数据技术的战略意义在于对数据进行?(B)

  A.数据信息

  B.专业化处理

  C.速度处理

  D.内容处理

  7.尿布啤酒是大数据分析的____?(C)

  A.A/B测试

  B.分类

  C.关联规则挖掘

  D.数据聚类

  8.pwd命令的功能是什么?(C)

  A.设置用户的口令

  B.显示用户的口令

  C.显示当前目录的绝对路径

  D.查看当前目录的文件

  9.如何快速切换到用户John的主目录?(D)

  A.cd@John

  B.cd#John

  C.cd&John

  D.cd~John

  10.下列哪一项不是大数据提供的用户交互方式:(C)

  A.统计分析和数据挖掘

  B.任意查询和分析

  C.图形化展示

  D.企业报表

  11.与大数据密切相关的技术是(B)

  A.蓝牙

  B.云计算

  C.博弈论

  D.wifi

  12.大数据应用需依托的新技术有(D)

  A.大规模存储与计算

  B.数据分析处理

  C.智能化

  D.三个选项都是

  13.与大数据密切相关的技术是(B)

  A.蓝牙

  B.云计算

  C.博弈论

  D.wifi

  14.下面哪个程序负责HDFS数据存储(C)

  A.NameNode

  B.Jobtracker

  C.Datanode

  D.secondaryNameNode

  E.tasktracker

  15.HDfS中的block默认保存几份?(A)

  A.3份

  B.2份

  C.1份

  D.不确定

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

  A.SecondaryNameNode

  B.DataNode

  C.TaskTracker

  D.Jobtracker

  17.Hadoop作者(C)

  A.MartinFowler

  B.KentBeck

  C.Dougcutting

  18.HDFS默认BlockSize(B)(因为版本更换较快,这里答案只供参考)

  A.32MB

  B.64MB

  C.128MB

  19.下列哪项通常是集群的最主要瓶颈(C)

  A.CPU

  B.网络

  C.磁盘IO

  D.内存

  20.关于SecondaryNameNode哪项是正确的?(C)

  A.它是NameNode的热备

  B.它对内存没有要求

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

  D.SecondaryNameNode应与NameNode部署到一个节点

  21.下列哪项可以作为集群的管理?(ABC)

  A.Puppet

  B.Pdsh

  C.ClouderaManager

  D.Zookeeper

  22.配置机架感知的下面哪项正确(ABC)

  A.如果一个机架出问题,不会影响数据读写

  B.写入数据的时候会写到不同机架的DataNode中

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

  23.Client端上传文件的时候下列哪项正确(B)

  A.数据经过NameNode传递给DataNode

  B.Client端将文件切分为Block,依次上传

  C.Client只上传数据到一台DataNode,然后由NameNode负责Block复制工作

  24.下列哪个是Hadoop运行的模式(ABC)

  A.单机版

  B.伪分布式

  C.分布式

  25.Cloudera提供哪几种安装CDH的方法(ABCD)

  A.Clouderamanager

  B.Tarball

  C.Yum

  D.Rpm

  三、大数据判断题

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

  分析:

  此题的目的是考Ganglia的了解。严格意义上来讲是正确。

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

  2.BlockSize是不可以修改的。(错误)

  它是可以被修改的

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

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

  分析:

  Nagios是集群监控工具,而且是云计算三大利器之一

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

  分析:

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

  hadoop根据SecondaryNameNode恢复Namenode

  5.ClouderaCDH是需要付费使用的。(错误)

  分析:

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

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

  分析:

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

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

  分析:

  lucene是支持随机读写的,而hdfs只支持随机读。但是HBase可以来补救。

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

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

  修改后分析:

  分析:

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

  1)文件写入

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

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

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

  2)文件读取

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

  NameNode返回文件存储的DataNode的信息。

  Client读取文件信息。

  具体查看

  hadoop中NameNode、DataNode和Client三者之间协作关系

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

  分析:

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

  具体同样查看

  hadoop中NameNode、DataNode和Client三者之间协作关系

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

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

  首先明确一下概念:

  (1).长连接

  Client方与Server方先建立通讯连接,连接建立后不断开,

  然后再进行报文发送和接收。这种方式下由于通讯连接一直

  存在,此种方式常用于点对点通讯。

  (2).短连接

  Client方与Server每进行一次报文收发交易时才进行通讯连

  接,交易完毕后立即断开连接。此种方式常用于一点对多点

  通讯,比如多个Client连接一个Server.

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

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

  具体可查看

  hadoop安全性需不断加强

  12.Slave节点要存储数据,所以它的磁盘越大越好。(错误)

  分析:

  一旦Slave节点宕机,数据恢复是一个难题

  13.hadoopdfsadmin–report命令用于检测HDFS损坏块。(错误)

  分析:

  hadoopdfsadmin-report

  用这个命令可以快速定位出哪些节点down掉了,HDFS的容量以及使用了多少,以及每个节点的硬盘使用情况。

  当然NameNode有个http页面也可以查询,但是这个命令的输出更适合我们的脚本监控dfs的使用状况

  ConfiguredCapacity:77209395855360(70.22TB)

  PresentCapacity:76079914600683(69.19TB)

  DFSRemaining:60534707015680(55.06TB)

  DFSUsed:15545207585003(14.14TB)

  DFSUsed%:20.43%

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

  Datanodesavailable:107(109total,2dead)

  Name:172.16.218.232:50010

  Rack:/lg/dminterface0

  DecommissionStatus:Normal

  ConfiguredCapacity:1259272216576(1.15TB)

  DFSUsed:185585852416(172.84GB)

  NonDFSUsed:39060951040(36.38GB)

  DFSRemaining:1034625413120(963.57GB)

  DFSUsed%:14.74%

  DFSRemaining%:82.16%

  Lastcontact:WedNov1810:19:44CST2009

  Name:172.16.216.126:50010

  Rack:/lg/dminterface2

  DecommissionStatus:Normal

  ConfiguredCapacity:661261402112(615.85GB)

  DFSUsed:123147280384(114.69GB)

  NonDFSUsed:8803852288(8.2GB)

  DFSRemaining:529310269440(492.96GB)

  DFSUsed%:18.62%

  DFSRemaining%:80.05%

  Lastcontact:WedNov1810:19:46CST2009

  复制代码

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

  具体参考

  Hadoop集群三种作业调度算法介绍

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

  分析:

  首先明白什么是RAID,可以参考百科磁盘阵列。

  这句话错误的地方在于太绝对,具体情况具体分析。题目不是重点,知识才是最重要的。

  因为hadoop本身就具有冗余能力,所以如果不是很严格不需要都配备RAID。具体参考第二题。

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

  分析:

  NameNode存在单点问题。了解详细信息,可以参考

  Hadoop中Namenode单点故障的解决方案及详细介绍AvatarNode

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

  分析:首先我们知道什么是map槽,map槽->mapslot

  mapslot只是一个逻辑值(org.apache.hadoop.mapred.TaskTracker.TaskLauncher.numFreeSlots),而不是对应着一个线程或者进程

  具体见:

  hadoop中槽-slot是线程还是进程讨论

  18.Mapreduce的inputsplit就是一个block。(错误)

  InputFormat的数据划分、Split调度、数据读取三个问题的浅析

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

  分析:

  根据下面,很显然JOBTRACKER的WebUI端口是50030

  端口说明:

  默认端口设置位置

  9000namenode

  8020namenode

  8021JTRPC

  50030mapred.job.tracker.http.addressJobTrackeradministrativewebGUI

  50070dfs.http.addressNameNodeadministrativewebGUI

  50010dfs.datanode.addressDataNodecontrolport

  50020dfs.datanode.ipc.addressDataNodeIPCport,usedforblocktransfer

  50060mapred.task.tracker.http.addressPerTaskTrackerwebinterface

  50075dfs.datanode.http.addressPerDataNodewebinterface

  50090dfs.secondary.http.addressPersecondaryNameNodewebinterface

  设置位置描述信息

  namenode交互端口

  namenodeRPC交互端口

  JTRPC交互端口

  mapred.job.tracker.http.addressJobTrackeradministrativewebGUIJOBTRACKER的HTTP服务器和端口

  dfs.http.addressNameNodeadministrativewebGUINAMENODE的HTTP服务器和端口

  dfs.datanode.addressDataNodecontrolportDATANODE控制端口,主要用于DATANODE初始化时向NAMENODE提出注册和应答请求

  dfs.datanode.ipc.addressDataNodeIPCport,usedforblocktransferDATANODE的RPC服务器地址和端口

  mapred.task.tracker.http.addressPerTaskTrackerwebinterfaceTASKTRACKER的HTTP服务器和端口

  dfs.datanode.http.addressPerDataNodewebinterfaceDATANODE的HTTP服务器和端口

  dfs.secondary.http.addressPersecondaryNameNodewebinterface辅助DATANODE的HTTP服务器和端口

  20.Hadoop环境变量中的HADOOP_HEAPSIZE用于设置所有Hadoop守护线程的内存。它默

  认是200GB。(错误)

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

  具体参考hadoop集群内存设置

  21.DataNode首次加入cluster的时候,如果log中报告不兼容文件版本,那需要NameNode

  执行“Hadoopnamenode-format”操作格式化磁盘。(错误)

  分析:

  首先明白介绍,什么ClusterID

  ClusterID

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

  二次整理

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

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

  详细内容可参考

  hadoop集群添加namenode的步骤及常识

  以上答案通过多个资料验证,对于资料不充分的内容,都标有”个人观点“,给出本测试题抱着谨慎的态度,希望大家多批评指正。

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

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

  23.BlockSize是不可以修改的。(错误)

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

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

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

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

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

  26.ClouderaCDH是需要付费使用的。(错误)

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

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

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

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

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

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

  此题分析:

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

  1)文件写入

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

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

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

  2)文件读取

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

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

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

  Client读取文件信息。

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

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

  首先明确一下概念:

  (1).长连接

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

  (2).短连接

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

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

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

  33.Slave节点要存储数据,所以它的磁盘越大越好。(错误)

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

  34.hadoopdfsadmin–report命令用于检测HDFS损坏块。(错误)

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

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

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

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

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

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

  39.Mapreduce的inputsplit就是一个block。(错误)

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

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

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

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

  分析:

  首先明白介绍,什么ClusterID

  ClusterID

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

  二次整理

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

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

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

大数据中国微信

QQ   

版权所有: Discuz! © 2001-2013 大数据.

GMT+8, 2024-11-15 18:36 , Processed in 0.114090 second(s), 24 queries .

快速回复 返回顶部 返回列表