- 印刷する
- 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環境で Dockerコンテナを通じて Data Forestクラスタおよびアプリに簡単にアクセスできるように開発環境設定ができます。
ホストが CentOS 7.3の場合を基準に説明します。
Step 1. ノートブックノードおよび Dockerアクセス
ノートブックノードに稼働した Dockerにアクセスする方法は以下の2つの方法があります。
- ノートブック WEB UIを介してアクセスする方法
- ノートブックノードに SSHアクセスした後、稼働した Dockerにアクセスする方法
- ノートブックにアクセスする方法に関する詳しい説明は、ノートブックの作成と管理をご参照ください。
- Data Forestで提供される Notebook Dockerには Data Forestアプリが実行されるネットワークにアクセスするための別途のオーバーレイネットワーク(Overlay Network)の設定が構成されています。
Step 2. キータブの確認と認証
Data Forestコンポーネントにアクセスするには Kerberos認証を完了します。アカウントの作成後にアクセス情報でダウンロードしたキータブファイルを活用します。
ノートブックノードの作成時に Data Forestアカウントのキータブが Docker内にダウンロードされています。以下のパスから確認できます。
- ユーザーキータブのダウンロードパス
- 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を使用して jarsファイルを提出できます。以下の例では「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