데이터 베이스 MySQL 튜토리얼 Hadoop 新特性、改进、优化和Bug分析系列1:YARN-378

Hadoop 新特性、改进、优化和Bug分析系列1:YARN-378

Jun 07, 2016 pm 04:30 PM
bug hadoop 최적화 분석하다 개선하다 새로운 특성 특성 시리즈

作者: Dong | 新浪微博: 西成懂 | 可以转载, 但必须以超链接形式标明文章原始出处和作者信息及版权声明 网址:http://dongxicheng.org/mapreduce-nextgen/hadoop-jira-yarn-378/ 本博客的文章集合:http://dongxicheng.org/recommend/ 重大消息:我的Hadoop新


重大消息:我的Hadoop新书《Hadoop技术内幕:深入解析MapReduce架构设计与实现原理》已经开始在各大网站销售了,购书链接地址: 当当购书网址,京东购书网址,卓越购书网址。新书官方宣传主页: http://hadoop123.com/。

Hadoop jira链接:https://issues.apache.org/jira/browse/YARN-378
所属范围(新特性、改进、优化或Bug):改进
修复版本:2.1.0-beta及以上版本
所属分支(Common、HDFS、YARN或MapReduce):YARN
涉及模块:client, resourcemanager
英文标题:“ApplicationMaster retry times should be set by Client”

1. ?背景介绍

在Hadoop分支YARN中,当用户提交应用程序后(提交到ResourceManager上),ResourceManager首先要做的是为该应用程序申请资源以启动它的ApplicationMaster,而ApplicationMaster启动后,它(ApplicationMaster)负责应用程序内部任务的分解,监控、容错等。对于每个应用程序,由于只有一个ApplicationMaster,因此ApplicationMaster存在单点故障问题,一旦ApplicationMaster死掉,则整个应用程序可能会运行失败。当ResourceManager探测到ApplicationMaster运行失败(通过心跳超时机制)后,它会尝试在另外一个节点上重新启动该ApplicationMaster,通常而言,ApplicationMaster重启后,会恢复之前的运行状态(前提是ApplicationMaster上次死掉之前会记录一些日志在HDFS上),当然,这是ApplicationMaster自己的事情,ResourceManager无权干涉,ResourceManager要做的只是发现ApplicationMaster死亡后,重新为它申请资源在另外一个节点上启动。而本文介绍的这个特性则是如何指定每个应用程序ApplicationMaster的重试次数。

在2.1.0-beta版本之前,所有应用程序的ApplicationMaster重试次数是均是由ResourceManager决定的,管理员可通过配置参数yarn.resourcemanager.am.max-retries配置每个ApplicationMaster的重试次数,这个配置参数值适用于所有的应用程序,不可单独对单个应用程序定制化,而这个改进正是为了解决这个问题。

2. 解决思路

首先需要明确的是,这个改进的目的是,让用户可以为自己的应用程序定制ApplicationMaster的重试次数。

其次,这个重试次数将被两个组件用到,分别是ResourceManager和ApplicationMaster,其中ResourceManager用于决定,是否对失败的ApplicationMaster进行重试;ApplicationMaster用于决定,是否需要恢复上次运行时的状态(从第二次开始恢复),以从断点开始计算。

通常而言,有点经验的人,可能认为可以这样解决问题:将用户设置的值放到Configuration中,通过job.xml传递到ResourceManager和ApplicationMaster上,这样改动是最小的。但是很遗憾,客户端传递的job.xml只有ApplicationMaster会读取,而ResourceManager不会。

YARN 2.1.0-beta版本的解决方案如下:

(1) 客户端设置重试次数后,该值将被写入ProtocolBuffer对象ApplicationSubmissionContextProto中的新增字段maxAppAttempts中(在hadoop-yarn-project/hadoop-yarn/hadoop-yarn-api/src/main/proto/yarn_protos.proto中定义);

(2) 客户端提交应用程序后,maxAppAttempts值会通过RPC函数传递给ResourceManager;

(3)ResourceManager判断maxAppAttempts是否为0,如果为0,则改为ResourceManager内部已经设置好全局值,由属性arn.resourcemanager.am.max-attempts指定,默认为1;

(4)ResourceManager为ApplicationMaster申请资源后,与对应的节点通信启动ApplicationMaster,启动之前,会将maxAppAttempts值通过环境变量“MAX_APP_ATTEMPTS”传递给它

(5) ApplicationMaster在main函数中读取环境变量MAX_APP_ATTEMPTS,然后开始执行。

这样,各个应用程序可根据实际需要单独向用户提供可配置AM尝试次数的参数,比如MapReduce的参数是mapreduce.am.max-attempts,用户设置了该参数后,参数值会经过以上5个步骤进行传递。

