暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

hadoop 集群运维手册

闵栋 2023-02-24
929


是新朋友吗?记得点击下面名片,关注我哦



听段舒缓的音乐,咱们一起开启阅读之旅。



1、hadoop简介

1.1、hadoop概述


#HDFS 概述

Hadoop Distributed File System,简称HDFS,是一个分布式文件系统。

(1)NameNode(nn):存储文件的元数据,如文件名,文件目录结构,文件属性(生成时间、副本数、文件权限),以及每个文件的块列表和块所在的DataNode等。 

(2)DataNode(dn):在本地文件系统存储文件块数据,以及块数据的校验和。 

(3)Secondary NameNode(2nn):每隔一段时间对NameNode元数据备份。


#YARN 概述

Yet Another Resource Negotiator 简称YARN ,另一种资源协调者,是Hadoop 的资源管理器。

ResourceManager(RM):整个集群资源(内存、CPU等)的管理者 NodeManager(NM):单个节点服务器资源的管理者。ApplicationMaster(AM):单个任务运行的管理者。Container:容器,相当于一台独立的服务器,里面封装了任务运行所需要的资源,如内存、CPU、磁盘、网络等。


#MapReduce 概述

MapReduce 将计算过程分为两个阶段:Map 和 Reduce

(1)Map 阶段并行处理输入数据 

(2)Reduce 阶段对Map 结果进行汇总


1.2、各组件和对应服务名


组件名服务名进程名
NameNodehadoop-hdfs-namenodeNameNode
DataNodehadoop-hdfs-datanodeDataNode
ResourceManagerhadoop-yarn-resourcemanagerResourceManager
NodeManagerhadoop-yarn-nodemanagerNodeManager
JobHistoryhadoop-mapreduce-historyserverJobHistoryServer
JournalNodehadoop-hdfs-journalnodeJournalNode
zkfchadoop-hdfs-zfkcDFSZKFailoverController






2、hadoop服务整体启停

2.1、hadoop服务启停注解

2.1.1、一次完整的启动过程


1、启动所有zookeeper

2、启动所有的JournalNode

3、启动两台NameNode及zkfc ,

---这里可以通过查看namenode的web页面,查看两台机器的状态

---一台为active ,另一台为standby

4、启动所有的DataNode

5、启动两台ResourceManager ,这里可以通过查看resourceManager的web页面

6、启动所有的NodeManager

7、启动JobHistory


2.1.2、一次完整的关闭过程

1、停止JobHistory

2、停止所有的NodeManager

3、停止两台ResourceManager

4、停止所有的DataNode

5、停止两台NameNode及ZKFC

6、停止所有的JournalNode

7、停止所有的zookeeper



2.2、hadoop服务脚步启停

2.2.1、准备启停脚步

备注:启停脚步包含hdfs、yarn、historyserver ;

