ZooKeeper节点数据量限制引起的Hadoop YARN ResourceManager崩溃原因分析(二)

Yarn的架构组件、运行原理和应用提交过程详解(ResourceManager、NodeManager、ApplicationMaster、Container、JobHistoryServer等) 一、概述: Yarn是一个资源调度平台,负责为运算程序提供服务器运算资源,相当于一个分布式的操作系统平台,而Mapreduce等运算程序则相当于运行于操作系统之上的应用程序。 关于Yarn,有几点需要明白的是: 1)实际上,Yarn并不清楚用户所提交程序的运行机制是什么; 2)Yarn只负责提供运算资源的调度(用户程序向Yarn申请资源,Yarn就负责分配资源); 3)Yarn中的主管角色是ResourceManager,而具体提供运算资源的角色是NodeManager; 4)Yarn框架与运行的用户程序 阅读详情

时隔五个月(点击阅读前文),如标题所示的问题再次发生,本次由于我们大数据监控系统的完善,让我对该问题进行了更深一步的研究。以下是整个排查过程和解决方案:

一、问题说明

从8月8日早上8点12收到第一条ResourceManager服务异常报警,截止到8月11日早上8点,每天早上8点到8点12之间频繁出现ResourceManager服务异常问题,晚上8点和下午1-3点偶尔出现该问题。以下是SpaceX统计出的ResourceManager状态异常次数数据:

二、异常原因

1、异常信息

以下截取的是8月8日20点至20点12之间的日志,其他时间段出现问题时的异常信息与此信息一样:

2019-08-08 20:12:18,681 INFO org.apache.hadoop.yarn.server.resourcemanager.recovery.ZKRMStateStore: Retrying operation on ZK. Retry no. 544
2019-08-08 20:12:18,886 INFO org.apache.zookeeper.ClientCnxn: Opening socket connection to server 10.204.245.44/10.204.245.44:5181. Will not attempt to authenticate using SASL (unknown error)
2019-08-08 20:12:18,887 INFO org.apache.zookeeper.ClientCnxn: Socket connection established to 10.204.245.44/10.204.245.44:5181, initiating session
2019-08-08 20:12:18,887 INFO org.apache.zookeeper.ClientCnxn: Session establishment complete on server 10.204.245.44/10.204.245.44:5181, sessionid = 0x26c00dfd48e9068, negotiated timeout = 60000
2019-08-08 20:12:20,850 WARN org.apache.zookeeper.ClientCnxn: Session 0x26c00dfd48e9068 for server 10.204.245.44/10.204.245.44:5181, unexpected error, closing socket connection and attempting reconnect
java.lang.OutOfMemoryError: Java heap space
2019-08-08 20:12:20,951 INFO org.apache.hadoop.yarn.server.resourcemanager.recovery.ZKRMStateStore: Exception while executing a ZK operation.
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.ZooKeeper.multiInternal(ZooKeeper.java:935)
	at org.apache.zookeeper.ZooKeeper.multi(ZooKeeper.java:915)
	at org.apache.hadoop.yarn.server.resourcemanager.recovery.ZKRMStateStore$5.run(ZKRMStateStore.java:989)
	at org.apache.hadoop.yarn.server.resourcemanager.recovery.ZKRMStateStore$5.run(ZKRMStateStore.java:986)
	at org.apache.hadoop.yarn.server.resourcemanager.recovery.ZKRMStateStore$ZKAction.runWithCheck(ZKRMStateStore.java:1128)
	at org.apache.hadoop.yarn.server.resourcemanager.recovery.ZKRMStateStore$ZKAction.runWithRetries(ZKRMStateStore.java:1161)
	at org.apache.hadoop.yarn.server.resourcemanager.recovery.ZKRMStateStore.doMultiWithRetries(ZKRMStateStore.java:986)
	at org.apache.hadoop.yarn.server.resourcemanager.recovery.ZKRMStateStore.doMultiWithRetries(ZKRMStateStore.java:1000)
	at org.apache.hadoop.yarn.server.resourcemanager.recovery.ZKRMStateStore.setDataWithRetries(ZKRMStateStore.java:1017)
	at org.apache.hadoop.yarn.server.resourcemanager.recovery.ZKRMStateStore.updateApplicationAttemptStateInternal(ZKRMStateStore.java:713)
	at org.apache.hadoop.yarn.server.resourcemanager.recovery.RMStateStore$UpdateAppAttemptTransition.transition(RMStateStore.java:243)
	at org.apache.hadoop.yarn.server.resourcemanager.recovery.RMStateStore$UpdateAppAttemptTransition.transition(RMStateStore.java:226)
	at org.apache.hadoop.yarn.state.StateMachineFactory$SingleInternalArc.doTransition(StateMachineFactory.java:362)
	at org.apache.hadoop.yarn.state.StateMachineFactory.doTransition(StateMachineFactory.java:302)
	at org.apache.hadoop.yarn.state.StateMachineFactory.access$300(StateMachineFactory.java:46)
	at org.apache.hadoop.yarn.state.StateMachineFactory$InternalStateMachine.doTransition(StateMachineFactory.java:448)
	at org.apache.hadoop.yarn.server.resourcemanager.recovery.RMStateStore.handleStoreEvent(RMStateStore.java:812)
	at org.apache.hadoop.yarn.server.resourcemanager.recovery.RMStateStore$ForwardingEventHandler.handle(RMStateStore.java:872)
	at org.apache.hadoop.yarn.server.resourcemanager.recovery.RMStateStore$ForwardingEventHandler.handle(RMStateStore.java:867)
	at org.apache.hadoop.yarn.event.AsyncDispatcher.dispatch(AsyncDispatcher.java:182)
	at org.apache.hadoop.yarn.event.AsyncDispatcher$1.run(AsyncDispatcher.java:109)
	at java.lang.Thread.run(Thread.java:745)

