美文网首页
Hadoop总结

Hadoop总结

作者: 白纸糊 | 来源:发表于2019-01-10 15:08 被阅读0次

    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

    1. 历史服务器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 创建节点

    相关文章

      网友评论

          本文标题:Hadoop总结

          本文链接:https://www.haomeiwen.com/subject/weqarqtx.html