3. ?我们学到了什么

(1)善用环境变量传递信息,环境变量可由父进程传递给子进程;

(2)在YARN中,代码改动通常是链式的,也就是说,需要依次改动几个组件,比如该例子中,需要一次改动client、ResourceManager和ApplicationMaster的代码,改动代码之前,要规划好修改方案和估算好代码的改动幅度;

(3)当需要添加一种新的ApplicationMaster相关的可配置参数时,可仿照这个jira实现完成,比如,假设让ApplicationMaster支持多种容错机制(现在不支持),其中一种是ApplicationMaster死掉后,尽量尝试在原节点重启(通常,ApplicationMaster中运行的是服务时,需要这么做),而这样改动之后,需要用户指定应用程序采用的容错机制类别。

原创文章,转载请注明: 转载自董的博客

本文链接地址: http://dongxicheng.org/mapreduce-nextgen/hadoop-jira-yarn-378/

作者:Dong,作者介绍:http://dongxicheng.org/about/

本博客的文章集合:http://dongxicheng.org/recommend/


Copyright © 2013
This feed is for personal, non-commercial use only.
The use of this feed on other websites breaches copyright. If this content is not in your news reader, it makes the page you are viewing an infringement of the copyright. (Digital Fingerprint:
)
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

AI Hentai Generator

AI Hentai Generator

AI Hentai를 무료로 생성하십시오.

뜨거운 도구

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전

SublimeText3 중국어 버전

중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

신 수준의 코드 편집 소프트웨어(SublimeText3)

Xiaomi 15 시리즈 전체 코드명 공개: Dada, Haotian, Xuanyuan Xiaomi 15 시리즈 전체 코드명 공개: Dada, Haotian, Xuanyuan Aug 22, 2024 pm 06:47 PM

샤오미 Mi 15 시리즈는 10월 정식 출시될 예정이며, 전체 시리즈 코드명이 외신 MiCode 코드베이스에 노출됐다. 그중 주력 제품인 샤오미 미 15 울트라의 코드명은 '쉬안위안(Xuanyuan)'('쉬안위안(Xuanyuan)'이라는 뜻)이다. 이 이름은 중국 신화 속 황제(Yellow Emperor)에서 유래한 것으로 귀족을 상징한다. Xiaomi 15의 코드명은 "Dada"이고, Xiaomi 15Pro의 이름은 "Haotian"("Haotian"을 의미)입니다. Xiaomi Mi 15S Pro의 내부 코드명은 "dijun"으로, "산과 바다의 고전"의 창조신인 Jun 황제를 암시합니다. Xiaomi 15Ultra 시리즈 커버

Apple iOS18 버그 요약 Apple iOS18 버그 요약 Jun 14, 2024 pm 01:48 PM

Apple의 WWDC 컨퍼런스 2024가 성공적으로 마무리되면서 macos15가 발표되었을 뿐만 아니라 Apple의 새로운 iOS18 시스템 업데이트가 가장 큰 관심을 끌었습니다. Apple iOS18을 업그레이드하려면 최신 버전의 Apple iOS18에 어떤 종류의 버그가 있습니까? 실제 사용 평가를 마친 후 Apple iOS 18 버그를 요약하면 다음과 같습니다. 현재 많은 아이폰 사용자들이 iOS18로의 업그레이드를 서두르고 있지만, 각종 시스템 버그들이 사람들을 불편하게 만들고 있다. 일부 블로거는 "버그가 너무 많기 때문에" iOS18로 업그레이드할 때 주의해야 한다고 말했습니다. 블로거는 귀하의 iPhone이

화웨이 메이트 60 시리즈 구매 최적기, 새로운 AI 제거 + 이미지 업그레이드, 가을 프로모션 즐기기 화웨이 메이트 60 시리즈 구매 최적기, 새로운 AI 제거 + 이미지 업그레이드, 가을 프로모션 즐기기 Aug 29, 2024 pm 03:33 PM

지난해 화웨이 메이트60 시리즈가 출시된 이후 개인적으로는 메이트60프로를 메인폰으로 사용해오고 있다. 거의 1년 동안 Huawei Mate60Pro는 여러 번의 OTA 업그레이드를 거쳤으며 전반적인 경험이 크게 개선되어 사람들에게 끊임없이 새로운 느낌을 줍니다. 예를 들어, 최근 Huawei Mate60 시리즈는 이미징 기능이 다시 한 번 크게 업그레이드되었습니다. 첫 번째는 행인과 잔해를 지능적으로 제거하고 빈 영역을 자동으로 채울 수 있는 새로운 AI 제거 기능입니다. 두 번째로 메인 카메라의 색상 정확도와 망원 선명도가 크게 업그레이드되었습니다. 개학 시즌을 고려하여 Huawei Mate60 시리즈도 가을 프로모션을 시작했습니다. 휴대폰 구매 시 최대 800위안 할인 혜택을 누릴 수 있으며, 시작 가격은 최저 4,999위안입니다. 일반적으로 사용되며 종종 가치가 높은 새로운 제품

