28. flush的过程
答:flush是在内存的基础上进行的,首先写入文件的时候,会先将文件写到内存中,当内存写满的时候,就会清空缓存中的文件,然后一次性的将文件全部都写到硬盘中去保存。 29. 什么是队列
答:队列就是一个先进先出的过程。 30. List与set的区别
答:List和Set都是接口。他们各自有自己的实现类,有无顺序的实现类,也有有顺序的实现类。
最大的不同就是List是可以重复的。而Set是不能重复的。
List适合经常追加数据,插入,删除数据。但随即取数效率比较低。 Set适合经常地随即储存,插入,删除。但是在遍历时效率比较低。
31.数据的三范式 答:
第一范式()无重复的列
第二范式(2NF)属性完全依赖于主键 [消除部分子函数依赖]第三范式(3NF)属性不依赖于其它非主属性 [消除传递依赖] 32.三个datanode中当有一个datanode出现错误时会怎样?
答:当有一个datanode出现错误的时候,namenode会将那个datanode上的数据拷贝到其他的节点去进行存储。
33.sqoop在导入数据到mysql中,如何不重复导入数据,如果存在数据问题,sqoop如何处理? 答:
34.描述一下hadoop中,有哪些地方使用到了缓存机制,作用分别是什么?
答:缓存机制就是DistributedCash,就是在job任务执行前,将需要的文件拷贝到Task机器上进行缓存,提高mapreduce的执行效率。 35.MapReduce优化经验
答:(1.)设置合理的map和reduce的个数。
(2.)避免出现数据倾斜 (3.combine函数
(4.对数据进行压缩,避免大量的小文件
36.请列举出曾经修改过的/etc/下面的文件,并说明修改要解决什么问题?
答:/etc/profile这个文件,主要是用来配置环境变量。让hadoop命令可以在任意目录下面执行。
37.请描述一下开发过程中如何对上面的程序进行性能分析,对性能分析进行优化的过程。
38. 现有 1 亿个整数均匀分布,如果要得到前 1K 个最大的数,求最优的算法。
我先说下我的想法:分块,比如分 1W 块,每块 1W 个,然后分别找出每块最大值,从这最
大的 1W 个值中找最大 1K 个,
那么其他的 9K 个最大值所在的块即可扔掉,从剩下的最大的 1K 个值所在的块中找前 1K
个即可。那么原问题的规模就缩小到了 1/10。
问题:
(1)这种分块方法的最优时间复杂度。
(2)如何分块达到最优。比如也可分 10W 块,每块 1000 个数。则问题规模可降到原来 1/100。但事实上复杂度并没降低。
39.mapreduce的大致流程 答:主要分为八个步骤
1.0读取文件,解析成key,value对 2.0自定义map函数
3.0对map输出的数据进行分区 4.0对分区后的数据进行排序分组 5.0对分组后的数据进行规约
6.0通过网络拷贝,将map输出的数据拷贝到reduce节点
7.0自定义reduce函数,对map输入的key,value对进一步的处理 8.0对处理后的数据进行输出
40. combiner 和partion的作用
答:combiner主要是用来减少输入到reduce阶段的数据
Partion作用主要是对map处理的数据进行分区,可以解决数据倾斜的问题。
41.用mapreduce实现sql语 select count (x) from a group by b;
42.用mapreduce 如何实现两张表连接,有哪些方法。
43.知道mapreduce 大致流程,map , shuffle , reduce
44.搭建hadoop集群 , master和slaves都运行哪些服务
答:master主要是运行我们的主节点,slaves主要是运行我们的从节点。
45. hadoop参数调优
46. pig , latin , hive语法有什么不同 答:
47.描述Hbase,ZooKeeper搭建过程 48.hadoop运行原理
答:hadoop的主要核心是由两部分组成,HDFS和mapreduce,首先HDFS的原理就是分布式的文件存储系统,将一个大的文件,分割成多个小的文件,进行存储在多台服务器上。 Mapreduce的原理就是使用JobTracker和TaskTracker来进行作业的执行。Map就是将任务展开,reduce是汇总处理后的结果。 49.mapreduce的原理 答:mapreduce的原理就是将一个MapReduce框架由一个单独的master JobTracker和每个集群节点一个slave TaskTracker共同组成。master负责调度构成一个作业的所有任务,这些的slave上,master监控它们的执行,重新执行已经失败的任务。而slave仅负责执行由maste指派的任务。
50.HDFS存储机制
答:HDFS主要是一个分布式的文件存储系统,由namenode来接收用户的操作请求,然后根据文件大小,以及定义的block块的大小,将大的文件切分成多个block块来进行保存 51.举一个例子说明mapreduce是怎么运行的。
52.如何确认hadoop集群的健康状况
答:使用JPS命令来查看各个节点运行的进程是否正常。
53.mapreduce作业,不让reduce输出,用什么代替reduce的功能。
54.hive如何调优
答:hive最终都会转化为mapreduce的job来运行,要想hive调优,实际上就是mapreduce调优,可以有下面几个方面的调优。解决收据倾斜问题,减少job数量,设置合理的map和reduce个数,对小文件进行合并,优化时把我整体,单个task最优不如整体最优。按照一定规则分区。
55.hive如何控制权限 56.
56.HBase写数据的原理是什么? 答:
57.hive能像关系型数据库那样建多个库吗? 答:当然能了。
58.HBase宕机如何处理
答:宕机分为HMaster宕机和HRegisoner宕机,如果是HRegisoner宕机,HMaster会将其所管理的region重新分布到其他活动的RegionServer上,由于数据和日志都持久在HDFS中,该操作不会导致数据丢失。所以数据的一致性和安全性是有保障的。
如果是HMaster宕机,HMaster没有单点问题,HBase中可以启动多个HMaster,通过Zookeeper的Master Election机制保证总有一个Master运行。即ZooKeeper会保证总会有一个HMaster在对外提供服务。
59.假设公司要建一个数据中心,你会如何处理?
60. 单项选择题
1. 下面哪个程序负责 HDFS 数据存储。 答案 C
a)NameNode b)Jobtracker c)Datanode d)secondaryNameNode e)tasktracker 2. HDfS 中的 block 默认保存几份? 答案 A a)3 份 b)2 份 c)1 份 d)不确定
3. 下列哪个程序通常与 NameNode 在一个节点启动? 答案C a)SecondaryNameNode b)DataNode c)TaskTracker d)Jobtracker 4. Hadoop 作者 答案D
a)Martin Fowler b)Kent Beck c)Doug cutting 5. HDFS 默认 Block Size 答案 B a)32MB b)64MB c)128MB
6. 下列哪项通常是集群的最主要瓶颈 答案D 编者 QQ:1040195253 19
a)CPU b)网络 c)磁盘 d)内存
7. 关于 SecondaryNameNode 哪项是正确的? 答案C a)它是 NameNode 的热备 b)它对内存没有要求
c)它的目的是帮助 NameNode 合并编辑日志,减少 NameNode 启动时间 d)SecondaryNameNode 应与 NameNode 部署到一个节点
多选题:
8. 下列哪项可以作为集群的管理工具 答案 ABCD a)Puppet b)Pdsh c)Cloudera Manager d)Zookeeper 9. 配置机架感知的下面哪项正确 答案 ABC a)如果一个机架出问题,不会影响数据读写
b)写入数据的时候会写到不同机架的 DataNode 中 c)MapReduce 会根据机架获取离自己比较近的网络数据 10. Client 端上传文件的时候下列哪项正确 答案 ABC a)数据经过 NameNode 传递给 DataNode b)Client 端将文件切分为 Block,依次上传
c)Client 只上传数据到一台 DataNode,然后由 NameNode 负责 Block 复制工作 11. 下列哪个是 Hadoop 运行的模式 答案 ABC a)单机版 b)伪分布式 c)分布式
12. Cloudera 提供哪几种安装 CDH 的方法 答案 ABCD a)Cloudera manager b)Tar ball c)Yum d)Rpm
判断题:
13. Ganglia 不仅可以进行监控,也可以进行告警。( ) 14. Block Size 是不可以修改的。( )
15. Nagios 不可以监控 Hadoop 集群,因为它不提供 Hadoop 支持。( ) 16. 如果 NameNode 意外终止, SecondaryNameNode 会接替它使集群继续工作。( ) 17. Cloudera CDH 是需要付费使用的。( )
18. Hadoop 是 Java 开发的,所以 MapReduce 只支持 Java 语言编写。( ) 19. Hadoop 支持数据的随机读写。( )
20. NameNode 负责管理 metadata, client 端每次读写请求,它都会从磁盘中读取或则 会写
入 metadata 信息并反馈 client 端。( )
21. NameNode 本地磁盘保存了 Block 的位置信息。( ) 22. DataNode 通过长连接与 NameNode 保持通信。( )
23. Hadoop 自身具有严格的权限管理和安全措施保障集群正常运行。( ) 24. Slave 节点要存储数据,所以它的磁盘越大越好。( ) 25. hadoop dfsadmin –report 命令用于检测 HDFS 损坏块。( ) 26. Hadoop 默认调度器策略为 FIFO( )
27. 集群内每个节点都应该配 RAID,这样避免单磁盘损坏,影响整个节点运行。( ) 28. 因为 HDFS 有多个副本,所以 NameNode 是不存在单点问题的。( ) 29. 每个 map 槽就是一个线程。( )
30. Mapreduce 的 input split 就是一个 block。( )
31. NameNode 的 Web UI 端口是 50030,它通过 jetty 启动的 Web 服务。( ) 编者 QQ:1040195253 21
32. Hadoop 环境变量中的 HADOOP_HEAPSIZE 用于设置所有 Hadoop 守护线程的内
存。它默
认是 200 GB。( )
33. DataNode 首次加入 cluster 的时候,如果 log 中报告不兼容文件版本,那需要 NameNode
执行“Hadoop namenode -format”操作格式化磁盘。( )
全部都是错误滴
61. 、 datanode 首次加入 cluster 的时候,如果 log 报告不兼容文件版本,那需要 namenode 执行格式化操作,这样处理的原因是? 答:
62. 谈谈数据倾斜,如何发生的,并给出优化方案
答:数据倾斜主要是因为在集群中,某个map任务的key对应的value的值远远多于其他节点的key所应对的值,导致某个节点的mapreduce执行效率会比较慢,那么解决数据倾斜的最根本原因就是避免某个节点上执行任务的数据量过大,我们可以使用map阶段的partion对过大的数据块进行分区,将一个大的数据块分成多个小的文件,然后来执行mapreduce,这样就可以解决mapreduce的数据倾斜的问题了。 63. 谈谈 hadoop1 和 hadoop2 的区别 答:首先hadoop1的主要结构是由HDFS和mapreduce组成的,HDFS主要是用来存储数据,mapreduce主要是用来计算的,那么HDFS的数据是由namenode来存储元数据信息,datanode来存储数据的。Jobtracker接收用户的操作请求之后去分配资源执行task任务。在hadoop2中,首先避免了namenode单点故障的问题,使用两个namenode来组成namenode feduration的机构,两个namenode使用相同的命名空间,一个是standby状态,一个是active状态。用户访问的时候,访问standby状态,并且,使用journalnode来存储数据的原信息,一个namenode负责读取journalnode中的数据,一个namenode负责写入journalnode中的数据,这个平台组成了hadoop的HA就是high availableAbility高可靠。然后在hadoop2中没有了jobtracker的概念了,统一的使用yarn平台来管理和调度资源,yarn平台是由resourceManager和NodeManager来共同组成的,ResourceManager来接收用户的操作请求之后,去NodeManager上面启动一个主线程负责资源分配的工作,然后分配好了资源之后告知ResourceManager,然后ResourceManager去对应的机器上面执行task任务。 64. 说说值对象与引用对象的区别?
65. 谈谈你对反射机制的理解及其用途?
答:java中的反射,首先我们写好的类,经过编译之后就编程了.class文件,我们可以获取这个类的.class文件,获取之后,再来操作这个类。这个就是java的反射机制。
66. ArrayList、Vector、LinkedList 的区别及其优缺点?HashMap、HashTable 的区别及其优缺点? 答:ArrayList 和Vector是采用数组方式存储数据, ,Vector由于使用了synchronized方法(线