欧美一区二区三区老妇人-欧美做爰猛烈大尺度电-99久久夜色精品国产亚洲a-亚洲福利视频一区二区

如何編寫(xiě)YARN應(yīng)用程序

本篇內(nèi)容介紹了“如何編寫(xiě)YARN應(yīng)用程序”的有關(guān)知識(shí),在實(shí)際案例的操作過(guò)程中,不少人都會(huì)遇到這樣的困境,接下來(lái)就讓小編帶領(lǐng)大家學(xué)習(xí)一下如何處理這些情況吧!希望大家仔細(xì)閱讀,能夠?qū)W有所成!

目前創(chuàng)新互聯(lián)已為超過(guò)千家的企業(yè)提供了網(wǎng)站建設(shè)、域名、虛擬主機(jī)、網(wǎng)站托管維護(hù)、企業(yè)網(wǎng)站設(shè)計(jì)、桓仁網(wǎng)站維護(hù)等服務(wù),公司將堅(jiān)持客戶導(dǎo)向、應(yīng)用為本的策略,正道將秉承"和諧、參與、激情"的文化,與客戶和合作伙伴齊心協(xié)力一起成長(zhǎng),共同發(fā)展。

1. 概要

Drill是Apache旗下的一個(gè)開(kāi)源SQL查詢引擎,可用于探索大數(shù)據(jù)。它的設(shè)計(jì)初衷是為了支持對(duì)大數(shù)據(jù)的高性能分析,同時(shí)支持行業(yè)標(biāo)準(zhǔn)查詢語(yǔ)言ANSI SQL。

在Drill 1.13之前,Drill只支持獨(dú)立集群部署,部署成功后每個(gè)節(jié)點(diǎn)上會(huì)運(yùn)行一個(gè)名為Dirllbit的守護(hù)進(jìn)程。從1.13版本開(kāi)始,Drill支持與YARN集成來(lái)管理資源。使用YARN后,Drill將成為一個(gè)運(yùn)行在YARN上的長(zhǎng)進(jìn)程。當(dāng)您啟動(dòng)Drill時(shí),YARN會(huì)自動(dòng)將Drill軟件部署到每個(gè)節(jié)點(diǎn)上,避免了在每個(gè)節(jié)點(diǎn)上安裝Drill的繁瑣。除此之外,資源管理也會(huì)得到簡(jiǎn)化,因?yàn)閅ARN對(duì)于Drill使用的資源是敏感的。

目前所有YARN發(fā)行版都提供了內(nèi)存和CPU(YARN稱為“vcores”)的設(shè)置,某些發(fā)行版還提供磁盤(pán)的設(shè)置。對(duì)于內(nèi)存,在把Drill部署在YARN上的時(shí)候,你會(huì)配置Drill要使用的內(nèi)存,然告知YARN。此外,Drill將使用所有可用的磁盤(pán)和CPU,當(dāng)然可以啟用Linux cgroup來(lái)限制Drill對(duì)CPU使用的,以到匹配YARN的vcores分配。

為了方便講解在YARN下部署Drill,先簡(jiǎn)單介紹YARN的核心概念。

2. YARN核心概念

YARN全稱是Yet Another Resource Negotiator(另一種資源協(xié)調(diào)者),是一種新的Hadoop資源管理器,它是一個(gè)通用資源管理系統(tǒng),可為上層應(yīng)用提供統(tǒng)一的資源管理和調(diào)度。