C++ 프로그램 최적화: 시간 복잡도 감소 기술 C++ 프로그램 최적화: 시간 복잡도 감소 기술 Jun 01, 2024 am 11:19 AM

시간 복잡도는 입력 크기를 기준으로 알고리즘의 실행 시간을 측정합니다. C++ 프로그램의 시간 복잡성을 줄이는 팁에는 데이터 저장 및 관리를 최적화하기 위한 적절한 컨테이너(예: 벡터, 목록) 선택이 포함됩니다. Quick Sort와 같은 효율적인 알고리즘을 활용하여 계산 시간을 단축합니다. 여러 작업을 제거하여 이중 계산을 줄입니다. 불필요한 계산을 피하려면 조건부 분기를 사용하세요. 이진 검색과 같은 더 빠른 알고리즘을 사용하여 선형 검색을 최적화합니다.

Golang에 클래스와 유사한 객체지향 기능이 있나요? Golang에 클래스와 유사한 객체지향 기능이 있나요? Mar 19, 2024 pm 02:51 PM

Golang(Go 언어)에는 전통적인 의미의 클래스 개념이 없지만, 클래스와 유사한 객체지향 기능을 구현할 수 있는 구조체라는 데이터 형식을 제공합니다. 이 기사에서는 구조를 사용하여 객체 지향 기능을 구현하는 방법을 설명하고 특정 코드 예제를 제공합니다. 구조의 정의와 사용법 먼저 구조의 정의와 사용법을 살펴보자. Golang에서는 type 키워드를 통해 구조를 정의한 다음 필요한 곳에 사용할 수 있습니다. 구조에는 속성이 포함될 수 있습니다.

WIN7 시스템의 시작 항목을 최적화하는 방법 WIN7 시스템의 시작 항목을 최적화하는 방법 Mar 26, 2024 pm 06:20 PM

1. 바탕화면에서 키조합(Win키 + R)을 눌러 실행창을 연 후, [regedit]를 입력하고 Enter를 눌러 확인하세요. 2. 레지스트리 편집기를 연 후 [HKEY_CURRENT_USERSoftwareMicrosoftWindowsCurrentVersionExplorer]를 클릭하여 확장한 다음 디렉터리에 Serialize 항목이 있는지 확인합니다. 없으면 탐색기를 마우스 오른쪽 버튼으로 클릭하고 새 항목을 생성한 다음 이름을 Serialize로 지정합니다. 3. 그런 다음 직렬화를 클릭한 다음 오른쪽 창의 빈 공간을 마우스 오른쪽 버튼으로 클릭하고 새 DWORD(32) 비트 값을 만들고 이름을 Star로 지정합니다.

Vivox100s 매개변수 구성 공개: 프로세서 성능을 최적화하는 방법은 무엇입니까? Vivox100s 매개변수 구성 공개: 프로세서 성능을 최적화하는 방법은 무엇입니까? Mar 24, 2024 am 10:27 AM

Vivox100s 매개변수 구성 공개: 프로세서 성능을 최적화하는 방법은 무엇입니까? 오늘날 급속한 기술 발전 시대에 스마트폰은 우리 일상생활에서 없어서는 안 될 부분이 되었습니다. 스마트폰의 중요한 부분인 프로세서의 성능 최적화는 휴대폰의 사용자 경험과 직접적인 관련이 있습니다. 주목받는 스마트폰인 Vivox100s의 매개변수 구성은 많은 관심을 끌었으며, 특히 프로세서 성능의 최적화는 사용자들의 많은 관심을 끌었습니다. 휴대폰의 "두뇌"인 프로세서는 휴대폰의 실행 속도에 직접적인 영향을 미칩니다.

PHP 기능의 비효율성을 해결하는 방법은 무엇입니까? PHP 기능의 비효율성을 해결하는 방법은 무엇입니까? May 02, 2024 pm 01:48 PM

PHP 기능 효율성을 최적화하는 5가지 방법: 불필요한 변수 복사를 방지합니다. 변수 복사를 방지하려면 참조를 사용하세요. 반복되는 함수 호출을 피하세요. 인라인 단순 함수. 배열을 사용하여 루프 최적화.

See all articles