반응형
헬름을 이용한 spark 클러스터 생성하기입니다. (하나씩 구현했는데 이번엔 성공하지 못했어요.)
helm은 너무 간편하고, 전 클러스터에 잡만 제출하면 되기 때문에.... 타협했습니다.
namespace 생성
# vim ns.yaml
apiVersion: v1
kind: Namespace
metadata:
name: spark
kubectl apply -f ns.yaml
bitnami helm
helm repo add bitnami https://charts.bitnami.com/bitnami
helm install spark bitnami/spark -n spark
# Read more about the installation in the Apache Spark packaged by Bitnami Chart Github repository
1. 서비스 연결 : port-forward
kubectl port-forward --namespace spark svc/spark-master-svc 80:80
visit http://127.0.0.1:80
2. 서비스 연결 : Ingress
create ingress class
# vim spark-default-ingress.yaml
apiVersion: networking.k8s.io/v1
kind: IngressClass
metadata:
labels:
app.kubernetes.io/component: controller
name: spark-ing-class
namespace: spark
spec:
controller: k8s.io/ingress-nginx
create ingress
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: spark-ingerss
namespace: spark
spec:
ingressClassName: spark-ing-class
tls:
- hosts:
- "*.public.psawesome.dev"
secretName: secret-tls
rules:
- host: spark-master.public.psawesome.dev
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: spark-master-svc
port:
number: 80
- 최종 결과입니다.
예제 실행
export EXAMPLE_JAR=$(kubectl exec -ti --namespace spark spark-worker-0 -- find examples/jars/ -name 'spark-example*\.jar' | tr -d '\r')
kubectl exec -ti --namespace spark spark-worker-0 -- spark-submit --master spark://spark-master-svc:7077 \
--class org.apache.spark.examples.SparkPi \
$EXAMPLE_JAR 5
아래 글은 시도했지만, 이번엔 성공하지 못한 스크립트입니다.
download file
wget https://dlcdn.apache.org/spark/spark-3.3.1/spark-3.3.1-bin-hadoop3.tgz
tar -xvf spark-3.3.1-bin-hadoop3.tgz
cd spark-3.3.1-bin-hadoop3/bin
pwd
/Users/auto/spark/spark-3.3.1-bin-hadoop3
./bin/docker-image-tool.sh -r <repo> -t my-tag build
./bin/docker-image-tool.sh -r <repo> -t my-tag push
# 사용한 명령어
docker login
./bin/docker-image-tool.sh -r psawesome -t 3.3.1 build
./bin/docker-image-tool.sh -r psawesome -t 3.3.1 push
install java
sudo apt update
sudo apt install openjdk-11-jdk -y
set JAVA_HOME
# vim ~/.zshrc # 각자의 bash 환경에 추가
export JAVA_HOME=$(dirname $(dirname $(readlink -f $(which java))))
export PATH=$PATH:$JAVA_HOME/bin
bin/spark-submit \
-—master k8s://https://node1:6443 \
--deploy-mode cluster \
--name spark-pi \
--class org.apache.spark.examples.SparkPi \
--conf spark.executor.instances=2 \
—-conf spark.kubernetes.namespace=spark \
—-conf spark.kubernetes.authenticate.driver.serviceAccountName=spark \
--conf spark.kubernetes.container.image=apache/spark \
local:///opt/spark/examples/jars/spark-examples_2.11-2.4.0.jar
이슈
Exception in thread "main" org.apache.spark.SparkException: Must specify the driver container image
복사 및 붙여넣기로 코드를 수정했는데, 일부 텍스트의 문제가 있었습니다.
오류 확인
exec /opt/entrypoint.sh: exec format error
Application status for spark-e680ee07efa04e98a775fc29d4419769 (phase: Pending)
m1 mac으로 빌드 및 push를 해서 아키 타입이 맞지 않는 것 같아서 해당 내용도 수정했는데 해결하지 못했네요.
이미 `spark-3.3.1-bin/bin/docker-image-tool.sh` build할 때 buildx build를 같이 돌리기 때문에 칩 이슈는 해소되는 것 같은데... 전 이번에 해결하진 못했습니다.
linux/arm/v7
반응형