2.1 核心組件

  1. ResurceManager(RM):一個(gè)全局的資源管理器,負(fù)責(zé)整個(gè)系統(tǒng)的資源管理和分配。它主要由兩個(gè)組件構(gòu)成:調(diào)度器(Scheduler)和應(yīng)用程序管理器(Applications Manager,ASM)。

  2. ApplicationMaster(AM):用戶提交的每個(gè)應(yīng)用程序均包含一個(gè)AM,主要功能包括

    • 與RM調(diào)度器協(xié)商以獲取資源(以Container表示)

    • 與NM通信以啟動(dòng)/停止任務(wù)

    • 監(jiān)控所有任務(wù)運(yùn)行狀態(tài),并在任務(wù)失敗時(shí)重新為任務(wù)申請(qǐng)資源以重啟任務(wù)

  3. Container :Container是YARN中的資源抽象,它封裝了某個(gè)節(jié)點(diǎn)上的多維資源,如CPU、內(nèi)存、磁盤(pán)、絡(luò)等。當(dāng)AM向RM申請(qǐng)資源時(shí),RM向AM返回的資源便是用Container表示的。YARN會(huì)為每個(gè)任務(wù)分配一個(gè)Container,且該任務(wù)只能使用該Container中描述的資源。Container是一個(gè)動(dòng)態(tài)資源劃分單位,是根據(jù)應(yīng)用程序的需求自動(dòng)生成的。

  4. NodeManager(NM) :NM是每個(gè)節(jié)點(diǎn)上的資源和任務(wù)管理器。一方面,它定時(shí)地向RM匯報(bào)本節(jié)點(diǎn)的資源使用情況和Container運(yùn)行狀態(tài);另一方面,它接受并處理來(lái)自AM的Container啟動(dòng)/停止等各種請(qǐng)求。

  5. 客戶端(Client):是集群中一個(gè)能向RM提交應(yīng)用的實(shí)例,并且指定了執(zhí)行應(yīng)用所需要的AM類型。

2.2 YARN工作流程

當(dāng)用戶向YARN中提交一個(gè)任務(wù)后,YARN將分兩個(gè)階段運(yùn)行該任務(wù):第一階段是啟動(dòng)AM。第二階段是由AM創(chuàng)建任務(wù),為它申請(qǐng)資源,并監(jiān)控它的整個(gè)運(yùn)行過(guò)程,直到運(yùn)行完成。具體如下:

  1. 用戶向YARN中提交任務(wù),其中包括AM程序、啟動(dòng)AM的命令等。

  2. RM為該應(yīng)用程序分配第一個(gè)Container,通常稱為001,并與對(duì)應(yīng)的NM通信,要求它在這個(gè)Container中啟動(dòng)應(yīng)用程序的AM。

  3. AM首先RM注冊(cè),這樣用戶就可以直接通過(guò)RM查看任務(wù)的運(yùn)行狀態(tài),然后它將為各個(gè)任務(wù)申請(qǐng)資源,并監(jiān)控它的運(yùn)行狀態(tài),直到運(yùn)行結(jié)束,即重復(fù)步驟4~7。

  4. AM采用輪詢的方式通過(guò)RPC協(xié)議向RM申請(qǐng)和領(lǐng)取資源。

  5. 一旦AM申請(qǐng)到資源后,便與對(duì)應(yīng)的NM通信,要求它啟動(dòng)任務(wù)。

  6. NM為任務(wù)設(shè)置好運(yùn)行環(huán)境(包括環(huán)境變量、JAR包、二進(jìn)制程序等)后,將任務(wù)啟動(dòng)命令寫(xiě)到一個(gè)腳本中,并通過(guò)運(yùn)行該腳本啟動(dòng)任務(wù)。

  7. 各個(gè)任務(wù)通過(guò)RPC協(xié)議向AM匯報(bào)自己的狀態(tài)和進(jìn)度,以讓AM隨時(shí)掌握各個(gè)任務(wù)的運(yùn)行狀態(tài),從而可以在任務(wù)失敗時(shí)重新啟動(dòng)任務(wù)。

  8. 應(yīng)用程序運(yùn)行完成后,AM向RM注銷并關(guān)閉自己。

如何編寫(xiě)YARN應(yīng)用程序

2.3 如何編寫(xiě)YARN應(yīng)用程序

  1. 編寫(xiě)客戶端

// 初始化并啟動(dòng)一個(gè)YarnClientConfiguration yarnConfig = new YarnConfiguration(getConf());
YarnClient client = YarnClient.createYarnClient();
client.init(yarnConfig);
client.start();
...// 創(chuàng)建一個(gè)應(yīng)用程序YarnClientApplication app = client.createApplication();
GetNewApplicationResponse appResponse = app.getNewApplicationResponse();
...// 設(shè)置應(yīng)用程序提交上下文ApplicationSubmissionContext appContext = app.getApplicationSubmissionContext();
appContext.setApplicationId(appResponse.getApplicationId());
appContext.setApplicationName(config.getProperty("app.name"));
appContext.setApplicationType(config.getProperty("app.type"));
...// 設(shè)置am container啟動(dòng)上下文 ContainerLaunchContext amContainer = Records.newRecord(ContainerLaunchContext.class);
amContainer.setLocalResources(amLocalResources);
amContainer.setEnvironment(amEnvironment);
amContainer.setCommands(Collections.singletonList(amCommand.toString()));
...// 提交應(yīng)用程序client.submitApplication(appContext);
  1. 編寫(xiě)ApplicationMaster(AM)

