亚洲成a人片在线观看69,中文字幕免费无线观看,日韩精品无码一区二区三区四区,92精品国产自产在线观看直播,亚洲精品无码不卡在线观看屁,亚洲成av人片在www色猫咪

  • <ol id="r4gqq"><tbody id="r4gqq"></tbody></ol>
    <label id="r4gqq"><font id="r4gqq"></font></label>
    
    
    
    
    

    distributedShell 樣例源碼詳解

    簡(jiǎn)介

    distributedShell是Yarn自帶的應用程序,和MR類(lèi)似,當前工具可以用來(lái)對Yarn進(jìn)行壓測。

    使用示例

    參考命令如下:

    ./bin/hadoop jar ./share/hadoop/yarn/hadoop-yarn-applications-distributedshell-3.4.1.jar \
     -jar ./share/hadoop/yarn/hadoop-yarn-applications-distributedshell-3.4.1.jar  -shell_command \
    '/bin/date' -num_containers 5 
    

    可以提交一個(gè)樣例作業(yè)到Yarn上面。

    源碼閱讀

    當前樣例的入口類(lèi)是org.apache.hadoop.yarn.applications.distributedshell.Client ,在pom文件里面默認定義了當前類(lèi)為主類(lèi)。所以在提交的時(shí)候可以不用指定主類(lèi)。

     <plugin>
            <artifactId>maven-jar-plugin</artifactId>
            <executions>
             <!-- 省略部分參數 -->
            </executions>
            <configuration>
               <archive>
                 <manifest>
                   <mainClass>org.apache.hadoop.yarn.applications.distributedshell.Client</mainClass>
                 </manifest>
               </archive>
            </configuration>
          </plugin>
    

    核心流程主要包含下面3個(gè):

    • 初始化CLient對象
    • 初始化Client
    • 提交作業(yè)到yarn

    其中前面兩個(gè)主要在客戶(hù)端,第3個(gè)主要是在yarn上面。

    客戶(hù)端提交核心代碼

    初始化

    初始化階段包括下面兩部分:

    • 初始化Client對象,主要是創(chuàng )建Yarn的連接以及初始化支持的參數列表
    • 初始化Client

    下面是初始化Client對象的核心代碼。

    Client(String appMasterMainClass, Configuration conf) {
        this.conf = conf;
        this.conf.setBoolean(
            YarnConfiguration.YARN_CLIENT_LOAD_RESOURCETYPES_FROM_SERVER, true);
        this.appMasterMainClass = appMasterMainClass;
        // 創(chuàng  )建和RM的連接
        yarnClient = YarnClient.createYarnClient();
        yarnClient.init(conf);
        opts = new Options();
        // 初始化支持的參數列表
        stopSignalReceived = new AtomicBoolean(false);
        isRunning = new AtomicBoolean(false);
      }
    

    初始化Client,在初始化Client階段主要是讀取命令行參數。

    // 初始化Client函數入口
    boolean doRun = client.init(args);
    

    運行作業(yè)

    首先還是建立和Yarn服務(wù)端的連接,為作業(yè)提交做準備。

     isRunning.set(true);
     yarnClient.start();
    

    在連接建立之后會(huì )查詢(xún)并且在控制臺打印Yarn服務(wù)端的一些信息。主要包含下面內容:

    • 當前集群NM的個(gè)數,通過(guò)yarnClient.getYarnClusterMetrics() 查詢(xún)到并且顯示。
    • 當前集群中運行中NM的詳細信息,通過(guò)yarnClient.getNodeReports(NodeState.RUNNING)查詢(xún)到。
    • 當前任務(wù)提交的隊列的詳細信息,通過(guò)yarnClient.getQueueInfo(this.amQueue)查詢(xún)到。
    • 當前集群的ACL信息,通過(guò)yarnClient.getQueueAclsInfo()查詢(xún)。
    • 當前集群的ResourceProfile信息,通過(guò)yarnClient.getResourceProfiles()查詢(xún)。

    在打印完集群信息之后才是作業(yè)提交的開(kāi)始。

    提交作業(yè)之前,是需要先向RM申請AppId的。AppId可以通過(guò)YarnClientApplication app = yarnClient.createApplication();獲取。作業(yè)提交信息一般都在A(yíng)pplicationSubmissionContext里面,包含下面信息:

    • AM申請資源的請求。通過(guò)appContext.setAMContainerResourceRequests(amResourceRequests);設置。

    • AM的上下文信息:

      • 訪(fǎng)問(wèn)hdfs等所需要的token。當前token會(huì )伴隨著(zhù)整個(gè)作業(yè),直到作業(yè)結束才會(huì )異步銷(xiāo)毀。
      • 需要本地話(huà)的文件。
      • AM或者Container所需要的環(huán)境變量。
      • AM的啟動(dòng)命令,AM啟動(dòng)的類(lèi)也是在這里指定的。類(lèi)似于 java運行jar或者某個(gè)主類(lèi)。
    • App名稱(chēng)。通過(guò)appContext.setApplicationName(appName);設置。

    • app tag信息。

    • 資源標簽信息。

    • 作業(yè)的優(yōu)先級。

    • 作業(yè)提交的隊列信息。

    • 日志聚合相關(guān)配置。主要是和日志歸集的Rolling模式有關(guān)系??梢栽O置需要通過(guò)rolling的方式歸集哪些日志。通過(guò)appContext.setLogAggregationContext(logAggregationContext);設置。

    作業(yè)真正提交的代碼只有一行:

    yarnClient.submitApplication(appContext);
    

    當前樣例做到了作業(yè)所需要的信息可配置。是一個(gè)比較適合開(kāi)發(fā)作業(yè)的樣例。

    AM核心代碼

    AM的核心代碼是在A(yíng)pplicationMaster.java里面的。在啟動(dòng)AM的時(shí)候會(huì )調用到當前函數的main函數。

    在構造函數里面和init函數里面,主要是加載配置項以及命令行參數。真正運行的函數是run,核心在run函數里面,

    首先需要創(chuàng )建和RM以及NM的連接。

    amRMClient = AMRMClientAsync.createAMRMClientAsync(1000, allocListener);
    amRMClient.init(conf);
    amRMClient.start();
    
    containerListener = createNMCallbackHandler();
    nmClientAsync = new NMClientAsyncImpl(containerListener);
    nmClientAsync.init(conf);
    nmClientAsync.start();  
    startTimelineClient(conf);
    

    在A(yíng)M啟動(dòng)OK了第一件事就是需要去RM上面注冊,證明當前AM已經(jīng)啟動(dòng)完成了。

    RegisterApplicationMasterResponse response = amRMClient
            .registerApplicationMaster(appMasterHostname, appMasterRpcPort,
                appMasterTrackingUrl, placementConstraintMap);
    

    普通Container的申請是在A(yíng)M里面處理的,類(lèi)似下面代碼,下面代碼是異步申請的。

    ContainerRequest containerAsk = setupContainerAskForRM();
    amRMClient.addContainerRequest(containerAsk);
    

    當Container申請好之后,可以通過(guò)下面代碼獲取,在樣例中觸發(fā)onContainerAllocated事件。

    List<Container> allocated = response.getAllocatedContainers();
    if (!allocated.isEmpty()) {
        handler.onContainersAllocated(allocated);
    }
    

    通過(guò)下面代碼啟動(dòng)Container.

    ContainerLaunchContext ctx = ContainerLaunchContext.newInstance(
            localResources, myShellEnv, commands, null, allTokens.duplicate(),
              null, containerRetryContext); 
    nmClientAsync.startContainerAsync(container, ctx);
    

    在作業(yè)結束的時(shí)候,AM需要做下面事:

    • 停止nmClient。
    • 從RM上取消AppMaster
    • 停止amClient。
    nmClientAsync.stop();
    try {
        amRMClient.unregisterApplicationMaster(appStatus, message, null);
    } catch (YarnException | IOException ex) {
        LOG.error("Failed to unregister application", ex);
    }
    amRMClient.stop();
    
    # hadoop  Yarn 


    標 題:《distributedShell 樣例源碼詳解
    作 者:zeekling
    提 示:轉載請注明文章轉載自個(gè)人博客:浪浪山旁那個(gè)村

    評論

    取消
    亚洲成a人片在线观看69,中文字幕免费无线观看,日韩精品无码一区二区三区四区,92精品国产自产在线观看直播,亚洲精品无码不卡在线观看屁,亚洲成av人片在www色猫咪 国产免费大片在线观看| 国产精品欧美韩国日本久久| 日韩乱码人妻无码中文字幕久久| 亚洲国产剧情中文视频在线| 国产成人av大片在线播放| 国产精品天天看特色大片| 国产免费人成视频在线播放播| 中文字幕第38页永久乱码| 亚洲高清美av在线播放| 亚洲美女牲交高清淅视频| 久久综合狠狠综合久久综合88| 亚洲高清中文日本小说| 欧美一区二区三区无码大象视频| 在线国产一区二区三区| 亚洲av日韩av无码av| 免费视频片高清无码| 亚洲中文不卡DvD| 日本做受高潮好舒服视频| 亚洲欧美中文字幕在线一区| 亚洲愉拍自拍欧美精品| 久久久夜色精品亚洲av图片香蕉| 亚洲国产精品18久久久久久| 亚洲免费成人在线| 亚洲图区一区二区三区| 无码任你躁久久久久久| 亚州精品天堂成人Av在线播放| 人体44RT大胆高清张悠雨| 亚洲欧美熟妇欲乱又伦| 在线岛国片免费无码aV| 成人免费毛片日韩在线| 99久久免费只有精品国产| 欧美人与人动人物2020| 国产免费aV片无码永久免费| 曰韩精品无码一区二区三区| 亚洲最大黄色网站| 亚洲一区中文字幕制服丝袜人妻| 精品国精品国产自在久国产应用| 亚洲欧美日韩中文字幕在线一| 亚洲中文字幕无码日韩| 一本久道综合成人| 欧美乱妇高清无乱码| http://andaoil.com http://ynhaiyue.com http://yoomaxaudio.com http://yanzitattoo.com http://jianlinyinshua.com http://qudaovip.com