시나리오: Azure HDInsight의 "원본 간 API 차단"으로 인해 Jupyter 서버 404 "찾을 수 없음" 오류가 발생함

이 문서에서는 Azure HDInsight 클러스터에서 Apache Spark 구성 요소를 사용할 때 발생하는 문제 해결 단계와 가능한 문제 해결 방법을 설명합니다.

문제

HDInsight에서 Jupyter 서비스에 액세스하면 "찾을 수 없음"이라는 오류 상자가 표시됩니다. Jupyter 로그를 확인하면 다음과 같은 내용이 표시됩니다.

[W 2018-08-21 17:43:33.352 NotebookApp] 404 PUT /api/contents/PySpark/notebook.ipynb (10.16.0.144) 4504.03ms referer=https://pnhr01hdi-corpdir.msappproxy.net/jupyter/notebooks/PySpark/notebook.ipynb
Blocking Cross Origin API request.  
Origin: https://xxx.xxx.xxx, Host: pnhr01.j101qxjrl4zebmhb0vmhg044xe.ax.internal.cloudapp.net:8001

Jupyter 로그의 "원본" 필드에 IP 주소도 표시될 수 있습니다.

원인

이 오류는 다음과 같은 몇 가지 원인으로 인해 발생할 수 있습니다.

  • 클러스터에 대한 액세스를 제한하는 NSG(네트워크 보안 그룹) 규칙을 구성한 경우 NSG 규칙을 사용하여 액세스를 제한하면 클러스터 이름 대신 IP 주소를 사용하여 Apache Ambari 및 기타 서비스에 직접 액세스할 수 있습니다. 그러나 Jupyter에 액세스할 때 404 "찾을 수 없음" 오류가 표시될 수 있습니다.

  • HDInsight 게이트웨이에 표준 xxx.azurehdinsight.net 이외의 사용자 지정된 DNS 이름을 지정한 경우

해결 방법

  1. 다음 두 위치에서 jupyter.py 파일을 수정합니다.

    /var/lib/ambari-server/resources/common-services/JUPYTER/1.0.0/package/scripts/jupyter.py
    /var/lib/ambari-agent/cache/common-services/JUPYTER/1.0.0/package/scripts/jupyter.py
    
  2. NotebookApp.allow_origin='\"https://{2}.{3}\"' 줄을 찾은 다음, NotebookApp.allow_origin='\"*\"'으로 변경합니다.

  3. Ambari에서 Jupyter 서비스를 다시 시작합니다.

  4. 명령 프롬프트에서 ps aux | grep jupyter를 입력하면 모든 URL에서 연결할 수 있는 것으로 표시됩니다.

이 방식은 이미 지정한 설정보다 덜 안전합니다. 그러나 클러스터에 대한 액세스가 제한되는 것으로 간주되며, NSG가 이미 있으므로 외부에서 클러스터에 연결할 수 있습니다.

다음 단계

문제가 표시되지 않거나 문제를 해결할 수 없는 경우 다음 채널 중 하나를 방문하여 추가 지원을 받으세요.

  • Azure 커뮤니티 지원을 통해 Azure 전문가로부터 답변을 얻습니다.

  • 고객 환경을 개선하기 위한 공식 Microsoft Azure 계정인 @AzureSupport와 연결합니다. Azure 커뮤니티를 적절한 리소스(답변, 지원 및 전문가)에 연결합니다.

  • 도움이 더 필요한 경우 Azure Portal에서 지원 요청을 제출할 수 있습니다. 메뉴 모음에서 지원을 선택하거나 도움말 + 지원 허브를 엽니다. 자세한 내용은 Azure 지원 요청을 만드는 방법을 참조하세요. 구독 관리 및 청구 지원에 대한 액세스는 Microsoft Azure 구독에 포함되며 Azure 지원 플랜 중 하나를 통해 기술 지원이 제공됩니다.