// 初始化AMRMClientAsyncYarnConfiguration yarnConfig = new YarnConfiguration();
AMRMClientAsync amrmClientAsync = AMRMClientAsync.createAMRMClientAsync(5000, new AMRMCallbackHandler());
amrmClientAsync.init(yarnConfig);
amrmClientAsync.start();// 初始化NMClientAsyncYarnConfiguration yarnConfig = new YarnConfiguration();
NMClientAsync nmClientAsync = NMClientAsync.createNMClientAsync(new NMCallbackHandler());
nmClientAsync.init(yarnConfig);
nmClientAsync.start();// 注冊(cè)ApplicationMaster(AM)amrmClientAsync.registerApplicationMaster(thisHostName, 0, "");
...// 添加ContainerRequestamrmClientAsync.addContainerRequest(containerRequest);
...// 啟動(dòng)容器nmClientAsync.startContainerAsync(container, containerContext);
...// 注銷amrmClientAsync.unregisterApplicationMaster(appStatus, appMessage, null);

這里只是簡(jiǎn)單介紹了YARN的概念,以及如何編寫(xiě)YARN應(yīng)用程序,詳情可以參考 Apache Hadoop YARN

3. Drill-on-YARN部署

3.1 Drill-on-YARN組件

  1. Drill發(fā)行包: Drill-on-YARN上傳此發(fā)行包至分布式文件系統(tǒng)(如HDFS)。YARN下載它到每個(gè)工作節(jié)點(diǎn)(即是Node Manager所在的節(jié)點(diǎn))

  2. Drill site目錄: 一個(gè)包含Drill配置問(wèn)和自定義jar包的目錄。Drill-on-YARN會(huì)拷貝它至每個(gè)工作節(jié)點(diǎn)

  3. 配置:一個(gè)用于告知Drill-on-YARN如何管理Drill集群的配置文件。這個(gè)文件和drill本身的配置文件互相獨(dú)立

  4. Drill-on-YARN client: Drill-on-YARN客戶端,提供了啟動(dòng)、停止、監(jiān)控等命令

  5. Drill Application Master (AM):用于和YARN交互,包括:請(qǐng)求資源、啟動(dòng)Drillbits等。AM還提供了web界面用于管理Drill集群

  6. Drillbit: 運(yùn)行在每個(gè)節(jié)點(diǎn)的Drill守護(hù)進(jìn)程

3.2. 部署步驟

YARN通過(guò)客戶端來(lái)啟動(dòng)應(yīng)用程序。對(duì)于Drill來(lái)說(shuō),就是Drill-on-YARN客戶端了??蛻舳丝梢栽谌魏螜C(jī)器上,只要該機(jī)器同時(shí)有Drill和Hadoop軟件。使用YARN部署Drill時(shí),您只需要在客戶端計(jì)算機(jī)上安裝Drill,Drill-on-YARN會(huì)自動(dòng)部署到其它節(jié)點(diǎn)。需要注意的是,當(dāng)你不使用YARN部署Drill時(shí),一般會(huì)將其配置文件和自定義代碼放在Drill的目錄中,但是在YARN下運(yùn)行時(shí),建議所有配置和自定義代碼都會(huì)放在一個(gè)名為site的目錄中,勿改變Drill目錄中的任何內(nèi)容。

