-
이전 글
2021.03.31 - [2021년 상반기/개발공부] - [Spark] Data Analytics with Spark using Python
Master: MacOS
Slave: CentOS7
오늘은 분산 환경을 만들려고 vmware fusion을 다운받았다.
VMwareFusion: www.vmware.com/kr/products/fusion/fusion-evaluation.html
8버전: mirror.navercorp.com/centos/8/isos/
7버전: mirror.navercorp.com/centos/7/isos/
나는,, 결국 7버전을 사용하게 되었는데 그 이유는 아래와 같다.. ⍩ 꿱, 험난했던 설치 여정
더보기에러 발생. 기본 리포지토리 설정 도중 오류 발생
1차 시도. centos 8 boot 버전 다운 > 실패
2차 시도. iso 이미지 삭제 및 재 삽입, vmware 껏다키기 반복 > 실패
2차 시도. centos 8 url 미러주소 입력 mirror.navercorp.com/centos/8 > 실패
3차 시도. centos 8 dvd 버전 다운 > 실패
4차 시도. centos 8 legacy boot을 ufei로 변경 > 실패
5차 시도. centos 7 netinstall > 실패
6차 시도. centos 7 netinstall ufei로 변경 > 실패
7차 시도. centos 7 minimal > 성공
😔 어차피 분산 서버용으로 사용할꺼니까 편안하게 가자..
1. VMware fushion 설치 후 iso를 이용해 cnetos7 설치
centos7 minimal + UEFI로 설치하였다.
* 설치 진행 중에 사용자 추가해준다( master랑 이름을 맞춰주었다. -ssh public key 때문에)
* 설치할 때 꼭 이더넷 활성화 하자.. 밑에 삽질 스토리를 또 겪고싶지 않으면
2. SSH 공개키 설정
예전에는..(물론 지금도이렇게 해도 무관하겠지만) 아래와같이 진행했다. 그래서 습관적으로 공개키 배포부터 진행하려했다.아아앗 아니다~!! 편하게 하려면 하는게 맞다!! 마스터노드에서 start-all.sh stop-all.sh로 간편하게 하려면 고고싱해야한다.!
더보기) slave 및 마스터의 hosts 수정 (hosts는 모두 동일하다. hostname은 각 머신마다 설정해준다.)
- hostname을 설정하면 나중에 공개키 생성 시 사용된다. 그렇기때문에 Master hostname과 일치시켜줘야한다.
- hosts는 다음과같이 적어준다.( 나는 master 대신 그냥 내 로컬이름으로 했다.. )
해당 서버 ip 이름1 (centos는 ip addr로 확인 mac은 ifconfig로 확인)
공개키 생성 및 카피는 아래 블로그를 참조했다.
공개키때문에 한시간은 잡아먹힌 것 같다. 그냥 생성 뒤 scp 보내고 권한 설정에 config까지 만졌는데,, 왜 안되는지..
나도 아랫분처럼 별별 다했는데 안되다가 이 분 말대로 하니까 바로 됐다 ㅡㅡ;
SPARK 설정(공개키 안해도 일단 진행은 가능하다.)
책을 보니까, 일단 키설정 없이 각 노드에서 slave를 키는 방식으로 테스트는 진행이 가능하다.
우선 스파크를 설치해야한다. (weejw.tistory.com/515 요 게시글은 mac 기준이라 조금 다르기때문에 아래 과정이 추가 필요하다.)
머신들은 CentOS로 했기때문에 yum을 이용했다. 아래 명령어를 이용해 설치 가능한 java를 찾을 수 있다.
sudo yum list java*jdk-devel sudo yum install [위에 나온 것]
그 후, 위 게시글과 똑같이 스파크를 내려받아서 환경변수를 잡아주는데, Cent는 환경변수가 또 다르다. 아래와 같이 ~/.bashrc에 지정해준다.
3. SPARK CONFIG
아래 보이는 것과 같이 우리는 2가지를 수정할 것이다. 두 파일 모두 template를 복사하면 된다(cp 이용!)
1) spark-defaults.conf
2) spark-env.sh
그럼 아래에 두 가지가 주석처리(#) 되어있을 텐데 이를 해제 하고 뒤에 다음과 같이 작성해준다.
#default spark.master spark://jiwon.local:7077 # /Users/jiwonwee/SPARK_BOOK/spark/spark-3.1.1-bin-hadoop2.7/conf/spark-env.sh: line 44: SPARK_MASTER_HOST: command not found 위처럼 뜨면 아래로 수정 export SPARK_MASTER_HOST=jiwon.local #env SPARK_MASTER_HOST jiwon.local
4. Spark 실행 및 Submit
아래와 같이 $SPARK_HOME/sbin 아래에서 명령어를 이용해 각 노드를 on!
그럼 각각 localhost:8080(master) localhost:8081(slave)로 web에서 확인 가능하다.
#master 노드에서 ./start-master.sh #slave 노드에서 ./start-slave.sh spark://jiwon.local:7077
* 수정!! master에서 worker가 안보였던 문제가 있었다. 주소 바인딩을 잘해줘야한다 ㅠ.ㅠ 원래 보이는게 정상임!
간단한 예제를 날려보자. 그럼 localhost:4040/jobs/ 에서 아래와같이 running 상태를 확인할 수 있다.
spark-submit\ --class org.apache.spark.examples.SparkPi \ --master spark://jiwon.local:7077 \ --driver-memory 512m \ --executor-memory 512m \ --executor-cores 1 \ $SPARK_HOME/examples/jars/spark-examples*.jar 10000
아.. 오늘은 쓸 때없는데에 시간을 많이 빼앗겼다.. 맥북이라 안되었던 것들같은..것 ㅠ_ㅠ
+ 추가 ( start-all.sh로 실행 )
1. 슬레이브와 마스터의 스파크 경로를 맞춰줘야함
2.공개키 설정을 해줘야함!
REFERENCES
'2021년 > Data' 카테고리의 다른 글
Amazon Personalize는 어떻게 동작하는걸까? (2) 2021.04.09 [Spark] Data Analytics with Spark using Python - 기초 함수 (0) 2021.04.06 [Spark] Data Analytics with Spark using Python (0) 2021.03.31 [티스토리 게시글 추천 시스템 만들기] #4 worldCloud 만들기 (0) 2021.03.26 [티스토리 게시글 추천 시스템 만들기] #3 클롤링 데이터 TF-IDF 계산하기 (0) 2021.03.25