最近學習Spark,看了一個視頻,里面有提到啟動spark后,一般都會啟動Spark History Server。視頻里把 spark.history.fs.logDirectory 設置成了Hadoop上一個目錄。配置的是hdfs://ubuntu1:9000/spark 啥的。我原來搭建的Hadoop是HA的,肯定不能這么寫。我心血來潮,把hadoop HA改回了集群模式。這下可好,惡夢開始。啟動Spark History Server,報連不上hadoop,但是我在瀏覽器中是能打開的。開始懷疑是Spark哪里配置錯了,搞了半天,還是連接hadoop時報connection refuse。剛開始學Spark,對它也不熟,所以索性就從簡單點的開始。從最簡單local模式開始。這種模式下,程序運行完,就什么都看不到了,需要啟動Spark History Server,這樣就能查看運行完的程序的信息了。只是Spark History Server還是一直連不上hadoop。郁悶至極,后來才發現我也HA Hadoop改成集群時,在core-site.xml 中配置如下,NNDX,沒有加9000端口號!!!
<property>
<name>fs.defaultFS</name>
<value>hdfs://ubuntu1</value>
</property>
加上端口號后,發現Spark History Server能連上Hadoop了,真TMD高興。可是跑完一個程序后,在Spark History Server的UI界面上還是沒有信息。搞了半天,才發現datanode沒有啟動起來。清了一遍namenode和datanode的目錄,又格式化了一下namenode。Hadoop終於是正確地跑起來了。
崩潰了,Spark History Server的UI界面上,還是啥都沒有。又是半天,才發現是 spark.history.fs.logDirectory 配置錯了,應該和 spark.eventLog.dir 配置成同一個目錄的, 我當時犯賤了一下,沒有配成同一個目錄。改成同一個目錄后,終於把問題解決了。
雖然走了不少彎路,但是在解決問題的過程中,學到了蠻多東西的。