接下來(lái)詳細(xì)說(shuō)明部署步驟:

  1. 部署的環(huán)境

    關(guān)于jdk、zookeeper、hadoop的部署,不做贅述了,記得設(shè)置JAVA_HOME、HADOOP_HOME

    • JDK8+

    • Zookeeper集群

    • Hadoop集群

  2. 創(chuàng)建一個(gè)目錄,用于放置下載好的Drill發(fā)行包

    export DRILL_DIR=/path/to/drill
    mkdir -p $DRILL_DIRcd $DRILL_DIR

    說(shuō)明:執(zhí)行完上面的命令后,所處的目錄為/path/to/drill

  3. 下載Drill發(fā)行包,這里使用apache-drill-1.14.0.tar.gz,下載完后解壓,再次強(qiáng)調(diào),目前所處的目錄為/path/to/drill

    export DRILL_NAME=apache-drill-1.14.0
    tar -xzf $DRILL_NAME.tar.gzexport DRILL_HOME=$DRILL_DIR/$DRILL_NAME

    說(shuō)明:DRILL_NAME很重要,后面啟動(dòng)的時(shí)候和名字有關(guān)系

  4. 創(chuàng)建site目錄,并把配置文件和自定義代碼放置在其中

    export DRILL_SITE=$DRILL_DIR/site
    mkdir -p $DRILL_SITEcp $DRILL_HOME/conf/drill-override-example.conf $DRILL_SITE/drill-override.conf
    cp $DRILL_HOME/conf/drill-on-yarn-example.conf $DRILL_SITE/drill-on-yarn.conf
    cp $DRILL_HOME/conf/drillenv.sh $DRILL_SITE

    說(shuō)明:

    • 對(duì)于自定義代碼,一般都是打成jar包,放置在DRILLSITE/jars。比如自定義的udf,可以放在DRILLSITE/jars。比如自定義的udf,可以放在DRILL_SITE/jars/3rdparty

    • 不要拷貝drill-override-example.conf整個(gè)文件,僅僅拷貝需要的配置,然后進(jìn)行修改

  5. 修改$DRILL_SITE/drill-override.conf
    一般情況下,可能需要修改的配置有:cluster-id、zk、http、rpc。此處,我只修改cluster-id和zk

    drill.exec: {
      cluster-id: "drillbits1"
      zk: {
        connect: "11.167.47.76:2181,11.167.57.229:2181,11.167.67.151:2181",
        root: "drill",
        refresh: 500,
        timeout: 5000,
          retry: {
            count: 7200,
            delay: 500
          }
      }
    }
  6. 修改$DRILL_SITE/drill-on-yarn.conf

    # Drillbit資源配置
    drillbit: {
        heap: "4G" # Java heap size
        max-direct-memory: "8G"
        memory-mb: 12288 # 單位MB,container使用的內(nèi)存,一般來(lái)說(shuō)等于heap+max-direct-memory,但是建議大于這個(gè)值
        vcores: 4 # cpu個(gè)數(shù)
    }
    # Drillbit集群組配置
    cluster: [
        {
            name: "mypool"
            type: "basic" # 可選的有basic和labeled,basic表示在YARN集群上任意可用的container上啟動(dòng)drillbits;labeled在一組特定labeled的容器中啟動(dòng)drillbits
            count: 1 # 啟動(dòng)的YARN容器個(gè)數(shù)
        }
    ] 
    # 配置drill發(fā)行包所在的位置
    drill-install:  {
        client-path: "/path/to/drill/apache-drill-1.14.0.tar.gz"
        # dir-name: "drill"}
    # 設(shè)置分布式文件系統(tǒng)位置
    dfs: {
        connection: "hdfs://ip:port/"
        dir: "/user/drill"}  
    # Drill-on-YARN Web界面配置
    drill.yarn:{
        http: {
            port: 8048
        }
    }  
    # Drill-on-YARN Web界面安全配置
    drill.yarn.http: {
        auth-type: "simple"
        user-name: "drill" // 注意,drill-on-yan-example.conf默認(rèn)是user_name,這是錯(cuò)誤的,要改成user-name
        password: "drill"}

    說(shuō)明:

    附上完整的配置

    drill.yarn: {
      app-name: "Drill-on-YARN"
      dfs: {
        connection: "hdfs://11.162.91.196:9000/"
        app-dir: "/users/drill"
      }
      yarn: {
        queue: "default"
      }
      drill-install: {
        client-path: "/home/admin/drill/apache-drill-1.14.0.tar.gz"
        # dir-name: "drill"
        # library-path: "/opt/libs"
      }
      am: {
        heap: "450M"
        memory-mb: 512
        # node-label-expr: "drill-am"
      }
      http: {
        port: 8048
        # ssl-enabled: true
        auth-type: "simple"
        user-ame: "drill"
        password: "drill"
        rest-key=""
      }
      drillbit: {
        heap: "3G"
        max-direct-memory: "1G"
        code-cache: "1G"
        memory-mb: 4096
        vcores: 2
        # disks: 3
        classpath: ""
      }
      cluster: [
        {
          name: "drill-group1"
          type: "basic"
          count: 3
        }
      ]
    }
    1. 關(guān)于Drillbit資源配置中的heap和max-direct-memory,在非YARN下部署,是修改DRILLHOME/conf/drillenv.sh文件,但是在YARN下部署,是修改DRILLHOME/conf/drillenv.sh文件,但是在YARN下部署,是修改DRILL_SITE/drill-on-yarn.conf。但是,如果你已經(jīng)在drillenv.sh配置了,則drillenv.sh優(yōu)先。

    2. Drillbit集群組配置,雖然是個(gè)list,但目前只支持配置一個(gè)

    3. dir-name特別說(shuō)明,當(dāng)你client-path解壓出來(lái)的文件,目錄是apache-drill-1.14.0時(shí),不需要配置dir-name,反之如果不是,請(qǐng)把解壓出來(lái)的文件目錄名配上

    4. Web界面安全配置的auth-type支持simple和drill兩種,使用simple,需要指定用戶名和密碼,使用drill說(shuō)明用drill的認(rèn)證系統(tǒng)

  7. 啟動(dòng)

    $DRILL_HOME/bin/drill-on-yarn.sh --site $DRILL_SITE start

    接下來(lái),就會(huì)看到啟動(dòng)日志

    Connecting to DFS... Connected.
    Using existing Drill archive in DFS: /users/drill/apache-drill-1.14.0.tar.gz
    Uploading site directory /home/admin/drill/apache-drill-1.14.0/bin/../../site to /users/drill/site.tar.gz ... Uploaded.
    Loading YARN Config... Loaded.
    Application ID: application_1533475543014_0005
    Launching Drill-on-YARN.......................
    Tracking URL: http://dtshow011162091196.zth:8088/proxy/application_1533475543014_0005/
    Application Master URL: http://11.163.210.105:8048/

    從上面的命令可以看到,會(huì)首先把a(bǔ)pache-drill-1.14.0.tar.gz和site目錄打成的site.tar.gz上傳至HDFS,然后加載YARN的配置,最后啟動(dòng)Drill

    除了啟動(dòng)命令外,drill-on-yarn.sh還提供了status、stop、resize、clean命令,比如status

    Application ID: application_1533475543014_0005
    Application State: RUNNING
    Host: dtshow011163210105.zth/11.163.210.105
    Queue: default
    User: admin
    Start Time: 2018-08-19 20:51:55
    Application Name: Drill-on-YARN
    Tracking URL: http://dtshow011162091196.zth:8088/proxy/application_1533475543014_0005/
    AM State: LIVE
    Target Drillbit Count: 3
    Live Drillbit Count: 3
    Unmanaged Drillbit Count: 0
    Blacklisted Node Count: 0
    Free Node Count: 0
    For more information, visit: http://11.163.210.105:8048/

    啟動(dòng)成功后,便可以訪問(wèn) http://11.163.210.105:8048/ ,效果如下圖:

    如何編寫(xiě)YARN應(yīng)用程序

    用戶名和密碼就是之前配置的drill、drill,除此之外,此頁(yè)面提供了如下功能:

    至此,你已經(jīng)成功的把Drill部署在YARN上面了,同樣可以通過(guò)訪問(wèn)Drill的Web UI來(lái)執(zhí)行查詢測(cè)試,效果如下圖:

    1. 集群狀態(tài)總覽

    2. 完整的啟動(dòng)配置

    3. 正在運(yùn)行的Drillbits列表

    4. 簡(jiǎn)單的操作來(lái)調(diào)整集群

    5. 一個(gè)展示停止的、被kill的、失敗的Drillbits歷史頁(yè)面,可以用它來(lái)診斷問(wèn)題

如何編寫(xiě)YARN應(yīng)用程序

如何編寫(xiě)YARN應(yīng)用程序

“如何編寫(xiě)YARN應(yīng)用程序”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識(shí)可以關(guān)注創(chuàng)新互聯(lián)網(wǎng)站,小編將為大家輸出更多高質(zhì)量的實(shí)用文章!

網(wǎng)站名稱:如何編寫(xiě)YARN應(yīng)用程序
分享路徑:http://chinadenli.net/article4/ihsdie.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站建設(shè)響應(yīng)式網(wǎng)站、企業(yè)網(wǎng)站制作動(dòng)態(tài)網(wǎng)站、外貿(mào)網(wǎng)站建設(shè)App設(shè)計(jì)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

網(wǎng)站建設(shè)網(wǎng)站維護(hù)公司