2015年8月31日 星期一

[Apache Spark][Docker] 利用Jupyterhub打造隨開即用的spark教學環境--HiveContext設定




Spark在1.3.0之後發佈新的DataFrame,與Hive有更多的結合,預設也會啟動HiveContext,可以直接使用sql指令撈取hive中的資料.一般如果Spark與Hive放在同一個環境,只要將hive的hive-site.xml放到spark路徑/conf下面,就可以直接使用.但是現在當我們的環境放在docker裡面的話,設定上就要動點手腳.
相關文章:
[Apache Spark][Docker] 利用Jupyterhub打造隨開即用的spark教學環境
[Apache Spark][Docker] 利用Jupyterhub打造隨開即用的spark教學環境--HiveContext設定
[Apache Spark][Docker] 利用Jupyterhub打造隨開即用的spark教學環境-- numpy 設定
  • 當hive在本機上設定好後,先從本機上的spark-shell進入試試看hive是否能夠正常運作
    • Show table成功表示有正確與metastore連結
    • Count 成功表示有正確連接到hdfs

  • 今天遇到的狀況是本機上可以使用,但是透過docker一直連不到.原本以為設定好spark的master路徑就可以用,但是還是不行,表示spark的hive設定是吃docker裡面的路徑,並非本機上的hive-site.xml,於是拷貝一份hive-site.xml到docker中的spark/conf目錄下,同時記得要改路徑.


  • 這樣改好之後已經可以show table了
  • 但是在Count Table的時候卻發生問題,顯示與sp1:9000這個port連線失敗
Py4JJavaError: An error occurred while calling o36.showString.
: java.net.ConnectException: Call From 23325b71670b/172.17.0.12 to sp1:9000 failed on connection exception: java.net.ConnectException: Connection refused; For more details see:  http://wiki.apache.org/hadoop/ConnectionRefused
  • 這個port是namenode hdfs的窗口,研判是docker找不到sp1是誰,所以在/etc/hosts中加入了sp1與對應的private ip後,就可以正常運作.
資料來源為痞客邦hachthon資料,資料已經過hash.


這次這個架構和一些設定在網路上都沒有找到直接的範例,都是憑對各個元件和系統的些微了解兜出來的,所以遇到問題的時候也沒啥求助管道XD,算是滿難得的經驗.