ERROR!

[Spark] GCP에서 Hibench로 Spark 벤치마킹하기

짱 센 2023. 10. 16. 23:32

안녕하세요..

이번에도 3주간 끙끙대던 오류를 정말 정말 어이없게 해결하여 공유하려 합니다..

도움이 되었으면 좋겠습니다..

 

- Spark 벤치마킹 툴인 Hibench를 GCP에 연동하여 사용하려고 함.

- Hibench는 대용량 데이터를 위한 벤치마킹 툴로 생각하면 됨.

- 여기서 생긴 오류는 아무리 Hibench github readme에 적혀져있는 방식대로 config를 수정하여도,

spark 자체에 적용이 되지 않아 metric이 똑같이 나왔음.

 

 

GCP에서 Hibench 연동하는 것까지 설명하기에는 너무 길어질 것 같으니 간단하게 오류와 어떻게 해결했는지만 작성해보려고 한다.

 

일단 root에서

cd Hibench/bin/workloads/micro/wordcount/prepare/prepare.sh : 데이터로드

cd Hibench/bin/workloads/micro/wordcount/spark/run.sh : Hibench run

실행하는 방법이다.

 

벤치마킹 후에 metric 값은 

cd Hibench

vim report/hibench.report 에서 볼 수 있당

 

prepare 할 때는 오류가 잘 나지 않고 run 할 때 오류 로그는 여기서 볼 수 있다

cd HiBench/report/wordcount/spark/

vim bench.log

 

자 그리고 Hibench github에서는 https://github.com/Intel-bigdata/HiBench/blob/master/docs/run-sparkbench.md

conf.spark.conf.template을 복사한 후에 edit 하라고 한다..

근데 안돼@!! 적용이 안된다고!!!

그래서 .. 개고생했다ㅠ

지금 위 사진이 모든 knob 값을 min으로 했을 때, max로 했을 때, random으로 뽑았을 때를 다 run해보았을 때인데 .. 다 성능이 똑같다.. 이건 config를 바꿨음에도 적용이 되지 않았다는 것,,

이 부분에 대해서 주간보고 때 교수님께 말씀드렸고 교수님께서는 Hibench input data size가 너무 작아서 그런거일수도 있으니 data size를 바꿔서 해보라고 하셨다.. 넵...^__^!!

 

데이터사이즈 바꾸는 법도 간단하다.

cd Hibench/conf/

vim hibench.conf 이 경로로 들어가보면 hibench.scale.profile 이라는 flag가 있다. 이 부분을 변경해주면 된다.

 

이렇게 데이터사이즈를 tiny. small. large, huge로 해봤지만...^^ 변화는 없었음

같은 데이터사이즈와 데이터로 여러번 run 해보았을 때 결과가 어떤지 확인해보고자..

/HiBench/report/wordcount/spark/conf/sparkbench/spark.conf

 

이 때부터 고통이 시작됐구,, 

해 결 방 안

그래서 해결방안은..

이것저것 찾아보니가 원래 spark config 설정을 바꾸는 경로는 ./bin/spark-submit/ 밑이라고 한다.

spark-submit에 설정값들을 수정하는 것 같음. 직접 config 하나하나 수정할 때는 --conf <key>-<value> 이런식으로,,

이렇게!

다만 --conf ~ 대신에 --properties-file 로 파일 경로를 지정하여 그 파일 밑에 있는 config 파일을 갖다가 적용시킬 수 있는거같았다.

그래서 우리 서버에서 run.sh 했을 때 뜨는 경로를 자세히 보니..

우리꺼에서는 따닥따닥 붙어나와서 잘 못봤던거같은데 정리하자니 이렇다.

허허 그러니까.. 저 ~/report/wordcount/spark/conf/sparkbench/spark.conf 가 분명 분명 Hibench 깃허브에는!!!! 그냥!!!! view the report 부분에 있어서 .. 대충봤는데 .. (는 내잘못)

저 경로 밑에 있는 설정값을 가져와서 적용시키는거였다^^ 이런 ㅎ

 

그리고 spark.conf를 바꿨을 때 자동으로 저 파일로 바뀌고 성능 측정이 되어야됐는데 ㅎ 그게 안됐던 이유는

spark.conf 형식에 맞지 않게 파일을 수정한거같다.. 허허허..ㅋㅋ...;;

{knob_name}={knob_value} 이렇게 따닥따닥 스페이스없이 써야된다;;진짜 어이가 없죠!

참고로 true, false는 대문자 상관없는듯,,

그리고 뒤에 단위가 필요한  knob은 단위를 써줘야한다..

Knob 설정하는 형식을 잘 보자...

그리고 중요하지 않다고 섣부르게 생각하지말자....

그것이 이번 오류의 해결방법이다 ㅎ,,,

짠 이것은 knob value를 default로 했을 때, min value, max value, random value로 했을 때의 성능.

맨 위의 표와는 다르게 많이 차이가 나는 것을 확인할 수 이따 하하!!

 

바보같았던 여정 끄읏 ------