Hadoop及spark叢集搭建踩過的坑
本叢集總共有三臺主機,一臺master,兩臺slave
-
Hadoop有一個節點無法啟動
在按照教程子雨大資料之Spark入門教程(Python版)搭建Hadoop叢集時,執行jps命令,發現master和其中一個slave能正常工作,執行./bin/yarn node -list發現只有一個alive節點
再次申明:本文只是針對搭建叢集中有一個節點無法啟動,而不是所有的節點
進一步觀察,發現執行jps命令後,未啟動節點的nodemanager不能正常啟動
根據網上相關的建議在datanode上檢視log檔案(檔案會在啟動Hadoop叢集時顯示其所在目錄),發現datanode連線不到主機,進一步檢視其連線的主機IP地址,發現同伴將主機IP地址寫錯了\吐血
將host檔案主機的IP地址改正後,重啟即可正常執行
-
Incompatible clusterIDs in /usr/local/hadoop/tmp/dfs/data
這個錯誤出現了兩次
第一次是同伴在第一次執行hadoop時,根據上述教程運行了bin/hdfs namenode -format這個命令
還有一次是另一個同伴將從節點關機重啟後,master的clusterID就和slaves的不一樣了。
解決方式有兩種:
第一種:把配置檔案hdfs.site.xml中dfs.datanode.data.dir在本地系統的路徑下的current/VERSION(一般$HADOOP/tmp/dfs/data/current資料夾下)中的clusterID改為與namenode一樣。重啟即可!
第二種:重灌一遍hadoop叢集,刪除tmp和log資料夾後重新向slaves節點發送一遍hadoop資料夾
注意:這會刪除HDFS中原有的所有資料,慎重使用
-
Exception: Python in worker has different version 3.4 than that in driver 3.5, PySpark cannot run with different minor versions.Please check environment variables PYSPARK_PYTHON and PYSPARK_DRIVER_PYTHON are correctly set
問題原因:如上圖所示,spark會在每個worker節點上執行python程式,所以要保證每個worker節點上python版本一致
解決方式:
import os
os.environ["PYSPARK_PYTHON"] = /usr/bin/python3.5
-
there appears to be a gap in the edit log. we expected txitd 1, but got txid 2070
根據網上經驗來看,最後那串數字有很多種,但是感覺應該都能用同一種方法
原因:namenode元資料被破壞,需要修復
恢復一下namenode
hadoop namenode –recover 先選擇Y,再選擇c,然後再重啟一遍hadoop