안녕하세요..
이번에도 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로 했을 때의 성능.
맨 위의 표와는 다르게 많이 차이가 나는 것을 확인할 수 이따 하하!!
바보같았던 여정 끄읏 ------