2、异常原因

主要是由于ZK服务端限制单个节点数据量大小不能超过1M导致,客户端提交的数据超过1M后ZK服务端会抛出如下异常:

Exception causing close of session 0x2690d678e98ae8b due to java.io.IOException: Len error 1788046

抛出异常后,YARN会不断地对ZK进行重试操作,重试间隔短,重试次数多,使YARN内存溢出,不能正常提供服务。

3、YARN异常代码

以下是org.apache.hadoop.yarn.server.resourcemanager.recovery.ZKRMStateStore中发生异常的代码的方法:

   /**
     * 更新任务重试信息
     *
     * @param appAttemptId
     * @param attemptStateDataPB
     * @throws Exception
     */
    @Override
    public synchronized void updateApplicationAttemptStateInternal(
            ApplicationAttemptId appAttemptId,
            ApplicationAttemptStateData attemptStateDataPB)
            throws Exception {
        String appIdStr = appAttemptId.getApplicationId().toString();
        String appAttemptIdStr = appAttemptId.toString();
        String appDirPath = getNodePath(rmAppRoot, appIdStr);
        String nodeUpdatePath = getNodePath(appDirPath, appAttemptIdStr);
        if (LOG.isDebugEnabled()) {
            LOG.debug("Storing final state info for attempt: " + appAttemptIdStr
                    + " at: " + nodeUpdatePath);
        }
        byte[] attemptStateData = attemptStateDataPB.getProto().toByteArray();

        if (existsWithRetries(nodeUpdatePath, true) != null) {
            setDataWithRetries(nodeUpdatePath, attemptStateData, -1);
        } else {
            createWithRetries(nodeUpdatePath, attemptStateData, zkAcl,
                    CreateMode.PERSISTENT);
            LOG.debug(appAttemptId + " znode didn't exist. Created a new znode to"
                    + " update the application attempt state.");
        }
    }

