Spark를 REST API에서 실행하는 Apache Livy
Livy를 대략 요약하면 Spark의 처리를 REST 서버 경유(API)로 요청할 수 있는 소프트웨어가 됩니다.
본가 사이트에서
Submit Jobs from Anywhere
Livy enables programmatic, fault-tolerant, multi-tenant submission of Spark jobs from web/mobile apps (no Spark client needed). So, multiple users can interact with your Spark cluster concurrently and reliably.
Use Interactive Scala or Python
Livy speaks either Scala or Python, so clients can communicate with your Spark cluster via either language remotely. Also, batch job submissions can be done in Scala, Java, or Python.
이 기사에서는 설치 및 API에서 Spark를 실행하는 방법에 대해 간략하게 설명합니다.
모두 로컬 Mac 컴퓨터에서 실행 중입니다.
덧붙여 본 기사에서는 Spark의 인스톨 방법에 대해서는 생략하고 있기 때문에, Spark의 인스톨 방법에 대해서는, 이하 기사를 참고로 해 주시면 좋겠습니다.
(참고)
Spark / Scala를 Jupyter Notebook에서 실행 - Qiita
Livy 설치 및 시작
다음 사이트에서 zip 파일을 다운로드 해답합니다.
zip 파일 압축을 풀면 디렉토리를 이동하여 Livy 프로세스를 시작합니다.
# 起動
./bin/livy-server start
# 起動状態確認
./bin/livy-server status
기본적으로
localhost:8998
로 시작합니다.Livy API를 사용해보십시오
대화형으로 처리 수행
Spark 컨텍스트를 생성하고 대화식으로 처리를 실행해 봅니다.
Spark 컨텍스트는 세션을 내보내고 세션에서 공유되기 때문에 먼저 세션을 만듭니다.
세션 만들기
# リクエスト
curl -XPOST -H 'Content-Type: application/json' localhost:8998/sessions -d \
'{
"driverMemory": "2G",
"driverCores": 1,
"executorMemory": "2G",
"executorCores": 1,
"numExecutors": 1
}'
# レスポンス
{"id":0,"appId":null,"owner":null,"proxyUser":null,"state":"starting","kind":"shared","appInfo":{"driverLogUrl":null,"sparkUiUrl":null},"log":["stdout: ","\nstderr: "]}
"id":0
의 0
가 세션 ID이므로 이 세션 ID를 사용하여 다음 절에서 코드를 실행해 봅니다.코드 실행
내보낸 세션 ID
0
를 사용하여 코드를 여러 번 실행해보십시오.curl localhost:8998/sessions/0/statements -X POST -H 'Content-Type: application/json' -d \
'{
"code":"val x = 1 + 2",
"kind": "scala"
}'
curl localhost:8998/sessions/0/statements -X POST -H 'Content-Type: application/json' -d \
'{
"code":"val y = 1 + x",
"kind": "scala"
}'
UI(이번에는
http://localhost:8998
)에 액세스하면 실행 결과를 볼 수 있습니다.세션 삭제
작업이 끝나면 세션을 삭제합니다.
curl -XDELETE localhost:8998/sessions/0
일괄 처리 실행
그런 다음
jar
파일을 사용하여 일괄 처리를 시작합니다.아래 Livy 서버에
/work
디렉터리를 만든 다음 jar
파일을 배치하여 배치 앱을 실행해 봅니다.사전 설정
우선 준비가 필요합니다.
# 実行したいjarファイルを今回はSparkに同梱されているexampleのものを利用する
# /workディレクトリは、このあとのconfファイルでホワイトリストに追加する必要がある
mkdir -p /work
cp $SPARK_HOME/examples/jars/spark-examples_2.11-2.4.0.jar /work
로컬로 실행하려면 다음 설정이 필요합니다.
cp conf/livy.conf.template conf/livy.conf
vi conf/livy.conf
다음 두 줄을 설정합니다.
conf/livy.conf
livy.spark.master = local
livy.file.local-dir-whitelist = /work
conf/livy.conf
파일을 구성한 후 설정을 반영하기 위해 Livy 프로세스를 다시 시작합니다.# プロセスの再起動
bin/livy-server stop
bin/livy-server start
일괄 처리 실행
준비가 되었으므로 실행합니다.
# バッチ処理のリクエスト
curl localhost:8998/batches -XPOST -H 'Content-Type: application/json' -d \
'{
"file": "/work/spark-examples_2.11-2.4.0.jar",
"className": "org.apache.spark.examples.SparkPi",
"conf": {
"spark.master": "local[1]"
},
"name": "example-app"
}'
# レスポンス
{"id":1,"state":"running","appId":null,"appInfo":{"driverLogUrl":null,"sparkUiUrl":null},"log":["stdout: ","\nstderr: "]}%
실행하면 일괄 처리 ID가 지불됩니다.
배치 ID를 지정하여 실행 로그를 검색할 수 있습니다.
# リクエスト
# ログを見やすくするためにPythonのjson.toolで整形しています
curl localhost:8998/batches/1/log | python -m json.tool
# レスポンス
{
"id": 1,
"from": 3,
"total": 103,
"log": [
"2019-03-21 23:45:48 INFO SparkContext:54 - Submitted application: Spark Pi",
"2019-03-21 23:45:48 INFO SecurityManager:54 - Changing view acls to: chocomint",
"2019-03-21 23:45:48 INFO SecurityManager:54 - Changing modify acls to: chocomint",
"2019-03-21 23:45:48 INFO SecurityManager:54 - Changing view acls groups to: ",
...
로그는 Livy UI에서도 볼 수 있습니다.
요약
배치 처리를 API로 기동할 수 있게 되기 때문에, 편리할까라고 생각했습니다. 실업무로 사용할 수 있으면 사용해 가고 싶습니다.
Reference
이 문제에 관하여(Spark를 REST API에서 실행하는 Apache Livy), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/chocomintkusoyaro/items/9ad844d8386cbab4aa5a텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)