Hadoop的運行方式是由配置文件決定的(運行Hadoop時會讀取配置文件),因此如果需要從偽分布式模式切換回非分布式模式,需要刪除coresite.xml 中的配置項。 此外,偽分布式雖然只需要配置 fs.defaultFS 和 dfs.replication 就可以運行(官方教程如此),不過若沒有配置 hadoop.tmp.dir 參數,則默認使 用的臨時目錄為 /tmp/hadoo-hadoop,而這個目錄在重啟時有可能被系統清 理掉,導致必須重新執行format才行。所以我們進行了設置,同時也指定dfs.namenode.name.dir和dfs.datanode.data.dir,否則在接下來的步驟 中可能會出錯。
2、格式化 NameNode
./bin/hdfs namenode -format
成功的話,會看到類似如下信息(首次格式化會有警告,閱讀后可以忽略)
如果提示:
Error:JAVA_HOME is not set and could not be found
可能是沒有配置JAVA_HOME 環境變量
vim ~/.bashrc ? ? #打開hadoop用戶的環境變量,把下邊幾行粘進去
Esc+ZZ保存退出
export JAVA_HOME=/usr/lib/jvm/jdk1.8.0_241
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
export PATH=${JAVA_HOME}/bin:$PATH ? ?
如果還是出現
Error: JAVA_HOME is not set and could not be found.
那么請hadoop的安裝目錄修改配置文件
“/usr/local/hadoop/etc/hadoop/hadoop-env.sh”
在里面找到“export JAVA_HOME=${JAVA_HOME}”這行,然后,把它修改成 JAVA 安裝路徑的具體地址,比如“export JAVA_HOME=/usr/lib/jvm/default-java”,然后,再次啟動 Hadoop。
3. 開啟 2 個守護進程(NameNode 和 DataNode)
這一步常見錯誤:
? ? (1)如果提示“public/private ……denied”的信息,表示“ssh 免密登錄”設置失敗,請重 新設置。
? ? (2) 啟動 Hadoop 時提示 Could not resolve hostname 。 如果啟動Hadoop 時遇到輸 出非常多“ssh:Could not resolve hostname xxx”的異常情況,這個并不是 ssh 的問題,可通過設置 Hadoop環境變量來解決。
? ? 首先按鍵盤的 ctrl + c 中斷啟動,然后在 ~/.bashrc 中, 增加如下兩行內容(設置過程與 JAVA_HOME環境變量一樣,其中 HADOOP_HOME 為 Hadoop 的安裝目錄):
export ?HADOOP_HOME=/usr/local/hadoop?
export ?HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native
保存后,務必執行:
? source ~/.bashrc ? ? #使變量生效
? ./sbin/start-dfs.sh ? #啟動Hadoop
判斷是否成功啟動
啟動完成后,可以通過命令jps來判斷是否成功啟動,若成功啟動則會列出如下進程:
“NameNode”、”DataNode”和“SecondaryNameNode”
(如果SecondaryNameNode 沒有啟動,請運行 sbin/stop-dfs.sh 關閉進程,然后再次嘗試啟動嘗試)。如果沒有 NameNode 或 DataNode ,那就是配置不成功,請仔細檢查之前步驟,或通過查看啟動日志排查原因。
Hadoop 無法正常啟動的解決方法:
一般可以查看啟動日志來排查原因,注意幾點:
? 啟動時會提示形如
> “DBLab-XMU: starting namenode, logging to
> /usr/local/hadoop/logs/hadoop-hadoop-namenode-DBLab-XMU.out”
其中DBLab-XMU 對應你的機器名,但其實啟動日志信息是記錄在 /usr/local/hadoop/logs/hadoop-hadoop-namenode-DBLab-XMU.log
所以應該查看這個后綴為 .log 的文件;
? 每一次的啟動日志都是追加在日志文件之后,所以得拉到最后面看,對比下記錄的時間就知道了。
? 一般出錯的提示在最后面,通常是寫著 Fatal、Error、Warning或者Java Exception 的地方。
? 可以在網上搜索一下出錯信息,看能否找到一些相關的解決方法。
此外,若是 DataNode 沒有啟動,可嘗試如下的方法(注意這會刪除 HDFS 中 原有的所有數據,如果原有的數據很重要請不要這樣做):
針對 DataNode 沒法啟動的解決方法
cd /usr/local/hadoop ? ? ? ? ?#切換目錄
./sbin/stop-dfs.sh ? ? ? ? ? ?# 關閉
rm -r ./tmp ? ? ? ? ? ? ? ? ? # 刪除 tmp 文件,注意這會刪除 HDFS 中原有的所有數據?
./bin/hdfs namenode -format ? # 重新格式化 NameNode?
./sbin/start-dfs.sh ? ? ? ? ? # 重啟?
?
?
?
?