Azure Toolkit for IntelliJ로 오류 Spark 작업 디버깅(미리 보기)
이 문서에서는 Azure Toolkit for IntelliJ의 HDInsight 도구를 사용하여 Spark Failure Debug 애플리케이션을 실행하는 방법에 대한 단계별 지침을 제공합니다.
필수 조건
Oracle Java Development 키트. 이 자습서에서는 Java 버전 8.0.202를 사용합니다.
IntelliJ IDEA. 이 문서에서는 IntelliJ IDEA 커뮤니티 2019.1.3을 사용합니다.
Azure Toolkit for IntelliJ. Azure Toolkit for IntelliJ 설치를 참조하세요.
HDInsight 클러스터에 연결합니다. HDInsight 클러스터 연결을 참조하세요.
Microsoft Azure Storage Explorer. Microsoft Azure Storage Explorer 다운로드를 참조하세요.
디버깅 템플릿으로 프로젝트 만들기
spark2.3.2 프로젝트를 만들어 실패를 계속 디버깅하고, 이 문서의 실패 작업 디버깅 샘플 파일을 가져옵니다.
IntelliJ IDEA를 엽니다. 새 프로젝트 창을 엽니다.
a. 왼쪽 창에서 Azure Spark/HDInsight를 선택합니다.
b. 기본 창에서 오류 작업 디버깅 샘플이 있는 Spark 프로젝트(미리 보기)(Scala)를 선택합니다.
c. 다음을 선택합니다.
새 프로젝트 창에서 다음 단계를 수행합니다.
a. 프로젝트 이름과 프로젝트 위치를 입력합니다.
b. Project SDK 드롭다운 목록에서 Spark 2.3.2 클러스터용 Java 1.8을 선택합니다.
c. Spark 버전 드롭다운 목록에서 Spark 2.3.2(Scala 2.11.8)를 선택합니다.
d. 마침을 선택합니다.
src>main>scala를 선택하여 프로젝트에서 코드를 엽니다. 이 예에서는 AgeMean_Div() 스크립트를 사용합니다.
HDInsight 클러스터에서 Spark Scala/Java 애플리케이션 실행
Spark Scala/Java 애플리케이션을 만든 후 다음 단계를 수행하여 Spark 클러스터에서 애플리케이션을 실행합니다.
구성 추가를 클릭하여 실행/디버그 구성 창을 엽니다.
실행/디버깅 구성 대화 상자에서 더하기 기호(+)를 선택합니다. 다음으로 HDInsight의 Apache Spark 옵션을 선택합니다.
클러스터에서 원격으로 실행 탭으로 전환합니다. 이름, Spark 클러스터, 주 클래스 이름에 정보를 입력합니다. 이 도구는 실행기를 사용하여 디버그를 지원합니다. numExecutors의 기본값은 5이며 3보다 높게 설정하지 않는 것이 좋습니다. 작업 구성에 spark.yarn.maxAppAttempts를 추가하고 값을 1로 설정하면 런타임을 줄일 수 있습니다. 확인 단추를 클릭하여 구성을 저장합니다.
이제 사용자가 입력한 이름으로 구성이 저장됩니다. 구성 세부 정보를 보려면 구성 이름을 선택합니다. 변경하려면 구성 편집을 선택합니다.
구성 설정을 완료한 후에 원격 클러스터에 대해 프로젝트를 실행할 수 있습니다.
출력 창에서 애플리케이션 ID를 확인할 수 있습니다.
실패한 작업 프로필 다운로드
작업 제출에 실패한 경우 추가 디버깅을 위해 실패한 작업 프로필을 로컬 컴퓨터에 다운로드할 수 있습니다.
Microsoft Azure Storage Explorer를 열어 실패한 작업에 대한 HDInsight 클러스터 계정을 찾고 해당하는 위치인 \hdp\spark2-events\.spark-failures\<application ID>에서 실패한 작업 리소스를 로컬 폴더에 다운로드합니다. 활동 창에는 다운로드 진행률이 표시됩니다.
로컬 디버깅 환경 구성 및 실패 시 디버그
원래 프로젝트를 열거나 새 프로젝트를 만들고, 원래 소스 코드와 연결합니다. 현재 실패 디버깅에는 spark2.3.2 버전만 지원됩니다.
IntelliJ 아이디어에서 Spark Failure Debug 구성 파일을 만들고 Spark 작업 실패 컨텍스트 위치 필드에 대해 이전에 다운로드한 실패한 작업 리소스에서 FTD 파일을 선택합니다.
도구 모음에서 로컬 실행 단추를 클릭하면 실행 창에 오류가 표시됩니다.
로그에서 나타나는 중단점을 설정하고 로컬 디버그 단추를 클릭하여 IntelliJ의 일반 Scala/Java 프로젝트와 마찬가지로 로컬 디버깅을 수행합니다.
디버깅 후 프로젝트가 성공적으로 완료되면 HDInsight 클러스터의 Spark에 실패한 작업을 다시 제출할 수 있습니다.
다음 단계
시나리오
- BI와 Apache Spark: BI 도구와 함께 HDInsight의 Spark를 사용하여 대화형 데이터 분석 수행
- Machine Learning과 Apache Spark: HVAC 데이터를 사용하여 건물 온도를 분석하는 데 HDInsight의 Spark 사용
- Machine Learning과 Apache Spark: HDInsight의 Spark를 사용하여 식품 검사 결과 예측
- HDInsight의 Apache Spark를 사용한 웹 사이트 로그 분석
애플리케이션 만들기 및 실행
도구 및 확장
- Azure Toolkit for IntelliJ를 사용하여 HDInsight 클러스터용 Apache Spark 애플리케이션 만들기
- Azure Toolkit for IntelliJ를 사용하여 VPN을 통해 원격으로 Apache Spark 애플리케이션 디버그
- Azure Toolkit for Eclipse의 HDInsight 도구를 사용하여 Apache Spark 애플리케이션 만들기
- HDInsight에서 Apache Spark 클러스터와 함께 Apache Zeppelin Notebook 사용
- HDInsight의 Apache Spark 클러스터에서 Jupyter Notebook에 사용할 수 있는 커널
- Jupyter Notebook에서 외부 패키지 사용
- 컴퓨터에 Jupyter를 설치하고 HDInsight Spark 클러스터에 연결