hadoop job 数量_Hadoop总结

Linux

1. 问题:Linux常用命令

参考答案:find、df、tar、ps、top、netstat等。(尽量说一些高级命令)

2. 问题:Linux查看内存、磁盘存储、io 读写、端口占用、进程等命令

答案:

1、查看内存:top

2、查看磁盘存储情况:df -h

3、查看磁盘IO读写情况:iotop(需要安装一下:yum install iotop)、iotop -o(直接查看输出比较高的磁盘读写程序)

4、查看端口占用情况:netstat -tunlp | grep 端口号

5、查看进程:ps aux

Shell

3. 问题1:使用Linux命令查询file1中空行所在的行号

答案:

[atguigu@hadoop102 datas]$ awk '/^$/{print NR}' file1.txt

5

4. 问题2:有文件chengji.txt内容如下:

张三 40

李四 50

王五 60

使用Linux命令计算第二列的和并输出

[atguigu@hadoop102 datas]$ cat chengji.txt | awk -F " " '{sum+=$2} END{print sum}'

150

5. 问题3:Shell脚本里如何检查一个文件是否存在?如果不存在该如何处理?

#!/bin/bash

if [ -f file.txt ]; then

echo "文件存在!"

else

echo "文件不存在!"

fi

6. 问题4:用shell写一个脚本,对文本中无序的一列数字排序

[root@CentOS6-2 ~]# sort -n test.txt|awk '{a+=$0;print $0}END{print "SUM="a}'

7. 问题5:请用shell脚本写出查找当前文件夹(/home)下所有的文本文件内容中包含有字符”shen”的文件名称

[atguigu@hadoop102 datas]$ grep -r "shen" /home | cut -d ":" -f 1

/home/atguigu/datas/sed.txt

/home/atguigu/datas/cut.txt

入门

8. 简要描述如何安装配置apache的一个开源Hadoop,列出具体步骤。

1)使用root账户登录

2)修改IP

3)修改host主机名

4)配置SSH免密码登录

5)关闭防火墙

6)安装JDK

7)解压hadoop安装包

8)配置hadoop的核心文件 hadoop-env.sh,core-site.xml , mapred-site.xml , hdfs-site.xml

9)配置hadoop环境变量

10)格式化 hadoop namenode-format

11)启动节点start-dfs.sh start-yarn.sh

9. Hadoop中需要哪些配置文件,其作用是什么?

1)core-site.xml:

(1)fs.defaultFS:hdfs://cluster1(域名),这里的值指的是默认的HDFS路径 。

(2)hadoop.tmp.dir:/export/data/hadoop_tmp,这里的路径默认是NameNode、DataNode、secondaryNamenode等存放数据的公共目录。用户也可以自己单独指定这三类节点的目录。

2)hdfs-site.xml:

(1) dfs.replication:他决定着系统里面的文件块的数据备份个数,默认为3个。

(2) dfs.data.dir:datanode节点存储在文件系统的目录 。

(3) dfs.name.dir:是namenode节点存储hadoop文件系统信息的本地系统路径 。

3)yarn-site.xml

(1)yarn.nodemanager.aux-services: Reducer获取数据的方式为shuffle

(2)yarn.resourcemanager.hostname:指定YARN的ResourceManager的地址

4)mapred-site.xml:

mapreduce.framework.name: yarn指定mr运行在yarn上。

10. 请列出正常工作的Hadoop集群中Hadoop都分别需要启动哪些进程,它们的作用分别是什么?

1)NameNode:负责管理文件系统名称空间和对集群中存储的文件的访问,保存有元数据。

2)SecondaryNameNode:它辅助NameNode合并edits和fsimage。

3)DataNode:负责存储集群实实在在的数据。

4)ResourceManager:负责整个集群资源的调度。

5)NodeManager:负责单个节点资源的调度。

6)DFSZKFailoverController:集群配置为高可用时它负责监控NameNode的状态,。

7)JournalNode :高可用情况下存放namenode的editlog文件。

11. 简述Hadoop的几个默认端口及其含义。

1)dfs.namenode.http-address:50070

2)SecondaryNameNode辅助名称节点端口号:50090

3)dfs.datanode.address:50010

4)fs.defaultFS:8020 或者9000

5)yarn.resourcemanager.webapp.address:8088

历史服务器web访问端口:19888

HDFS

12. HDFS的存储机制(读写流程)。

image.png

13. SecondaryNameNode 工作机制。

image.png

14. NameNode与SecondaryNameNode 的区别与联系?

1)区别

(1)NameNode负责管理整个文件系统的元数据,以及每一个路径(文件)所对应的数据块信息。

