次の方法で共有


シナリオ: 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 ログの "Origin" フィールドに IP アドレスが表示される場合もあります。

原因

このエラーは、次の原因で発生する可能性があります。

  • ネットワーク セキュリティ グループ (NSG) ルールを構成して、クラスターへのアクセスを制限している場合。 NSG ルールでアクセスを制限しても、クラスター名ではなく IP アドレスを使って、Apache Ambari および他のサービスに直接アクセスすることができます。 ただし、Jupyter にアクセスすると、404 "Not Found" エラーが表示されることがあります。

  • HDInsight ゲートウェイに、標準の xxx.azurehdinsight.net ではなくカスタマイズした DNS 名を指定した場合。

解決方法

  1. 次の 2 つの場所の 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 のサポート プランを通して提供されます。