这段代码主要是执行更新或添加任务重试状态信息到ZK中的操作,YARN在调度任务过程中,可能会对任务进行多次重试,主要受网络、硬件、资源等因素影响。如果任务重试信息保存ZK失败,会调用org.apache.hadoop.yarn.server.resourcemanager.recovery.ZKRMStateStore.ZKAction.runWithRetries方法重试。默认重试1000次,每次重试间隔受是否启用YARN高可用影响,也就是yarn-site.xml中的yarn.resourcemanager.ha.enabled参数是否为true。该重试间隔官方解释如下:

Retry interval in milliseconds when connecting to ZooKeeper. When HA is enabled, the value here is NOT used. It is generated automatically from yarn.resourcemanager.zk-timeout-ms and yarn.resourcemanager.zk-num-retries.

在是否启用YARN高可用条件下,重试间隔机制如下:

(1)未启用YARN高可用:

受yarn.resourcemanager.zk-retry-interval-ms控制,该参数在BI生产环境使用默认值1000,单位为毫秒。

(2)启用YARN高可用:

受yarn.resourcemanager.zk-timeout-ms(ZK会话超时时间)和yarn.resourcemanager.zk-num-retries(操作失败后重试次数)参数控制,计算公式为:

重试时间间隔(yarn.resourcemanager.zk-retry-interval-ms )=yarn.resourcemanager.zk-timeout-ms(ZK session超时时间)/yarn.resourcemanager.zk-num-retries(重试次数)

重试间隔确定过程在org.apache.hadoop.yarn.server.resourcemanager.recovery.ZKRMStateStore.initInternal方法源码为:

// 计算重试连接ZK的时间间隔,以毫秒表示
if (HAUtil.isHAEnabled(conf)) { // 高可用情况下是:重试时间间隔=session超时时间/重试ZK的次数
    zkRetryInterval = zkSessionTimeout / numRetries;
} else {
    zkRetryInterval =
            conf.getLong(YarnConfiguration.RM_ZK_RETRY_INTERVAL_MS,
                    YarnConfiguration.DEFAULT_RM_ZK_RETRY_INTERVAL_MS);
}

BI生产环境的配置:

  • yarn.resourcemanager.zk-timeout-ms:60000,单位毫秒
  • yarn.resourcemanager.zk-num-retries:使用默认值1000,单位次

因此,BI生产环境的重试间隔为60000/1000=60,在保存任务状态不成功的条件下,会重试1000次,每次间隔60毫秒。很可怕,最终会导致YARN堆内存(10G=4G[新生代]+6G[老年代])溢出。以下是SpaceX监控到的使用以上2个参数执行高频重试操作时JVM的监控数据:

(1)堆内存使用量:

(2)GC次数:

(3)Full GC时间:

三、解决办法

1、调整YARN在ZK中保存的已完成任务数量参数,解决ZK中保存太多已完成任务信息(默认值为10000)使YARN在ZK中注册过多无用的watcher,导致ZK内存紧张,负载加大的问题。主要调整yarn.resourcemanager.state-store.max-completed-applications和yarn.resourcemanager.max-completed-applications参数,以下是调整后的参数值:

<!--ZK保存的已完成任务的最大数量-->
<property>
  <name>yarn.resourcemanager.state-store.max-completed-applications</name>
  <value>2000</value>
</property>

<!--RM内存中保存的已完成任务的最大数量,调整该参数主要是为了RM内存与ZK中保存的任务信息和数量一致-->
<property>
  <name>yarn.resourcemanager.max-completed-applications</name>
  <value>2000</value>
</property>

