はじめに
macで brew install apache-spark
でインストールした後、諸々のPATHを通した後に、spark-shell
を実行したら、java.net.UnknownHostExceptionが起きて起動しない症状が出ました。
エラーメッセージ
java.net.UnknownHostException: user-MacBook-Pro-2.local: user-MacBook-Pro-2.local: nodename nor servname provided, or not known
at java.net.InetAddress.getLocalHost(InetAddress.java:1475)
at org.apache.spark.util.Utils$.findLocalInetAddress(Utils.scala:870)
at org.apache.spark.util.Utils$.org$apache$spark$util$Utils$$localIpAddress$lzycompute(Utils.scala:863)
at org.apache.spark.util.Utils$.org$apache$spark$util$Utils$$localIpAddress(Utils.scala:863)
at org.apache.spark.util.Utils$$anonfun$localHostName$1.apply(Utils.scala:920)
at org.apache.spark.util.Utils$$anonfun$localHostName$1.apply(Utils.scala:920)
at scala.Option.getOrElse(Option.scala:121)
at org.apache.spark.util.Utils$.localHostName(Utils.scala:920)
at org.apache.spark.internal.config.package$.<init>(package.scala:189)
at org.apache.spark.internal.config.package$.<clinit>(package.scala)
at org.apache.spark.SparkContext.<init>(SparkContext.scala:397)
at org.apache.spark.SparkContext$.getOrCreate(SparkContext.scala:2320)
at org.apache.spark.sql.SparkSession$Builder$$anonfun$6.apply(SparkSession.scala:868)
at org.apache.spark.sql.SparkSession$Builder$$anonfun$6.apply(SparkSession.scala:860)
at scala.Option.getOrElse(Option.scala:121)
at org.apache.spark.sql.SparkSession$Builder.getOrCreate(SparkSession.scala:860)
at org.apache.spark.repl.Main$.createSparkSession(Main.scala:96)
... 47 elided
Caused by: java.net.UnknownHostException: asn-usr-no-MacBook-Pro-2.local: nodename nor servname provided, or not known
at java.net.Inet6AddressImpl.lookupAllHostAddr(Native Method)
at java.net.InetAddress$1.lookupAllHostAddr(InetAddress.java:901)
at java.net.InetAddress.getAddressesFromNameService(InetAddress.java:1295)
at java.net.InetAddress.getLocalHost(InetAddress.java:1471)
原因分析
- Exceptionのメッセージ
上記のエラーメッセージで主な原因であるメッセージ行を取得しました
java.net.UnknownHostException: user-MacBook-Pro-2.local: user-MacBook-Pro-2.local: nodename nor servname provided, or not known
これは、実行時に実行したMacの端末のuser-MacBook-Pro-2.local
というというホスト名が見つからないという意味合いだと解釈しました。
対策
ホスト名が解決できない問題に対して、対策を実施致します。
HOSTファイルへのドメイン名の登録
hostsファイルを編集し、ホスト名を登録します。
- VIエディタ などで hosts ファイルを編集します
sudo vi /etc/hosts
- 最終行にIPアドレスとホスト名の対応関係を追記します
Exceptionが出た、ホスト名は自分自身のマシンなので、ローカルIPアドレス(127.0.0.1)とホスト名の対応関係を記入します。
127.0.0.1 user-MacBook-Pro-2.local
「IPアドレス」 「ホスト名」という書式です。