其他组件同理添加完善即可,不再展开。

    cd /root/bin
    vim myhadoop.sh


    备注:更新下面脚本命令,拷贝内容进去





    myhadoop.sh脚本命令参考下面:

      #!/bin/bash


      if [ $# -lt 1 ]
      then
      echo "No Args Input..."
      exit ;
      fi


      case $1 in
      "start")
      echo " =================== 启动 hadoop集群 ==================="


      echo " --------------- 启动 hdfs ---------------"
      ssh hadoop101 "/opt/module/hadoop-3.3.3/sbin/start-dfs.sh"
      echo " --------------- 启动 yarn ---------------"
      ssh hadoop102 "/opt/module/hadoop-3.3.3/sbin/start-yarn.sh"
      echo " --------------- 启动 historyserver ---------------"
      ssh hadoop103 "/opt/module/hadoop-3.3.3/bin/mapred --daemon start historyserver"
      ;;
      "stop")
      echo " =================== 关闭 hadoop集群 ==================="


      echo " --------------- 关闭 historyserver ---------------"
      ssh hadoop103 "/opt/module/hadoop-3.3.3/bin/mapred --daemon stop historyserver"
      echo " --------------- 关闭 yarn ---------------"
      ssh hadoop102 "/opt/module/hadoop-3.3.3/sbin/stop-yarn.sh"
      echo " --------------- 关闭 hdfs ---------------"
      ssh hadoop101 "/opt/module/hadoop-3.3.3/sbin/stop-dfs.sh"
      ;;
      *)
      echo "Input Args Error..."
      ;;
      esac


      备注:替换实际的集群服务器名和实际的路径

      保存后退出,然后赋予脚本执行权限

        chmod 777 myhadoop.sh

        分发到其他服务器上

          xsync root/bin


          也可以scp过去


          2.2.2、使用脚本启停hadoop

            #执行脚本停止集群
            myhadoop.sh stop
            #执行脚步启动集群
            myhadoop.sh start



            #验证启动是否成功

              >web端查看HDFS的NameNode
              http://hadoop101:9870


              >web端查看yarn的ResourceManager
              http://hadoop102:8088


              >历史服务器地址
              http://hadoop103:19888/jobhisto







              3、hadoop服务单独启停

              3.1、hdfs启停


              #执行脚本停止集群 myhadoop.sh stop

              #命令启动hdfs ---namenode节点上执行

                cd opt/module/hadoop-3.3.3/sbin/
                ./start-dfs.sh

                启动namenode、datanode,启动文件系统


                #命令停止hdfs ---namenode节点上执行

                  cd opt/module/hadoop-3.3.3/sbin/
                  ./stop-dfs.sh

                   

                  web端查看HDFS的NameNode

                  http://hadoop101:9870


                  3.2、yarn启停

                  #yarn启动

                  ---在resourcemanager节点上执行,先启动hdfs,再启动yarn

                    cd opt/module/hadoop-3.3.3/sbin/
                    ./start-yarn.sh

                    启动resourcemanager 、nodemanager


                    #yarn停止---在resourcemanager节点上执行

                      cd opt/module/hadoop-3.3.3/sbin/
                      ./stop-yarn.sh

                      web端查看yarn的ResourceManager

                      http://hadoop102:8088



                      3.3、启动hdfs、yarn

                      #启动hdfs、yarn

                        cd opt/module/hadoop-3.3.3/sbin/
                        ./start-all.sh


                        #停止hdfs、yarn

                          cd opt/module/hadoop-3.3.3/sbin/
                          ./stop-all.sh

                          备注:在本例中,namenode和resourcemanager节点不是同一个服务器,需要在hadoop101 和hadoop102 节点上分别执行一次

                          或者修改start-all.sh脚本


                          3.4、单独启动hdfs某个进程

                            myhadoop.sh stop
                            cd opt/module/hadoop-3.3.3/sbin/
                              # hdfs --daemon start 单独启动⼀个进程
                              hdfs --daemon start namenode # 只开启NameNode
                              hdfs --daemon start datanode # 只开启DataNode
                              hdfs --daemon start secondarynamenode # 只开启SecondaryNameNode






                              # hdfs --daemon stop 单独停⽌⼀个进程
                              hdfs --daemon stop namenode # 只停⽌NameNode
                              hdfs --daemon stop datanode # 只停⽌DataNode
                              hdfs --daemon stop secondarynamenode # 只停⽌SecondaryNameNode






                              # hdfs --workers --daemon start 启动所有的指定进程
                              hdfs --workers --daemon start namenode
                              hdfs --workers --daemon start datanode # 开启所有节点上的DataNode
                              hdfs --workers --daemon start secondarynamenode


                              # hdfs --workers --daemon stop 停止所有的指定进程
                              hdfs --workers --daemon stop namenode
                              hdfs --workers --daemon stop datanode # 停⽌所有节点上的DataNode
                              hdfs --workers --daemon stop secondarynamenode



                              4.常用命令&操作

                              4.1、HDFS常用命令

                              4.1.1、修改hdfs文件的备份数


                                hdfs  dfs -setrep  -R 副本数  dir


                                备注:dfs.replication 这个参数其实只在文件被写入dfs时起作用
                                虽然更改了配置文件,但是不会改变之前写入的文件的备份数


                                4.1.2、检查hdfs block健康状态

                                hdfs fsck


                                #删除坏的block块

                                hdfs fsck -delete 坏块路径(hdfs上的文件路径)

                                #扩展信息

                                  若出现坏块,即报告中Missing Blocks有值,
                                  尝试重启hdfs服务 ./stop-dfs.sh ./start-dfs.sh
                                  重启后观察(重启时间较长,10-20分钟之后再去查看)是否还有坏块


                                  若重启HDFS服务不能修复,可通过手动检查坏块并删除坏块
                                  hdfs fsck --扫描坏块
                                  hdfs fsck -delete 坏块地址
                                  #扫描坏块后查看,坏块地址为”:MISSING“之前的地址


                                  再重新检查坏块情况和坏块告警情况


                                  4.1.3、启动负载均衡

                                  datanode之间出现数据存储大小不均衡时,比如磁盘损坏或者新增加,需要做负载均衡。

                                  尽量不要在namenode节点使用

                                    cd opt/module/hadoop-3.3.3/sbin/
                                    ./start-balancer.sh -t 10%
                                    datanode存储使用率/集群总存储使用率>10%就触发负载均衡


                                    4.1.4、格式化文件系统

                                    格式化namenode后集群的数据会全部丢失,格式化之前需做好数据备份工作。

                                      1、格式化之前,首先需删除Hadoop系统日志,
                                      默认路径为${HADOOP_HOME}/logs。


                                      2、然后删除主节点目录以及数据节点目录,
                                      默认路径分别为${hadoop.tmp.dir}/dfs/name
                                      ${hadoop.tmp.dir}/dfs/data。
                                      hadoop.tmp.dir默认值是/tmp/hadoop-${user.name}
                                      可以在core-site.xml配置文件中的hadoop.tmp.dir属性设置。
                                      而上面的主节点目录和数据节点目录也可以在hdfs-site.xml配置文件
                                      中的dfs.namenode.name.dir和dfs.namenode.data.dir属性中设置。(在dfs/name/current目录下的VERSION文件中记录集群的版本信息,其中clusterID是集群版本标识,每次format都会生成不同的ID。在dfs/data/current目录下的VERSION文件中记录datanode的版本相关信息,其中clusterID标识它是属于哪个集群的,namenode 和 datanode的这两个值一致时,才会认为是同一个集群。格式化后,namenode的clusterID会改变,但datanode节点目录dfs/data/current如果在格式化时仍存在,则datanode的clusterID不会变化。这种情况下,启动集群,datanode进程虽然也会启动,但与namenode确认clusterID后,发现不一致,就会自动退出了。)
                                      格式化NameNode,命令为hdfs namenode -format。




                                      3、格式化NameNode,命令为hdfs namenode -format。


                                      4.1.5、升级、回滚、持久化、checkpoint

                                      #分发新的hdfs版本之后,namenode应以upgrade 选项启动

                                        hdfs namenode -upgrade


                                        #将namenode回滚到前一版本,这个选项要在停止集群,分发老的hdfs版本之后执行

                                          hdfs namenode -rollback


                                          #finalize 会删除文件系统的前一状态。最近的升级会被持久化,rollback选项将不再可用,升级终结操作之后,它会停掉namenode,分发老的hdfs版本后使用

                                            hdfs namenode -finalize


                                            #从检查点目录装载镜像并保存到当前检查点目录,检查点目录由

                                            fs.checkpoint.dir 指定

                                              hdfs namenode importCheckpoint


                                              4.1.6、hdfs 系统检查


                                                #移动受损文件到/lost+found
                                                hdfs fsck <path> -move


                                                #删除受损文件
                                                hdfs fsck <path> -delete


                                                #打印出写打开的文件
                                                hdfs fsck <path> -openforwrite


                                                #打印出正被检查的文件
                                                hdfs fsck <path> -files


                                                #打印出块信息报告
                                                hdfs fsck <path> -blocks


                                                #打印出每个块的位置信息
                                                hdfs fsck <path> -locations


                                                #打印出datanode的网络拓扑结构
                                                hdfs fsck <path> -racks


                                                4.2、yarn常用命令

                                                4.2.1、yarn基础架构

                                                在集群部署中,yarn的各个组件是和hadoop集群中的其他组件进行同一部署的。

                                                 yarn中的容器(动态资源分配单位)代表了cpu、内存、磁盘、网络等计算资源,

                                                可限定每个应用程序使用的资源量


                                                4.2.2、yarn 组件

                                                ResourceManager

                                                处理客户端请求、启动、监控ApplicationMaster、

                                                监控NodeManager、资源分配与调度

                                                ApplicationMaster

                                                为应用程序申请资源,并分配给内部任务、任务的调度

                                                监控与容错

                                                NodeManager

                                                单个节点上的资源管理、处理ResourceManager的命令、

                                                处理来自ApplicationMaster 的命令


                                                4.2.3、yarn工作流程

                                                在yarn中执行1个MapReduce程序,从提交到完成需要经历8个步骤

                                                       ①用户编写客户端应用程序, 向YARN提交应用程序,提交的内容包括ApplicationMaster程序、启动ApplicationMaster的命令、用户程序等。

                                                  ②YARN 中的ResourceManager负责接收和处理来自客户端的请求。接到客户端应用程序请求后,ResourceManager里面的调度器会为应用程序分配一个容器。同时, ResourceManager的应用程序管理器会与该容器所在NodeManager 通信,为该应用程序在该容器中启动一个ApplicationMaster。

                                                  ③ApplicationMaster 被创建后会首先向ResourceManager 注册,从而使得用户可以通过ResourceManager来直接查看应用程序的运行状态。接下来的步骤4~7是具体的应用程序执行步骤。

                                                  ④ApplicationMaster采用轮询的方式通过RPC协议向ResourceManager申请资源。

                                                  ⑤ResourceManager 以“容器”的形式向提出申请的ApplicationMaster 分配资源,一旦ApplicationMaster申请到资源后,就会与该容器所在的NodeManager 进行通信,要求它启动任务。

                                                  ⑥当ApplicationMaster要求容器启动任务时,它会为任务设置好运行环境(包括环境变量、JAR包、二进制程序等)然后将任务启动命令写到一个脚本中, 最后通过在容器中运行该脚本来启动任务。

                                                  ⑦各个任务通过某个RPC 协议向ApplicationMaster汇报自己的状态和进度,让ApplicationMaster可以随时掌握各 个任务的运行状态,从而可以在任务失败时重新启动任务。

                                                  ⑧应用程序运行完成后,ApplicationMaster向ResourceManager的应用程序管理器注销并关闭自己,若ApplicationMaster因故失败,ResourceManager中的应用程序管理器会监测到失败的情形,然后将其重新启动,直到所有的任务执行完毕。



                                                4.2.4、yarn调度算法

                                                三种调度算法

                                                #1、先进先出 (FIFO Scheduler)

                                                优点:简单易懂

                                                缺点:不支持多队列,生产环境很少使用


                                                #2、容量调度器(capacity scheduler)

                                                Capacity Scheduler是Yahoo开发的多用户调度器。 

                                                特点: 

                                                (1)多队列:每个队列配置一定资源量,每个队列采用FIFO调度策略 

                                                (2)容量保证:管理员可为队列设置资源最低保证和资源使用上限 

                                                (3)灵活性:如果一个队列资源有余,可以暂时共享给那些需要资源的队列,而一旦该队列有新的应用程序提交,则其他队列借调的资源会归还给该队列 

                                                (4)多租户:支持多用户共享集群和多应用程序同时运行。      

                                                为了防止同一个用户的作业独占队列中的资源,**该调度器会对同一用户提交的作业所占资源量进行限定。

                                                1、队列资源分配

                                                从root开始,使用深度优先算法,优先选择“资源占用率最低”的队列分配资源

                                                2、作业资源分配

                                                默认按照提交作业的优先级和提交时间顺序分配资源

                                                3、容器资源分配

                                                按照容器的优先级 分配资源

                                                按照优先级相同,按照数据的本地性原则 :

                                                (1)任务和数据在同一节点

                                                (2)任务和数据在同一机架

                                                (3)任务和数据不在同一节点,也不在同一机架


                                                3、公平调度器(Fair Scheduler)

                                                Fair Scheduler 是 Facebook开发的多用户调度器

                                                同队列所有任务共享资源,在时间尺度上获得公平的资源


                                                与容量调度器相同点:

                                                  (1) 多队列:支持

                                                (2)容量保证:管理员可为队列设置资源最低保证和资源使用上限

                                                (3)灵活性:如果一个队列资源有余,可以暂时共享给那些需要资源的队列,而一旦该队列有新的应用程序提交,则其他队列借调的资源会归还给该队列 

                                                (4)多租户:支持多用户共享集群和多应用程序同时运行。      

                                                为了防止同一个用户的作业独占队列中的资源,**该调度器会对同一用户提交的作业所占资源量进行限定。

                                                与容量调度器不同点:

                                                (1) 核心调度策略不同

                                                容量调度器:优先选择 资源利用率低的队列

                                                公平调度器:优先选择对资源的缺额比较大的

                                                (2)每个队列可以单独设置资源分配方式

                                                容量调度器:FIFO、DRF

                                                公平调度器:FIFO、FAIR、DRF


                                                #分配方式

                                                (1)FIFO策略

                                                公平调度器每个队列资源分配策略如果选择FIFO的话,此时公平调度器相当于上面讲过的容量调度器。

                                                (2)Fair策略

                                                公平的策略(默认)是一种基于最大最小公平算法实现的资源多路复用方式,默认情况下,每个队列内部采用该方式分配资源。这意味着,如果一个队列中有两个应用程序同时运行,则每个应用程序可得到1/2的资源;如果三个应用程序同时运行,则每个应用程序可得到1/3的资源。   

                                                具体资源分配流程和容量调度器一致;(1)选择队列 (2)选择作业 (3)选择容器。此三步,每一步都是按照公平策略分配资源

                                                实际最小资源份额:mindshare = Min(资源需求量,配置的最小资源)   

                                                是否饥饿:isNeedy = 资源使用量 < mindshare(实际最小资源份额)   

                                                资源分配比:minShareRatio = 资源使用量 Max (minshare,1)   资

                                                源使用权重比:useToWeightRatio = 资源使用量 权重



                                                DRF策略  

                                                DRF(Doninant Resouree Fairmess),我们之前说的资源,都是单一标准,例如只考虑内存(也是Yarn默认的情况)。但是很多时候我们资源有很多种,例如内存,CPU,网络带宽等,这样我们很难衡量两个应用应该分配的资源比例。  

                                                DRF调度:假设集群一共有100 CPU和10T内存,而应用A需要(2CPU,300GB),应用B需要(6 CPU,100GB )。则两个应用分别需要A(2%CPU,3%内存)和B(6%CPU,1%内存)的资源,这就意味着A是内存主导的,B是CPU主导的,针对这种情况,我们可以选择DRF策略对不同应用进行不同资源(CPU和内存)的一个不同比例的限制。


                                                4.2.5、yarn常用命令和核心参数

                                                yarn application查看任务

                                                #列出所有的application

                                                  yarn application -list


                                                  #根据application状态过滤

                                                    yarn application -list -appStates XXX(XXX - ALL、NEW、NEW_SAVING、SUBMITTED、ACCEPTED、RUNNING、FINISHED、FAILED、KILLED)


                                                    #杀死程序

                                                      yarn application  -kill application-id


                                                      yarn logs查看日志

                                                      #查询application日志

                                                        yarn logs -applicationId <ApplicationId>


                                                        #查询container 日志

                                                          yarn logs -applicationId <ApplicationId> -containerId <ContainerId>


                                                          yarn applicationattempt查看尝试运行的任务

                                                          #列出所有Application尝试的列表

                                                            yarn applicationattempt -list <ApplicationId>


                                                            #打印ApplicationAttemp状态

                                                              yarn applicationattempt -status <ApplicationAttemptId>


                                                              yarn container查看容器

                                                              #列出所有Container

                                                                yarn container -list <ApplicationAttemptId>


                                                                #打印Container状态

                                                                  yarn container -status <ContainerId>

                                                                  备注:只有在任务跑的途中才能看到container的状态



                                                                  yarn node查看节点状态

                                                                  #列出所有节点

                                                                    yarn node -list -all


                                                                    yarn rmadmin更新配置

                                                                    #加载队列配置

                                                                      yarn rmadmin -refreshQueues


                                                                      yarn queue查看队列

                                                                      #打印队列信息

                                                                        yarn queue -status <QueueName>




                                                                        #yarn核心参数配置

                                                                        1、ResourceManager相关

                                                                        #配置调度器,默认容量

                                                                        yarn.resourcemanager.scheduler.class

                                                                        #ResourceManager处理器请求的线程数量,默认50

                                                                        yarn.resourcemanager.scheduler.clinent.thread-count

                                                                        2、NodeManager相关

                                                                        #是否让yarn自己检测硬件进行配置,默认false

                                                                        yarn.nodemanager.resource.detect-hardware-capabilities

                                                                        #是否将虚拟核数当做cpu核数,默认false

                                                                        yarn.nodemanager.resource.count-logical-processors-as-cores

                                                                        #虚拟核数和物理核数乘数,默认为1.0

                                                                        yarn.nodemanager.resource.pcores-vcores-multiplier

                                                                        #NodeManager使用内存,默认8G

                                                                        yarn.nodemanager.resource.memory-mb

                                                                        #NodeManager 为系统保留多少内存

                                                                        yarn.nodemanager.resource.system-reserved-memory-mb

                                                                        备注:改参数和上个参数有一定的关系

                                                                        #NodeManager 使用cpu核数,默认8个

                                                                        yarn.nodemanager.resource.cpu-vcores

                                                                        #是否开启物理内存检查限制container,默认打开

                                                                        yarn.nodemanager.pmem-check-enabled

                                                                        #是否开启虚拟内存检查限制container,默认打开

                                                                        yarn.nodemanager.vmem-check-enabled

                                                                        #虚拟内存和真实物理内存的比率,默认2.1

                                                                        yarn.nodemanager.vmem-pmem-ratio

                                                                        3、Container相关

                                                                        #容器最小内存,默认1G

                                                                        yarn.scheduler.minimum-allocation-mb
                                                                        #容器最大内存,默认8G

                                                                        yarn.scheduler.maximum-allocation-mb

                                                                        #容器最小CPU核数,默认1个

                                                                        yarn.scheduler.minimum-allocation-vcores

                                                                        #容器最大CPU核数,默认4个

                                                                        yarn.scheduler.maximum-allocation-vcores

                                                                        按照上边的参数进行配置下我们的yarn-site.xml文件

                                                                        #设置参考意见

                                                                        container:内存和cpu的虚拟概念

                                                                        内存cpu资源预留20%给系统

                                                                        一个计算任务至少需要1core 。

                                                                        core越多,计算的并发就越多

                                                                        内存:计算时所需的空间oom-killer机制

                                                                        cpu:决定并发任务

                                                                        cloudera公司经过生产实践,推荐1个container的vcore最好不要超过5,就设置4个


                                                                        4.3、mapreduce常用命令

                                                                        4.3.1、mapreduce相关参数

                                                                        资源相关参数以下参数是在用户自己的 MapReduce 应用程序中配置就可以生效:

                                                                        mapreduce.map.memory.mb:一个MapTask可使用的资源上限(单位:MB),默认为1024。如果MapTask实际使用的资源量超过该值,则会被强制杀死。

                                                                        mapreduce.reduce.memory.mb:一个ReduceTask可使用的资源上限(单位:MB),默认为1024。如果ReduceTask实际使用的资源量超过该值,则会被强制杀死。

                                                                        mapreduce.map.cpu.vcores:每个MapTask可使用的最多cpu core数目,默认值: 1

                                                                        mapreduce.reduce.cpu.vcores:每个ReduceTask可使用的最多cpu core数目,默认值: 1

                                                                        mapreduce.map.java.opts: MapTask的JVM参数,你可以在此配置默认的java heap size等参数, 比如:"-Xmx2048m -verbose:gc -Xloggc:/tmp/@taskid@.gc",默认值是:""

                                                                        mapreduce.reduce.java.opts: ReduceTask的JVM参数,你可以在此配置默认的java heap size等参数

                                                                        以下参数应该在yarn启动之前就配置在服务器的配置文件中才能生效:yarn.scheduler.minimum-allocation-mb=1024 给应用程序container分配的最小内存

                                                                        yarn.scheduler.maximum-allocation-mb=8192 给应用程序container分配的最大内存

                                                                        yarn.scheduler.minimum-allocation-vcores=1 yarn.scheduler.maximum-allocation-vcores=32 yarn.nodemanager.resource.memory-mb=8192 mapreduce.task.io.sort.mb=256 (HDFSv3.0) shuffle的环形缓冲区大小,默认256m mapreduce.map.sort.spill.percent=0.8 环形缓冲区溢出的阈值,默认80% MapReduce程序进行flush操作的阀值,默认0.80。mapreduce.reduce.shuffle.parallelcopies MapReduce程序reducer copy数据的线程数,默认10 (HDFSv3.0)。mapreduce.reduce.shuffle.input.buffer.percent reduce复制map数据的时候指定的内存堆大小百分比,默认为0.70 适当的增加该值可以减少map数据的磁盘溢出,能够提高系统能。mapreduce.reduce.shuffle.merge.percentreduce reduce进行shuffle的时候,用于启动合并输出和磁盘溢写的过程的阀值,默认为0.66。如果允许,适当增大其比例能够减少磁盘溢写次数,提高系统性能。同mapreduce.reduce.shuffle.input.buffer.percent一起使用 mapreduce.task.timeout mr程序的task执行情况汇报过期时间,默认600000(10分钟) 设置为0表示不进行该值的判断。

                                                                        容错相关参数mapreduce.map.maxattempts=4 每个MapTask最大重试次数,一旦重试参数超过该值,则认为MapTask运行失败 mapreduce.reduce.maxattempts=4:每个ReduceTask最大重试次数,一旦重试参数超过该值,则认为MapTask运行失败 mapreduce.task.timeout=600000:Task超时时间,经常需要设置的一个参数,该参数表达的意思为:如果一个task在一定时间内没有任何进入,即不会读取新的数据,也没有输出数据,则认为该task处于block状态,可能是卡住了,也许永远会卡住,为了防止因为用户程序永远block住不退出,则强制设置了一个该超时时间(单位毫秒),老版本默认是300000。如果你的程序对每条输入数据的处理时间过长(比如会访问数据库,通过网络拉取数据等),建议将该参数调大


                                                                        4.3.2、mapreduce常用命令

                                                                          #执行jar包程序
                                                                          hdfs jar file.jar


                                                                          #杀死正在执行的jar包程序
                                                                          hdfs job -kill job_202222xxxx


                                                                          #提交作业
                                                                          hdfs job -submit <job-file>


                                                                          #打印map和reduce完成百分比和所有计数器
                                                                          hdfs job -status <job-id>


                                                                          #打印计数器的值
                                                                          hdfs job -counter <job-id> <group-name> <counter-name>


                                                                          #杀死指定作业
                                                                          hdfs job -kill <job-id>


                                                                          #打印给定范围内jobtracker接收到的事件细节
                                                                          hdfs job -events <job-id> <from-event-#><#-of-events>


                                                                          #打印作业的细节、失败及被杀死原因的细节。
                                                                          更多的关于一个作业的细节比如成功的任务,做过的任务尝试等信息可以通过
                                                                          all选项查看。
                                                                          hdfs job -history [all] <jobOutputDir>
                                                                          hdfs job -history <jobOutputDir>


                                                                          #显示所有的作业。-list 只显示将要完成的作业
                                                                          hdfs job -list [all]


                                                                          #杀死任务,被杀死的任务不会不利于失败尝试
                                                                          hdfs job -kill -task <task-id>


                                                                          #使任务失败。被失败的任务会对失败尝试不利
                                                                          hdfs job -fail -task <task-id>










                                                                          兴趣是最好的老师,唯有热爱不可辜负!

                                                                          Have fun!




                                                                          少侠,请留步,欢迎点赞关注转发




                                                                          文章转载自闵栋,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

                                                                          评论