YARN在ZK中保存的任务状态信息(RM_APP_ROOT)结构如下:

    ROOT_DIR_PATH
      |--- VERSION_INFO
      |--- EPOCH_NODE
      |--- RM_ZK_FENCING_LOCK
      |--- RM_APP_ROOT
      |     |----- (#ApplicationId1)
      |     |        |----- (#ApplicationAttemptIds)
      |     |
      |     |----- (#ApplicationId2)
      |     |       |----- (#ApplicationAttemptIds)
      |     ....
      |
      |--- RM_DT_SECRET_MANAGER_ROOT
      |----- RM_DT_SEQUENTIAL_NUMBER_ZNODE_NAME
      |----- RM_DELEGATION_TOKENS_ROOT_ZNODE_NAME
      |       |----- Token_1
      |       |----- Token_2
      |       ....
      |
      |----- RM_DT_MASTER_KEYS_ROOT_ZNODE_NAME
      |      |----- Key_1
      |      |----- Key_2
      ....
      |--- AMRMTOKEN_SECRET_MANAGER_ROOT
      |----- currentMasterKey
      |----- nextMasterKey

数据结构决定算法实现。从以上结构可以看出,一个任务ID(ApplicationId)会对应多个任务重试信息ID(ApplicationAttemptId),ZKRMStateStore中对这些节点都注册了watcher,因此节点太多会导致watcher数量增加,消耗过多ZK堆内存。BI生产环境YARN每天运行任务7000左右,因此这里将以上两个参数调小为2000,调整不会对运行时的任务状态信息产生影响。具体原因如下:

(1)从org.apache.hadoop.yarn.server.resourcemanager.RMAppManager类中与成员变量completedAppsInStateStore和completedApps相关的操作可以看出,以上两个配置保存的是已完成任务的信息。相关代码如下:

protected int completedAppsInStateStore = 0; //记录已完成任务的信息,任务完成自动加1
private LinkedList<ApplicationId> completedApps = new LinkedList<ApplicationId>();// 记录已完成任务的任务ID,任务完成执行remove

 /**
   * 保存已完成任务信息
   * @param applicationId
   */
  protected synchronized void finishApplication(ApplicationId applicationId) {
    if (applicationId == null) {
      LOG.error("RMAppManager received completed appId of null, skipping");
    } else {
      // Inform the DelegationTokenRenewer
      if (UserGroupInformation.isSecurityEnabled()) {
        rmContext.getDelegationTokenRenewer().applicationFinished(applicationId);
      }
      
      completedApps.add(applicationId);
      completedAppsInStateStore++;
      writeAuditLog(applicationId);
    }
  }

  /*
   * check to see if hit the limit for max # completed apps kept
   *
   * 检查存储在内存和ZK中已完成应用的数量是否超过最大限制,超过限制就执行移除已完成任务信息操作
   */
  protected synchronized void checkAppNumCompletedLimit() {
    // check apps kept in state store.
    while (completedAppsInStateStore > this.maxCompletedAppsInStateStore) {
      ApplicationId removeId =
          completedApps.get(completedApps.size() - completedAppsInStateStore);
      RMApp removeApp = rmContext.getRMApps().get(removeId);
      LOG.info("Max number of completed apps kept in state store met:"
          + " maxCompletedAppsInStateStore = " + maxCompletedAppsInStateStore
          + ", removing app " + removeApp.getApplicationId()
          + " from state store.");
      rmContext.getStateStore().removeApplication(removeApp);
      completedAppsInStateStore--;
    }

    // check apps kept in memorty.
    while (completedApps.size() > this.maxCompletedAppsInMemory) {
      ApplicationId removeId = completedApps.remove();
      LOG.info("Application should be expired, max number of completed apps"
          + " kept in memory met: maxCompletedAppsInMemory = "
          + this.maxCompletedAppsInMemory + ", removing app " + removeId
          + " from memory: ");
      rmContext.getRMApps().remove(removeId);
      this.applicationACLsManager.removeApplication(removeId);
    }
  }

(2)修改前,YARN在ZK中保存的最大已完成任务信息数量使用默认值10000,在zkdoctor中查看/bi-rmstore-20190811-1/ZKRMStateRoot/RMAppRoot子节点个数为10000+。调小后,在zkdoctor中查看/bi-rmstore-20190811-1/ZKRMStateRoot/RMAppRoot子节点个数为2015,YARN监控页面的实时数据显示当时运行15个任务,那么也就是说,YARN在该节点下保存的是运行中的任务和已完成任务的状态信息。zkdoctor监控数据如下:

由此可以总结出,YARN保存和移除任务状态的机制:

  • 有新任务时,YARN使用ZKRMStateStore的storeApplicationStateInternal方法保存新任务的状态

  • 当超过yarn.resourcemanager.state-store.max-completed-applications参数限制时,YARN使用RMStateStore的removeApplication方法删除已完成任务的状态

RMStateStore是ZKRMStateStore的父类,以上两个方法都加了synchronized同步关键字,两种操作相互独立,互不干扰,因此不会对YARN中运行的任务产生影响。

2、解决重试间隔太短,导致YARN堆内存紧张、GC频繁问题:

<!--默认1000,这里设置成100是为了控制重试连接ZK的频率,高可用情况下,重试频率(yarn.resourcemanager.zk-retry-interval-ms )=yarn.resourcemanager.zk-timeout-ms(ZK session超时时间)/yarn.resourcemanager.zk-num-retries(重试次数)-->
<property>
  <name>yarn.resourcemanager.zk-num-retries</name>
  <value>100</value>
</property>

调整后,BI生产环境YARN连接ZK的重试间隔是:60000/100=600毫秒。SpaceX监控到发生问题时的JVM数据如下:

(1)堆内存使用量:

(2)GC次数:

(3)Full GC时间:

从监控数据可以看出,发生问题时,由于调大了重试间隔,JVM堆内存使用、GC次数以及时间消耗情况有所好转。

3、解决任务重试状态数据超过1M的问题:

修改YARN相关的逻辑会影响YARN任务恢复机制,因此只能修改ZK的服务端的配置和客户端的配置来解决此问题,修改方式如下:

(1)ZK服务端jute.maxbuffer参数大小调大至3M

(2)修改yarn-env.sh,在YARN_OPTS和YARN_RESOURCEMANAGER_OPTS配置-Djute.maxbuffer=3145728参数,该配置表示ZK客户端提交给ZK服务端的数据量最大为3M。修改后的配置如下:

YARN_OPTS="$YARN_OPTS -Dyarn.policy.file=$YARN_POLICYFILE -Djute.maxbuffer=3145728"

YARN_RESOURCEMANAGER_OPTS="-server -Xms10240m -Xmx10240m -Xmn4048m -Xss512k -verbose:gc -Xloggc:$YARN_LOG_DIR/gc_resourcemanager.log-`date +'%Y%m%d%H%M'` -XX:+PrintGCDateStamps -XX:+PrintGCDetails -XX:SurvivorRatio=8 -XX:+UseParNewGC -XX:+UseConcMarkSweepGC -XX:CMSInitiatingOccupancyFraction=75 -XX:+UseCMSCompactAtFullCollection 
-XX:CMSFullGCsBeforeCompaction=0 -XX:+CMSClassUnloadingEnabled -XX:+CMSParallelRemarkEnabled -XX:+UseCMSInitiatingOccupancyOnly -XX:+DisableExplicitGC -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=$YARN_LOG_DIR -Djute.maxbuffer=3145728 $YARN_RESOURCEMANAGER_OPTS"

修改完成后,重启ResourceManager服务和ZK服务,使配置生效。

四、总结

1、Hadoop的日志机制很完善,整个日志信息就是一个完整的事件流,因此遇到问题,一定要仔细阅读Hadoop的日志信息,从中找到蛛丝马迹。

2、现在YARN使用的这套ZK集群,有HBase和其他服务也在使用,随着集群规模的扩大和数据量的增长,会对ZK产生一定的性能影响,因此建议给YARN单独搭建一套ZK使用,不要和会对ZK产生高负载的应用共用一套ZK集群。

3、调整ZK的节点数据量最大为3M,会对ZK产生一定的性能影响,比如集群同步、请求处理,因此一定要完善ZK这种基础服务的监控,保障高可用。

五、参考资料

yarn ResourceManager Active频繁易主问题排查

YARN源码分析(三)-----ResourceManager HA之应用状态存储与恢复

YARN官方issue:

(1)关于优化保存ZK中的节点数据结构的issue:Limit application resource reservation on nodes for non-node/rack specific requests

(2)ZKRMStateStore更新数据超过1MB引发ResourceManager异常的issue: ResourceManager failed when ZKRMStateStore tries to update znode data larger than 1MB

解决Yarn中任务信息存储过多导致任务失败的问题 问题现象 Hadoop集群的任务提交不上去,一直失败 集群资源未出现资源不足的情况 查看日志 RM出现zk相关报错 active的ResourceManager的日志报往zk存储任务状态的时候失败,等待调度器丢弃相关事件 2021-08-26 14:53:13 ERROR org.apache.hadoop.yarn.server.resourcemanager.recovery.RMStateStore:857 - State store operation failed java.io.IOExc 阅读详情

相关推荐

yarn中container、mr内存的配置,控制container个数

  最近项目在用kylin,在搭建开发环境和测试环境后,然后在kylin上建cube,kylin建cube的实际就是调用集群的MR跑任务(也可以调用spark作为引擎),在数据量小或者维度(kylin里面的一个概念)少的时候没问题,后来数据量大或维度多了,就经常出现OOM的问题。   其实一开始就知道是并行度过高的问题,也尝试过在kylin里面调试,但并没有用。后来通过jps查看yarnchil...

梦,不可及,所以可期待... 1万+

Yarn资源调度系统

1.hadoop集群是将多台机器联合起来,成为一个大的集群服务器2.每台机器的硬盘,提供出来组成hdfs分布式文件系统3.每台机器的CPU和MEM内存由yarn管理调度按顺序执行,FirstIn FirstOut如果有个大任务执行,小任务在后面,会先执行完大任务才会执行小任务在FIFO调度器中,小任务可能被大任务阻塞。

qq_36461480的博客 708

YARN不是调度器:揭秘Hadoop分布式操作系统内核架构

YARN是Hadoop生态中首个将计算资源抽象为可编程操作系统内核的基础设施,其核心在于资源抽象、进程隔离与生命周期自治。它通过ResourceManager、ApplicationMaster和NodeManager构成的双层调度模型,实现全局资源仲裁与应用级智能调度的解耦。技术价值体现在多租户隔离、跨框架资源复用及生产级容错能力,广泛应用于Spark、Flink等大数据引擎的资源底座。深入理解YARN的CGroups内存控制、Timeline Server事件总线与RM HA状态恢复机制,是构建高可用P

congbao6525的博客 391

ZooKeeper节点数据量限制引起的Hadoop YARN ResourceManager崩溃原因分析

面试:你懂什么是分布式系统吗?Redis分布式锁都不会?>>> 环境 Hadoop版本:Apache Hadoop 2.6.3 ZooKeeper版本:ZooKeeper 3.4.10 两个ResourceManager节点:主节点RM01,从节点RM02 背景 最近有一次我们的Hadoop监控平台发出ResourceManager(以下简称RM)崩溃的报警信息,...

Viking的博客 2510

YARN架构深度解析:RM/NM/AM三层设计与Container资源隔离原理

YARN是Hadoop生态中实现多计算框架(如Spark、Flink、MapReduce)共享集群资源的核心调度框架,其本质是一套基于资源契约的分布式协调系统。它通过ResourceManager、NodeManager和ApplicationMaster的职责分离,解耦资源管理与任务调度,支撑高并发、多租户、可伸缩的生产级数据平台。关键技术价值在于以cgroups为底座的Container资源隔离机制,确保内存、CPU等硬性配额不被突破,从而避免作业间相互干扰。典型应用场景包括企业数据中台统一资源池建设、

weixin_34167819的博客 1512

YARN不是调度器,而是分布式操作系统内核

YARN是Hadoop生态中首个将计算资源抽象为可编程内核的分布式系统,其本质超越传统资源调度器,提供进程隔离、内存管控、故障自愈等操作系统级能力。它基于双层调度模型解耦全局资源仲裁(ResourceManager)与应用自治逻辑(ApplicationMaster),通过CGroups、Timeline Server、ZKRMStateStore等机制实现多租户安全与可观测性。在PB级数据平台实践中,YARN的配置偏差、内核参数冲突、版本契约断裂常导致Container OOM、AM注册失败、Timeli

weixin_30861797的博客 433

ZooKeeper节点数据量限制引起的Hadoop YARN ResourceManager崩溃原因分析(三)

阿里云协同办公工具Teambition 0元试用>>> ...

Viking的博客 1466

Hadoop生态全景解析:从HDFS/YARN到Spark/Flink的工程本质

分布式数据处理是现代大数据平台的核心能力,其底层依赖于可靠的分布式存储与智能资源调度。HDFS通过多副本与心跳机制实现统计级高可用,YARN解耦计算与存储资源,为Spark、Flink等引擎提供统一调度基础。MapReduce定义了‘移动计算而非数据’的范式,Spark以内存计算优化迭代任务,Flink则通过事件时间与状态管理实现真正流批一体。HBase弥补HDFS随机读写短板,Kafka承担高吞吐数据管道角色,Hive作为SQL翻译层降低使用门槛。这些组件并非孤立工具,而是围绕数据生命周期协同演进的有机系

weixin_33912453的博客 388

【Hadoop】resourcemanager.recovery.RMStateStore: State store operation failed

一、背景 今天又碰见了一个很鬼的问题,yarn的ui上nodemanager都是active,而且资源也完全充足,但是我提交任务的时候就卡主了!而且是什么类型的任务都提交不了,相当于yarn的服务直接不可用,关键是什么参数都没有修改,也没有重启yarn服务,突然他就不行了 二、查问题 所以我第一反应是查看resourcemanager的日志(记得要查看active的那台) 结果我看到了 ERROR org.apache.hadoop.yarn.server.resourcemanager.r.

lsr40的博客 1489

Cloudera CDP实战指南:HDFS可靠性、YARN调优与混合治理

Cloudera Data Platform(CDP)已超越传统Hadoop发行版,演进为面向企业数据治理的操作系统。其核心在于统一元数据管理、动态安全策略与存储计算解耦架构,支撑金融、制造等关键行业对高可用、强合规与弹性扩展的刚性需求。HDFS底层可靠性设计决定集群容灾能力,YARN资源调度真实瓶颈直接影响Spark作业稳定性;而CDP Public Cloud与Private Cloud的混合治理逻辑,则解决了多云/本地数据协同、租户隔离与联邦查询等现实挑战。本文聚焦生产级CDP部署、HDFS脑裂防控、

weixin_34294649的博客 320

HiveServer2配置与Beeline连接实战:从单机到企业级数据服务

在大数据生态中,数据仓库服务化是支撑多用户并发访问和系统集成的关键架构演进。其核心原理在于通过常驻的、多线程的服务进程,对外提供标准化的JDBC/ODBC接口,将计算引擎与客户端解耦。这一架构的技术价值在于实现了统一的会话管理、资源调度和安全认证,使得数据分析平台能够高效、安全地服务众多分析师和业务系统。典型的应用场景包括企业级BI报表、数据应用集成以及调度任务执行。本文聚焦于HiveServer2这一具体实现,深入解析其核心配置参数,如`hive.server2.thrift.bind.host`和`hi

weixin_33672400的博客 484

Hadoop工程师校招笔试核心考点:从HDFS到MapReduce的实战剖析

在大数据技术体系中,Hadoop生态始终是分布式存储与计算的基础底座。无论你是备战校招的应届生,还是刚入门的数据开发者,理解HDFS的副本机制与NameNode元数据管理、掌握MapReduce作业的执行生命周期与Shuffle原理,都是构建扎实技术功底的关键。进一步地,YARN资源调度、Zookeeper高可用协调、Hive与Spark的联动应用,则构成了生产环境下的完整技术链路。本文结合爱奇艺Hadoop工程师笔试真题,从存储、计算、调度、协同等层面拆解高频考点,并融入数据倾斜、小文件、集群调优等真实场

weixin_34211761的博客 483

招聘数据分析全流程:Hadoop+爬虫+SpringBoot实现

大数据分析正在成为企业决策和人才市场洞察的核心能力,而数据采集、分布式存储与离线计算则是构建数据价值链条的基础。爬虫技术用于高效获取海量半结构化数据,Hadoop生态提供高容错的分布式存储与并行计算能力,通过MapReduce完成数据清洗、去重和特征提取,再结合SpringBoot构建Web服务,将分析结果以可视化方式呈现。这类技术组合广泛应用于招聘信息挖掘、行业薪资分析、技能需求图谱构建等场景,尤其适合需要处理多源异构数据的工程实践。本文基于招聘网站真实数据,完整拆解从爬虫采集、HDFS存储、MapRed

weixin_34006965的博客 375

Hadoop生态实战指南:从底层原理到电商全链路搭建

Hadoop生态并非孤立工具集合,而是围绕海量非结构化数据在廉价硬件上实现可靠存储、高效计算与实时服务的一整套工业级数据基础设施。其核心在于HDFS的分布式容错存储、YARN的统一资源调度、MapReduce奠定的批处理范式,以及Spark、Flink等引擎对延迟与一致性的分层优化。技术价值体现在解耦架构带来的资源复用性、跨组件协同形成的端到端数据闭环,以及面向业务场景(如实时风控、用户画像、OLAP分析)的精准能力匹配。本文以电商用户行为分析为典型场景,贯通Kafka接入、Flink实时处理、Hive数仓

weixin_33991418的博客 394

【理论&实战篇】大模型RAG技术详解(一)-基础篇

RAG的初衷是为了增强大模型的事实性、时效性,减少幻觉,引入专业知识优化生成回复,是一种结合了信息检索技术与语言生成模型的人工智能技术。通过,并将其作为提示(Prompt)输入给大模型(LLM),来。

qq_41375680的博客 374

七、永磁同步电机矢量控制(FOC)—MTPA控制及Simulink仿真

前面几节的内容已经完成Id=0控制策略的理论和仿真以及双闭环PI参数整定。在接下来几节中,将陆续讲解MTPA、弱磁控制等内容。

weixin_45182459的博客 8188

Zookeeper面试八股文:从数据模型到ZAB协议,一文通关

在分布式系统设计中,一致性协调是绕不开的基础问题。ZooKeeper作为经典的分布式协调组件,通过树形数据模型和会话机制提供可靠的状态管理,而ZAB协议则保证了集群写操作的顺序性与多数派确认,从根本上解决了Leader选举和崩溃恢复的一致性难题。Watcher机制让客户端能够实时感知节点变化,以通知替代轮询,支撑起分布式锁、配置中心、服务注册发现等典型场景。理解这些底层原理,不仅能应对生产环境中的集群部署与故障排查,也能帮助工程师在Hadoop HA、Kafka Controller等生态整合中游刃有余。本

weixin_34306593的博客 316

[工具使用]黑暗引擎FOFA

黑暗引擎FOFAFOFA(点我进入)逻辑运算符搜索子域名domain搜索指定内容的host全部域名bodycert搜索选定应用的网站搜索指定开放端口的IP搜索指定协议的IP搜索IP或者网段的信息搜索指定CSS/JS网站常用的一些内容其他 FOFA(点我进入) 官网这样描述:FOFA是白帽汇推出的一款网络空间资产搜索引擎。它能够帮助用户迅速进行网络资产匹配、加快后续工作进程。例如进行漏洞影响范围分析、应用分布统计、应用流行度排名统计等。 简单理解就是,一个本土加强版shodan,知道某产品在互联网的部署情况、

网络安全知识分享 3万+
上一篇: Apache Sentry实战之旅(二)—— Sentry客户端使用
下一篇: YARN任务监控界面Aggregate Resource Allocation指标解析
Viking_bird
博客等级 码龄11年 92粉丝 183原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值