Hadoop面试题
1、把数据仓库从传统关系数据库转到hadoop有什么优势?
- 原关系存储方式昂贵
- 空间有限
- hadoop支持结构化(例如 RDBMS),非结构化(例如 images,PDF,docs )和半结构化(例如 logs,XMLs)的数据可以以可扩展和容错的方式存储在较便宜的商品机器中。
- 可以通过批处理作业和近实时(即,NRT,200 毫秒至 2 秒)流(例如 Flume 和 Kafka)来摄取数据。
- 数据可以使用诸如 Spark 和 Impala 之类的工具以低延迟(即低于 100 毫秒)的能力查询。
- 可以存储以兆兆字节到千兆字节为单位的较大数据量。
2、大数据解决方案的关键步骤是什么?
提取数据,存储数据(即数据建模)和处理数据(即数据加工,数据转换和查询数据)。
3、下面哪个程序负责 HDFS 数据存储。
a)NameNode b)Jobtracker c)Datanode d)SecondaryNameNode e)Tasktracker
答案C datanode
4、 下列哪个程序通常与 NameNode 在一个节点启动?
a)SecondaryNameNode b)DataNode c)TaskTracker d)Jobtracker
答案D
分析:
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执行而言的
5、关于 SecondaryNameNode 哪项是正确的?
a)它是 NameNode 的热备 b)它对内存没有要求
c)它的目的是帮助 NameNode 合并编辑日志,减少 NameNode 启动时间
d)SecondaryNameNode 应与 NameNode 部署到一个节点
6、NameNode和DataNode作用是什么?
NameNode管理文件系统的元数据,DataNode存储实际的数据。客户端Client通过同NameNode和DataNodes的交互访问文件系统。客户端联系NameNode以获取文件的元数据,而真正的文件I/O操作是直接和DataNode进行交互的。
NameNode负责管理文件系统的命名空间、集群配置信息和存储块的复制等。NameNode会将文件系统的Meta-data存储在内存中,这些信息主要包括了文件信息、每一个文件对应的文件块的信息和每一个文件块在DataNode的信息等
DataNode是文件存储的基本单元,它将Block存储在本地文件系统中,保存了Block的Meta-data,同时周期性地将所有存在的Block信息发送给NameNode。
注意:client直接和datanode交互哦
http://www.aboutyun.com/thread-5845-1-1.html
7、讲一下Client读取DFS文件的顺序流
1) Client向NameNode发起文件读取的请求。
2) NameNode返回文件存储的DataNode的信息。
3) Client读取文件信息。
8、讲一下Client写入DFS文件的顺序流
1) Client向NameNode发起文件写入的请求。
2) NameNode根据文件大小和文件块配置情况,返回给Client它所管理部分DataNode的信息。
3) Client将文件划分为多个Block,根据DataNode的地址信息,按顺序写入到每一个DataNode块中。
9、hadoop主要的端口都有啥
- 默认端口 设置位置
- 9000 namenode
- 8020 namenode
- 8021 JT RPC
- 50030 mapred.job.tracker.http.address JobTracker administrative web GUI
- 50070 dfs.http.address NameNode administrative web GUI
- 50010 dfs.datanode.address DataNode control port
- 50020 dfs.datanode.ipc.address DataNode IPC port, used for block transfer
- 50060 mapred.task.tracker.http.address Per TaskTracker web interface
- 50075 dfs.datanode.http.address Per DataNode web interface
- 50090 dfs.secondary.http.address Per secondary NameNode web interface
10、DFS文件系统中如何查看文件的命令是?
hadoop fs -cat /user/output/outfile
11、把文件系统中的文件存入DFS文件系统的命令是?
hadoop fs -put /home/file.txt /user/input
12、把DFS文件系统的文件目录写到本地文件系统目录的命令是?
hadoop fs -get /user/localfile/ /home/hadoop_dir/
13、Hadoop 的核心配置文件是什么?
Hadoop 的核心配置通过两个 xml 文件来完成:1,hadoop-default.xml;2,hadoop-site.xml。
14、hadoop的三种调度器分别是什么?
1) 默认调度器FIFO
hadoop中默认的调度器,采用先进先出的原则
2) 计算能力调度器CapacityScheduler
选择占用资源小,优先级高的先执行
3) 公平调度器FairScheduler
同一队列中的作业公平共享队列中所有资源
15、简单介绍一下hive
hive存的是和hdfs的映射关系,hive是逻辑上的数据仓库,实际操作的都是hdfs上的文件,HQL就是用sql语法来写的mr程序。
可以看做是一次写入多次读取的操作,可以看成是ETL工具。
16、Sqoop是什么?
hadoop生态圈上的数据传输工具。
可以将关系型数据库的数据导入非结构化的hdfs、hive或者bbase中,也可以将hdfs中的数据导出到关系型数据库或者文本文件中。
使用的是mr程序来执行任务,使用jdbc和关系型数据库进行交互。
import原理:通过指定的分隔符进行数据切分,将分片传入各个map中,在map任务中在每行数据进行写入处理没有reduce。
export原理:根据要操作的表名生成一个java类,并读取其元数据信息和分隔符对非结构化的数据进行匹配,多个map作业同时执行写入关系型数据库
17、聊聊MapReduce
离线计算框架,过程分为split map shuffle reduce四个过程
架构节点有:Jobtracker TaskTracker
Split将文件分割,传输到mapper,mapper接收KV形式的数据,经过处理,再传到shuffle过程。
Shuffle先进行HashPartition或者自定义的partition,会有数据倾斜和reduce的负载均衡问题;再进行排序,默认按字典排序;为减少mapper输出数据,再根据key进行合并,相同key的数据value会被合并;最后分组形成(key,value{})形式的数据,输出到下一阶段,Reduce输入的数据就变成了,key+迭代器形式的数据,再进行处理。
18、聊聊Hadoop性能调优?
调优可以通过系统配置、程序编写和作业调度算法来进行。
hdfs的block.size可以调到128/256(网络很好的情况下,默认为64)
调优的大头:
mapred.map.tasks、mapred.reduce.tasks设置mr任务数(默认都是1)
mapred.tasktracker.map.tasks.maximum每台机器上的最大map任务数
mapred.tasktracker.reduce.tasks.maximum每台机器上的最大reduce任务数
mapred.reduce.slowstart.completed.maps配置reduce任务在map任务完成到百分之几的时候开始进入
这个几个参数要看实际节点的情况进行配置,reduce任务是在33%的时候完成copy,要在这之前完成map任务,(map可以提前完成)
mapred.compress.map.output,mapred.output.compress配置压缩项,消耗cpu提升网络和磁盘io
合理利用combiner
注意重用writable对象
19、hive中如何添加分区?
可以通过改变表格将分区添加到表格中。让我们假设我们有一个名为 员工 的表,其中包含Id,Name,Salary,Designation等字段。
以下查询用于将分区添加到employee表。
hive> ALTER TABLE employee
> ADD PARTITION (year=’2013’)
> location '/2012/part2012';
20、如何向hive中插入数据
在hive中,一般使用LOAD DATA插入数据,数据来源一般为两种,一种是从本地文件系统,第二种是从hadoop文件系统。
LOCAL是标识符指定本地路径,它是可选的;
OVERWRITE 是可选的,覆盖表中的数据;
PARTITION 也是可选的。
测试:
将下列数据插入到employee表中,数据格式为每个字段中间使用tab分割,每行使用回车,存储到一个txt文件中,
1201 Gopal 45000 Technical manager
1202 Manisha 45000 Proof reader
1203 lisong 50000 what is you
1204 xiaohau 88888 abcdefg
1205 xiaoming 99999 hehehehe
执行导入语句:
LOAD DATA LOCAL INPATH '/home/hadoop/HivePy/employee.txt' OVERWRITE INTO TABLE userdb.employee;
Hadoop面试题的更多相关文章
- Hadoop 面试题redis
Hadoop 面试题之十 548.redis有什么特别之处,为什么用redis,用hbase 不行么? 答:redis 是基于内存的数据库,速度快 551.redis用什么版本? 3.0以上才支持集群 ...
- Hadoop 面试题之Hbase
Hadoop 面试题之九 16.Hbase 的rowkey 怎么创建比较好?列族怎么创建比较好? 答: 19.Hbase 内部是什么机制? 答: 73.hbase 写数据的原理是什么? 答: 75.h ...
- Hadoop 面试题之storm 3个
Hadoop 面试题之八 355.metaq 消息队列 zookeeper 集群 storm集群(包括 zeromq,jzmq,和 storm 本身)就可以完成对商城推荐系统功能吗?还有其他的中间件? ...
- hadoop面试题答案
Hadoop 面试题,看看书找答案,看看你能答对多少(2) 1. 下面哪个程序负责 HDFS 数据存储.a)NameNode b)Jobtracker c)Datanode d)secondary ...
- 大数据hadoop面试题2018年最新版(美团)
还在用着以前的大数据Hadoop面试题去美团面试吗?互联网发展迅速的今天,如果不及时更新自己的技术库那如何才能在众多的竞争者中脱颖而出呢? 奉行着"吃喝玩乐全都有"和"美 ...
- Hadoop 之面试题
颜色区别: 蓝色:hive,橙色:Hbase.黑色hadoop 请简述hadoop怎样实现二级排序. 你认为用Java,Streaming,pipe 方式开发map/reduce,各有哪些优缺点: 6 ...
- 【Todo】找出共同好友 & Spark & Hadoop面试题
找了这篇文章看了一下面试题<Spark 和hadoop的一些面试题(准备)> http://blog.csdn.net/qiezikuaichuan/article/details/515 ...
- Hadoop 面试题 之Hive
1.Hive 有哪些方式保存元数据,各有哪些特点. 15. Hive内部表和外部表的区别 23.hive底层与数据库交互原理Hive的Hql语句掌握情况? 36.使用Hive或自定义mr实现如下逻辑: ...
- 大数据技术Hadoop笔试题
Hadoop有高容错性的特点,并且设计用来部署在低廉的(low-cost)硬件上.以下是由应届毕业生网小编J.L为您整理推荐的面试笔试题目和经验,欢迎参考阅读. 单项选择题 1. 下面哪个程序负责 H ...
随机推荐
- iptables命令提取总结,包含扩展模块<取自朱双印博客>
以下内容只是一些命令相关的,以朱双印博客中的iptables的教程提取出来的.纯粹只是命令的总结,如果需要看理论的知识,建议去看朱老师的博客,目前还没有看到写得比这个好的了. <http://w ...
- Task与线程池
尽量使用Task,而不是线程池 因为Task是基于线程的,单不是一一对应的 Task的切换与开销要比线程小很多,也更容易管理 http://www.cnblogs.com/yunfeifei/p/41 ...
- 《修炼之道:.NET开发要点精讲》读书笔记(三)
后几章的习题 1.异步调用开始后,什么时候才能使用异步执行的结果? A:最好在EndInvoke()方法返回之后才能使用异步执行的结果,其它时候不能保证异步调用已完成. 2.委托的异步调用开始后(即调 ...
- python 练习4
题目为信用卡消费管理系统: 主程序:main.py #!usr/bin/env python # encoding: utf-8 import conf,sys,time,re,os import j ...
- EmWin 文本显示函数
函数模型----------------------------------- 1:void GUI_DispChar(U16 c): 在当前窗口的当前文本位置处,使用当前字体显示单个字符. c ...
- flume1.4.0源码结构剖析
flume基本思想: source负责收集数据,channel负责缓存数据,sink负责消费channel中的数据,具体使用方式这里不赘述 生命周期管理: 生命周期相关代码在flume-ng-core ...
- 《团队-爬取豆瓣top250-开发文档》
项目托管平台地址:https://github.com/gengwenhao/GetTop250.git 本项目能够爬取豆瓣电影TOP250并向用户展示电影的排名,分数等
- 高速上手C++11 14 笔记1
1 constexpr constexpr关键字可以让已经具备常量返回的函数运用于常量的位置. c++14起可以在函数内部使用局部变量.循环和分支等简单语句. 2 委托构造&继承构造 委托构造 ...
- Python小技巧:运行目录或ZIP文件
在写Python程序时,将不同功能代码写在不同文件中是一个好习惯,但是对于某些情况.如需要将脚本提供给别人运行使用,如若将程序写在几个文件中,则需要将文件都发给他人.别人就需要管理不同文件,这样对于别 ...
- 非交互式一句话添加root用户
useradd -p `openssl passwd -1 -salt ‘lsof’ admin123` -u 0 -o -g root -G root -s /bin/bash -d /usr/bi ...