Hadoop環境搭建及單機、僞分佈式安裝問題總結(踩坑實錄)

最近上了一門課,叫大數據基礎,這是我第一次沒有在別人的幫助下自己解決了如此多的問題,感謝百度,感謝CSDN,感謝各位大佬寫的博客。我都覺得踩坑大隊隊長非我莫屬了,怎麼會有我這麼笨的人,給我整懵了好了廢話不多說記錄一下我踩的坑。

實驗名稱

  • Hadoop單機配置及僞分佈式安裝

實驗環境

  • 系統環境:Ubuntu 16.04.6
  • JAVA版本:java openjdk 1.8.0_222
  • Hadoop版本:Hadoop 3.2.1

實驗過程

這個教程寫的很好 點擊這裏打開參考教程 除了我自己笨讓我踩了很多坑。

實驗所遇問題

溫馨提示:建議使用hadoop用戶進行實驗,否則可能會和我一樣踩很多坑。

  • 問題1:在解壓Hadoop時出現如下問題,原因是有apt進程在運行
tar (child): /home/hadoop/Downloads/hadoop-x.x.x.tar.gz: Cannot open: No such file or derectory
tar (child):Error is not recoverable: exiting now
tar: Child returned status 2
tar: Error is not recoverable: exiting now

錯誤截圖:
在這裏插入圖片描述

  • 解決辦法:

運行如下命令查看正在進行的進程

ps -A | grep apt

使用如下命令關閉進程

sudo kill -9 number

例如:此處存在進程號爲1142、1160的進程在運行,使用如下命令將其關閉。
在這裏插入圖片描述

  • 問題2:在執行grep例子時報錯JAVA_HOME找不到,但是之前java環境都是配好的,使用“java -version”命令也可以查看到java的版本。
 ERROR: JAVA_HOME is not set and could not be found.

錯誤截圖:
在這裏插入圖片描述

  • 解決辦法:
sudo vim hadoop/etc/hadoop/hadoop-env.sh

使用上述語句修改 修改“hdoop-env.sh”文件中的

# export JAVA_HOME=

這一行爲

# export JAVA_HOME=/usr/lib/jvm/default-java

並且添加

 export JAVA_HOME=/usr/lib/jvm/default-java

(什麼?找不到jdk的路徑→echo &JAVA_HOME

實際修改如下:
在這裏插入圖片描述

  • 問題3:啓動dfs時報錯
Starting namenodes on [localhost]
ERROR: Attempting to operate on hdfs namenode as root
ERROR: but there is no HDFS_NAMENODE_USER defined. Aborting operation.
Starting datanodes
ERROR: Attempting to operate on hdfs datanode as root
ERROR: but there is no HDFS_DATANODE_USER defined. Aborting operation.
Starting secondary namenodes [slave1]
ERROR: Attempting to operate on hdfs secondarynamenode as root
ERROR: but there is no HDFS_SECONDARYNAMENODE_USER defined. Aborting operation.

錯誤截圖:
在這裏插入圖片描述

  • 解決辦法:

如果不是用Hadoop啓動的話,需將root改爲對應用戶

以下是Hadoop3.2.1版本解決辦法,如果你是Hadoop2.x.x版本請參考這裏點我點我
在/hadoop/sbin路徑下,將start-dfs.sh,stop-dfs.sh兩個文件頂部添加以下參數:

#!/usr/bin/env bash
HDFS_DATANODE_USER=root
HDFS_DATANODE_SECURE_USER=hdfs  
HDFS_NAMENODE_USER=root
HDFS_SECONDARYNAMENODE_USER=root

start-yarn.sh,stop-yarn.sh頂部也需添加以下參數:

#!/usr/bin/env bash
YARN_RESOURCEMANAGER_USER=root
HADOOP_SECURE_DN_USER=yarn
YARN_NODEMANAGER_USER=root

修改後重啓即可解決。

  • 問題4:以爲上面那個問題解決了,重新啓動dfs就沒問題了,結果又報錯了
...
Starting namenodes on [localhost]
localhost: ERROR: Unable to write in /usr/local/hadoop/logs. Aborting.
Starting datanodes
localhost: ERROR: Unable to write in /usr/local/hadoop/logs. Aborting.
...

錯誤截圖:在這裏插入圖片描述

  • 解決辦法:
    此處Warning是由於問題3中新舊版本hadoop參數不對應造成的,後續已解決,可無視。
    出現Unable to write問題的原因是因爲寫入權限不夠,因此需將權限給對應的文件夾
    執行如下代碼:
sudo chmod -R 777 /usr/local/hadoop/logs

實際運行如下:
在這裏插入圖片描述

  • 問題5:我以爲上面那個問題解決了,就真的沒有問題了,結果給了權限以後又出現了Permission denied的問題。
...
 Starting namenodes on [localhost]
 localhost: Permission denied (publickey,password)
 Starting datanodes
 localhost: Permission denied (publickey,password)
 ...

錯誤截圖:
在這裏插入圖片描述

  • 解決辦法:
    重新格式化節點,報錯,重新配置ssh還是報錯,在Permission denied一下午了之後我思考了一下到底是什麼原因,此處總結爲用戶yubei沒有對hadoop的操作權限,所以我是開錯了賬號,爲了避免出現更多問題,我選擇了最笨的辦法→重新安裝了虛擬機重做。(其實上面問題3中有一步需要修改root爲實際調用用戶yubei,嘗試了一下沒有成功,所以選擇重來,如果是用hadoop用戶不會有此問題)

在重新安裝虛擬機使用Hadoop用戶進行實驗後,實驗變得順暢了很多,遇到相同的問題都通過上面的辦法解決了,接下來遇到一個新的問題。

  • 問題6:http://localhost:50070 端口錯誤打不開
  • 解決辦法:教程中的版本爲Hadoop 2.x.x,我的版本是Hadoop 3.x.x,端口不同所以對不上。將端口修改爲9870即可解決。即打開 http://localhost:9870
    在這裏插入圖片描述

實驗結果

  • 單機配置運行實例grep結果如下:
    在這裏插入圖片描述
  • 僞分佈式配置運行實例WordCount結果如下(部分截圖):
    在這裏插入圖片描述

實驗心得

需要補一下Linux基礎操作語句,遇到問題先百度 不要着急,靜下心來你一定可以解決的。糾錯QQ2533285193

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章