(2)SecondaryNameNode主要用于定期合并命名空间镜像和命名空间镜像的编辑日志。

2)联系:

(1)SecondaryNameNode中保存了一份和namenode一致的镜像文件(fsimage)和编辑日志(edits)。

(2)在主namenode发生故障时(假设没有及时备份数据),可以从SecondaryNameNode恢复数据。

15. 服役新数据节点和退役旧节点步骤

1)节点上线操作:

按照集群配置要求,把服务器环境准备好,然后直接启动DataNode即可。

2)节点下线操作:

将要退役的节点添加到黑名单中,刷新namenode和resourcemanager。等该节点死亡时,手动将进程退出。

16. Namenode挂了怎么办?

方法一:将SecondaryNameNode中数据拷贝到namenode存储数据的目录;

方法二:使用-importCheckpoint选项启动namenode守护进程,从而将SecondaryNameNode中数据拷贝到namenode目录中。

17. 写出你常用的HDFS命令

ls mkdir cat mv get put tail rm

18. HDFS原理,以及各个模块的职责

1)NameNode:Master节点,只有一个,管理HDFS的名称空间和数据块映射信息;配置副本策略;处理客户端请求。

2)DataNode:就是Slave。存储实际的数据;执行数据块的读写;汇报存储信息给NameNode。

3)Client:切分文件。访问或通过命令行管理HDFS;与NameNode交互,获取文件为准信息;与DataNode交互,读取和写入数据。

4)SecondaryName弄得:辅助NameNode,分担其工作量;定期合并fsimage和fsEdits,推送给NameNode;紧急情况下,可辅助恢复NameNode,但SecondaryName并非NameNode的热备。

MapReduce

19. FileInputFormat切片机制

(1)简单地按照文件的内容长度进行切片

(2)切片大小,默认等于Block大小

(3)切片时不考虑数据集整体,而是逐个针对每一个文件单独切片

20. 如何决定一个job的map和reduce的数量?

1)map数量由切片个数决定

splitSize=max{minSize,min{maxSize,blockSize}}

2)reduce数量根据集群性能测试得出

reduce的数量job.setNumReduceTasks(x);x 为reduce的数量。不设置的话默认为 1。

21. Maptask的个数由什么决定?

一个job的map阶段MapTask并行度(个数),由客户端提交job时的切片个数决定。

22. 请描述mapReduce有几种排序及排序发生的阶段。

1)排序的分类:

image.png

(5)自定义排序WritableComparable

2)排序发生的阶段:

(1)二次排序、全排序、部分排序发生在map阶段。

(2)辅助排序发生在Reduce阶段。

23. 请描述MapReduce中Shuffle阶段的工作流程,如何优化Shuffle阶段?

分区,排序,溢写,拷贝到对应Reduce机器上,增加Combiner,压缩溢写的文件。

image.png

image.png

24. 请描述mapReduce中combiner的作用是什么,一般使用情景,哪些情况不需要,及和reduce的区别?

1)Combiner的意义就是对每一个maptask的输出进行局部汇总,以减小网络传输量。

2)Combiner能够应用的前提是不能影响最终的业务逻辑,而且,Combiner的输出kv应该跟reducer的输入kv类型要对应起来。

3)Combiner和reducer的区别在于运行的位置。

Combiner是在每一个maptask所在的节点运行;

Reducer是接收全局所有Mapper的输出结果。

25. Mapreduce的工作原理,请举例子说明mapreduce是怎么运行的?

image.png

image.png

26. 如果没有定义partitioner,那数据在被送达reducer前是如何被分区的?

如果没有自定义的 partitioning,则默认的 partition 算法,即根据每一条数据的 key

的 hashcode 值摸运算(%)reduce 的数量,得到的数字就是“分区号”。

27. MapReduce 怎么实现 TopN?

可以自定义groupingcomparator,或者在map端对数据进行排序,然后再reduce输出时,控制只输出前n个数。就达到了topn输出的目的。

28. 有可能使 Hadoop 任务输出到多个目录中么?如果可以,怎么做?

1)可以输出到多个目录中,采用自定义OutputFormat。

2)实现步骤:

(1)自定义outputformat,

(2)改写recordwriter,具体改写输出数据的方法write()

29. 简述hadoop实现join的几种方法及每种方法的实现。

1)reduce side join

Map端的主要工作:为来自不同表(文件)的key/value对打标签以区别不同来源的记录。然后用连接字段作为key,其余部分和新加的标志作为value,最后进行输出。

Reduce端的主要工作:在reduce端以连接字段作为key的分组已经完成,我们只需要在每一个分组当中将那些来源于不同文件的记录(在map阶段已经打标志)分开,最后进行合并就ok了。

