- 인쇄
- PDF
Data Forest 시작
- 인쇄
- PDF
VPC 환경에서 이용 가능합니다.
Data Forest의 애플리케이션 사양을 확인하고 전체 시나리오를 충분히 숙지했다면 Data Forest 이용을 시작하기 위한 준비를 완료한 것입니다. 이 가이드에서는 Data Forest와 Data Forest 앱에 접근하기 위한 노트북 생성 및 클라이언트 환경 구성 방법에 대해 설명합니다.
노트북 생성
노트북을 생성하는 방법은 다음과 같습니다.
사전 작업
네트워크 접근 제어를 위해 VPC와 Subnet 생성을 진행해 주십시오.
- Services > Big Data & Analytics > Data Forest 메뉴를 차례대로 클릭해 주십시오.
- Notebooks에서 [노트북 생성] 버튼을 클릭해 주십시오.
- 노트북 설정 정보를 입력한 후 [다음] 버튼을 클릭해 주십시오.
- 계정 이름: 'df123' 입력
- 노트북 이름: 'my-notebook' 입력
- VPC/Subnet: 사전 작업에서 생성한 정보 입력
- 사용자 설정이 필요할 경우 관련 정보를 입력해 주십시오.
- 인증키 설정에서 보유하고 있는 인증키를 선택하거나 새로운 인증키를 생성 한 후 [다음] 버튼을 클릭해 주십시오.
- 최종 확인 후 [생성] 버튼을 클릭해 주십시오.
노트북 노드에서 개발 환경 구성
노트북 생성이 완료되면 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