Data Forest 시작
    • PDF

    Data Forest 시작

    • PDF

    Article Summary

    VPC 환경에서 이용 가능합니다.

    Data Forest의 애플리케이션 사양을 확인하고 전체 시나리오를 충분히 숙지했다면 Data Forest 이용을 시작하기 위한 준비를 완료한 것입니다. 이 가이드에서는 Data Forest와 Data Forest 앱에 접근하기 위한 노트북 생성 및 클라이언트 환경 구성 방법에 대해 설명합니다.

    노트북 생성

    노트북을 생성하는 방법은 다음과 같습니다.

    사전 작업

    네트워크 접근 제어를 위해 VPC와 Subnet 생성을 진행해 주십시오.

    1. Services > Big Data & Analytics > Data Forest 메뉴를 차례대로 클릭해 주십시오.
    2. Notebooks에서 [노트북 생성] 버튼을 클릭해 주십시오.
    3. 노트북 설정 정보를 입력한 후 [다음] 버튼을 클릭해 주십시오.
      • 계정 이름: 'df123' 입력
      • 노트북 이름: 'my-notebook' 입력
      • VPC/Subnet: 사전 작업에서 생성한 정보 입력
    4. 사용자 설정이 필요할 경우 관련 정보를 입력해 주십시오.
    5. 인증키 설정에서 보유하고 있는 인증키를 선택하거나 새로운 인증키를 생성 한 후 [다음] 버튼을 클릭해 주십시오.
    6. 최종 확인 후 [생성] 버튼을 클릭해 주십시오.

    노트북 노드에서 개발 환경 구성

    노트북 생성이 완료되면 VPC 환경에서 도커 컨테이너를 통해 Data Forest 클러스터 및 앱 접근이 쉽도록 개발 환경 구성이 가능합니다.

    참고

    호스트가 CentOS 7.3인 경우를 기준으로 설명합니다.

    Step 1. 노트북 노드 및 도커 접속

    노트북 노드에 구동된 도커에 접속하는 방법은 아래 2가지 방법이 가능합니다.

    • 노트북 WEB UI 응 통해 접속하는 방법
    • 노트북 노드에 SSH 접속 후 구동된 도커에 접속하는 방법
    참고
    • 노트북 접속하는 방법에 대한 자세한 설명은 노트북 생성 및 관리를 참조해 주십시오.
    • Data Forest 에서 제공되는 Notebook 도커에는 Data Forest 앱이 실행되는 네트워크에 접근하기 위한 별도의 오버레이 네트워크(Overlay Network) 설정이 구성되어 있습니다.

    Step 2. 키탭 확인 및 인증

    Data Forest 컴포넌트에 접근하려면 Kerberos 인증이 완료되어야 합니다. 계정 생성 후 접속 정보에서 다운로드한 키탭 파일을 활용합니다.

    노트북 노드 생성시 Data Forest 계정의 키탭이 도커 안에 다운로드 되어 있습니다. 아래 경로에서 확인 가능합니다.

    • 사용자 키탭 다운로드 경로
      • forest 계정의 홈 디렉토리인 /home/forest/keytab

    인증하려면 다음과 같이 명령어를 실행해 주십시오.

    [forest@0242f09990ad ~][df]$ cd keytabs/
    [forest@0242f09990ad keytabs][df]$ ll
    total 4
    -rw-r--r-- 1 forest forest 218 Dec 21 15:19 df.example.keytab
    [forest@0242f09990ad keytabs][df]$ kinit example -kt df.example.keytab
    [forest@0242f09990ad keytabs][df]$ klist
    Ticket cache: FILE:/tmp/krb5cc_500
    Default principal: example@KR.DF.NAVERNCP.COM
    
    Valid starting       Expires              Service principal
    12/21/2020 17:07:42  12/22/2020 17:07:42  krbtgt/KR.DF.NAVERNCP.COM@KR.DF.NAVERNCP.COM
    	renew until 12/28/2020 17:07:42
    

    인증 내역을 삭제하려면 kdestroy 명령어를 실행해 주십시오.

    [forest@0242f09990ad keytabs][df]$ kdestroy
    [forest@0242f09990ad keytabs][df]$ klist
    klist: No credentials cache found (filename: /tmp/krb5cc_500)
    
    참고

    키탭 파일이 없을 경우 사용자 인증이 불가하여 모든 동작에서 권한 오류가 발생할 수 있습니다.

    Step 3. 개발 환경 사용

    1. 환경변수 확인

    hadoop, yarn, spark-submit 등의 명령어를 사용하기 위해 필요한 환경 변수는 이미 지정되어 있습니다.

    [forest@0242f09990ad keytabs][df]$ cat /etc/profile.d/zz-df-env.sh
    # DO NOT EDIT THIS LINE
    # FOR CLUSTER df ENVIRONMENTS
    export HADOOP_CONF_DIR=/etc/hadoop/conf
    export HIVE_CONF_DIR=/etc/hive/conf
    export SPARK_CONF_DIR=/etc/spark2/conf
    ...
    

    2. 다양한 명령어 실행

    [forest@0242f09990ad keytabs][df]$ hadoop fs -touch /user/example/test.txt
    [forest@0242f09990ad keytabs][df]$ hadoop fs -ls
    Found 4 items
    drwxr-xr-x   - example       services          0 2020-12-21 16:33 .sparkStaging
    drwxr-x---   - example       services          0 2020-12-21 15:21 .yarn
    -rw-------   3 example       services          0 2020-12-21 17:10 test.txt
    
    참고
    • 사용자의 HDFS HOME (/user/${USER})외 다른 경로에 있는 파일은 접근할 수 없습니다.
    • 사용자 인증이 완료되지 않으면 명령어 실행 시 xxxxx 라는 메시지가 나타납니다. 인증 및 인증 내역 삭제를 참조하여 인증을 수행해 주십시오.

    다음과 같이 사용자가 생성한 애플리케이션을 조회하고 애플리케이션 상태를 변경할 수 있습니다.

    [forest@0242f09990ad keytabs][df]$ yarn app -list
    20/12/21 17:11:43 INFO client.AHSProxy: Connecting to Application History server at rm1.kr.df.naverncp.com/10.213.198.24:10200
    Total number of applications (application-types: [], states: [SUBMITTED, ACCEPTED, RUNNING] and tags: []):1
                    Application-Id	    Application-Name	    Application-Type	      User     Queue	             State	       Final-State	       Progress	                       Tracking-URL
    application_1608526482493_0002	                 dev	        yarn-service	   example       dev	           RUNNING	         UNDEFINED	           100%	                                N/A
    

    다음과 같이 oozie jobs을 확인할 수 있습니다.

    [forest@0242f09990ad keytabs][df]$ oozie jobs
    Job ID                                   App Name     Status    User      Group     Started                 Ended
    ------------------------------------------------------------------------------------------------------------------------------------
    0000000-201125175300661-oz-df-W          no-op-wf     SUCCEEDED example -         2020-11-25 08:56 GMT    2020-11-25 08:56 GMT
    ------------------------------------------------------------------------------------------------------------------------------------
    

    다음과 같이 spark-shell을 사용하여 명령을 실행할 수 있습니다.

    [forest@f095a749f891 ~][df]$ spark-shell --master local
    Warning: Ignoring non-spark config property: history.server.spnego.keytab.file=/etc/security/keytabs/spnego.service.keytab
    Warning: Ignoring non-spark config property: history.server.spnego.kerberos.principal=HTTP/_HOST@KR.DF.NAVERNCP.COM
    Setting default log level to "WARN".
    To adjust logging level use sc.setLogLevel(newLevel). For SparkR, use setLogLevel(newLevel).
    Spark context Web UI available at http://f095a749f891:4040
    Spark context available as 'sc' (master = local, app id = local-1608542188370).
    Spark session available as 'spark'.
    Welcome to
          ____              __
         / __/__  ___ _____/ /__
        _\ \/ _ \/ _ `/ __/  '_/
       /___/ .__/\_,_/_/ /_/\_\   version 2.3.2.3.1.0.0-78
          /_/
    
    Using Scala version 2.11.8 (Java HotSpot(TM) 64-Bit Server VM, Java 1.8.0_112)
    Type in expressions to have them evaluated.
    Type :help for more information.
    
    scala> sc
    res0: org.apache.spark.SparkContext = org.apache.spark.SparkContext@b90c5a5
    

    spark-submit을 사용하여 jar 파일을 제출할 수 있습니다. 아래 예시에서는 'example.jar'라는 이름으로 빌드했고, 입력 텍스트 파일로 Spark2의 README.md 파일을 적용했습니다. 해당 애플리케이션 stdout 로그에서 단어 수 세기(wordcount) 결괏값을 확인할 수 있습니다.

    [forest@090aea7192a2 ~][df]$ spark-submit --class com.naverncp.example.SparkWordCount \
    --master yarn --deploy-mode cluster --executor-memory 1g --name wordcount --conf "spark.app.id=wordcount" \
    example.jar file:///usr/hdp/current/spark2-client/README.md
    

    SparkWordCount.scala코드는 다음과 같습니다.

    package com.naverncp.example
    
    import org.apache.spark.{SparkConf, SparkContext}
    
    object SparkWordCount {
      def main(args: Array[String]): Unit = {
        val sc = new SparkContext(new SparkConf().setAppName("WordCount Example"))
        val tokenized = sc.textFile(args(0)).flatMap(_.split(" "))
        val wordCounts = tokenized.map((_, 1)).reduceByKey(_ + _)
        println(wordCounts.collect().mkString(", "))
      }
    }
    
    

    3. 앱에 대한 클라이언트 구성

    1번~3번 절차는 멀티테넌트 클러스터에 대한 클라이언트 구성을 확인하는 방법이었습니다. 이 챕터에서는 HBASE-2.0.0, HBASE-2.2.3, KAFKA-2.4.0 앱에 대한 클라이언트를 구성하는 방법을 기준으로 설명합니다. 클라이언트를 구성하기 전에 환경 변수를 추가로 설정해야 합니다.

    Data Forest 앱에 대한 클라이언트 환경 변수를 자동으로 설정하려면 get-app-env.sh를 실행해 주십시오.

    $ pwd
    /home/forest
    $ mkdir ${DIR}
    $ sh /home/forest/get-app-env.sh ${APP_NAME} ~/${DIR}
    

    HBASE-2.0.0
    HBASE-2.0.0 앱에 대한 클라이언트를 구성하는 방법은 다음과 같습니다. (앱 이름: secure-hbase)

    [forest@0242f09990ad ~][df]$ mkdir secure-hbase
    [forest@0242f09990ad ~][df]$ sh /home/forest/get-app-env.sh secure-hbase ~/secure-hbase
    [forest@0242f09990ad ~][df]$ sh /home/forest/get-app-env.sh secure-hbase ~/secure-hbase
    [/home/forest/get-app-env.sh] Apptype: HBASE-2.0.0
    [/home/forest/get-app-env.sh] Download install-client script for HBASE-2.0.0
    [/home/forest/get-app-env.sh] Install client on /home/forest/secure-hbase
    current secure-hbase: .yarn/services/secure-hbase/components/v1
    HBase-2.0.0 Client has been installed on /home/forest/secure-hbase
    ==============================================================================================
    kinit <user>
    export HBASE_CONF_DIR=/home/forest/secure-hbase
    hbase shell
    ==============================================================================================
    

    HBASE-2.2.3
    HBASE-2.2.3 앱에 대한 클라이언트를 구성하는 방법은 다음과 같습니다. (앱 이름: unsecure-hbase)

    $ mkdir unsecure-hbase
    $ sh /home/forest/get-app-env.sh unsecure-hbase ~/unsecure-hbase
    

    KAFKA-2.4.0
    KAFKA-2.4.0 앱에 대한 클라이언트를 구성하는 방법은 다음과 같습니다. (앱 이름: kafka)

    $ mkdir kafka
    $ sh /home/forest/get-app-env.sh kafka ~/kafka
    

    이 문서가 도움이 되었습니까?

    Changing your password will log you out immediately. Use the new password to log back in.
    First name must have atleast 2 characters. Numbers and special characters are not allowed.
    Last name must have atleast 1 characters. Numbers and special characters are not allowed.
    Enter a valid email
    Enter a valid password
    Your profile has been successfully updated.