大數據環境與docker
在使用CDH構建在k8s上的時候遇到了異常困難的問題,其檢查機制會將解析主機的IP作為目標容器的IP,導致兩者無法正常安裝部署,只能放棄已經做好的容器鏡像,之后在不斷的尋找中終於到了可以達到預期目標的方法。
首先是找到了Spark的兩個容器鏡像:
https://hub.docker.com/r/bde2020/spark-master
https://hub.docker.com/r/gettyimages/spark
其中big-data-europe/docker-spark已經可以直接部署在k8s上面,但我們想要構建大數據的環境僅僅有spark是不足的,但深入了解后,發現big-data-europe中已經有許多已經被制作好的容器,僅需組合就可以很方便的使用。
使用方法在頁面也很詳細,構建文件也在github中,只需要對幾個腳本文件進行了解,即可清楚整體的構建流程,也能很方便的組合自己的環境。其中所有鏡像在https://hub.docker.com/u/bde2020。
大數據組件的融合
我組合環境的時候使用的是gettyimages/docker-spark與big-data-europe的Hadoop、Hive、HBase,其次還自己做了一個包含Sqoop工具的datanode節點。
這套構建方法目前來看已經已經可以承擔目標預期的任務,在構建過程中也遇到了很多障礙:
1. 其中spark鏡像中包含的jars包遠比標准版本的要少,需要手動放入hive等包,為了避免缺少,需要將相應版本的jar包全部放入;
2. 版本問題,各組件之間的版本需要匹配;
3. spark中的spark的conf目錄可以與hive的hive-site.xml建立聯系,方便互通,同時也需要做一些調整;
4. env文件僅需合並,並調整方可。
大數據環境從docker到k8s
然后是從docker-compose文件開始構建k8s文件,這個主要是在同事的幫助下,需要注意以下幾個問題:
1. 服務需要將幾個關鍵鏡像添加NodePort,端口開放足夠
2. 創建容器的順序問題,開啟的順序差異將導致容器是否能正常啟動,如果啟動失敗,一般rc也將自動重新創建容器,如果還不行則需要手動刪除,rc會自動重構。