1)map join

在map端缓存多张表,提前处理业务逻辑,这样增加map端业务,减少reduce端数据的压力,尽可能的减少数据倾斜。

具体办法:采用distributedcache

(1)在mapper的setup阶段,将文件读取到缓存集合中。

(2)在驱动函数中加载缓存。

job.addCacheFile(new URI("file:/e:/mapjoincache/pd.txt"));// 缓存普通文件到task运行节点

30. 请简述hadoop怎样实现二级排序。

对map端输出的key进行排序,实现的compareTo方法。在compareTo方法中排序的条件有二个。

31. ** 参考下面的MR系统的场景:**

--hdfs块的大小为64MB

--输入类型为FileInputFormat

--有三个文件的大小分别是:64KB 65MB 127MB

Hadoop框架会把这些文件拆分为多少块?

5块:64K,64M,1M, 64M,63M

Yarn

32. 简述Hadoop1与Hadoop2 的架构异同。

加入了yarn解决了资源调度的问题。

加入了对Zookeeper的支持实现比较可靠的高可用。

33. 为什么会产生Yarn,它解决了什么问题,有什么优势?

Yarn最主要的功能就是解决运行的用户程序与yarn框架完全解耦。

Yarn上可以运行各种类型的分布式运算程序(mapreduce只是其中的一种),比如mapreduce、storm程序,spark程序……

34. MR作用提交全过程。

image.png

35. Hadoop的调度器总结。

目前,Hadoop作业调度器主要有三种:FIFO、Capacity Scheduler和Fair Scheduler。Hadoop2.7.2默认的资源调度器是Capacity Scheduler。

image.png

image.png

image.png

36. MapReduce推测执行算法及原理。

image.png

优化(15分)

37. Hadoop 优化方法。

1)数据输入小文件处理:

(1)合并小文件:对小文件进行归档(har)、自定义inputformat将小文件存储成sequenceFile文件。

(2)采用ConbinFileInputFormat来作为输入,解决输入端大量小文件场景。

(3)对于大量小文件Job,可以开启JVM重用。

2)map阶段

(1)增大环形缓冲区大小。由100m扩大到200m

(2)增大环形缓冲区溢写的比例。由80%扩大到90%

(3)减少对溢写文件的merge次数。

(4)不影响实际业务的前提下,采用combiner提前合并,减少 I/O。

3)reduce阶段

(1)合理设置map和reduce数:两个都不能设置太少,也不能设置太多。太少,会导致task等待,延长处理时间;太多,会导致 map、reduce任务间竞争资源,造成处理超时等错误。

(2)设置map、reduce共存:调整slowstart.completedmaps参数,使map运行到一定程度后,reduce也开始运行,减少reduce的等待时间。

(3)规避使用reduce,因为Reduce在用于连接数据集的时候将会产生大量的网络消耗。

(4)增加每个reduce去map中拿数据的并行数

(5)集群性能可以的前提下,增大reduce端存储数据内存的大小。

4)IO传输

(1)采用数据压缩的方式,减少网络IO的的时间。安装Snappy和LZOP压缩编码器。

(2)使用SequenceFile二进制文件

5)整体

(1)MapTask默认内存大小为1G,可以增加MapTask内存大小为4-5g

(2)ReduceTask默认内存大小为1G,可以增加ReduceTask内存大小为4-5g

(3)可以增加MapTask的cpu核数,增加ReduceTask的cpu核数

(4)增加每个container的cpu核数和内存大小

(5)调整每个Map Task和Reduce Task最大重试次数

HA高可用

38. 如何配置hadoop高可用HA?

安装zookeeper,修改conf下相关配置文件

安装hadoop ,修改 /etc/profile ,修改配置文件hadoo-env.sh、修改core-site.xml、修改hdfs-site.xml、修改mapred-site.xml、修改yarn-site.xml

修改slaves 、免密配置 、hadoop拷贝、启动zk、格式化hdfs,启动其他服务

Zookeeper

39. Zookeeper选举机制

半数机制(Paxos 协议):集群中半数以上机器存活,集群可用。所以Zookeeper适合装在奇数台机器上。

当集群开启的数量在半数以上时,就会将Leader给选出来,例如,有id为1,2,3三台机子,按顺序启动,第一台开启时,Zookeeper的日志会报错,因为启动数量没有达到集

一半:有id为1,2,3三台机子,按顺序启动1.启了两台,总共三台),数量多于一半,然后根据ID的大小选出Leader,则2号当选;2.3号启动时,Leader已经存在,则只能当小弟了。

40. Zookeeper常用命令

ls

查看子节点

get

获取节点信息

create

创建节点

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值