1. 程式人生 > ># Hadoop安裝(偽分散式)常見問題解決及Hadoop常用命令

# Hadoop安裝(偽分散式)常見問題解決及Hadoop常用命令

Hadoop安裝常見問題

一、許可權不足問題

對於hadoop安裝檔案的許可權不足會出現以下的錯誤

錯誤:Cannot create directory /usr/local/hadoop/hadoop-2.8.3/tmp/dfs/name/current

解決方法:sudo chmod -R a+w /usr/local/hadoop/hadoop-2.8.3

給與這個安裝資料夾充足的許可權,允許在這個安裝資料夾下面建立檔案

二、非法反射問題

錯誤:An illegal reflective access operation has occurred

解決方法:配置JAVA環境變數的時候,JDK 9以上版本對於第一次反射都有警告,安裝jdk9以下的版本就不會有了,建議安裝jdk8,本人用得就是這個版本

什麼是JDK反射

JAVA反射機制是在執行狀態中,對於任意一個實體類,都能夠知道這個類的所有屬性和方法;對於任意一個物件,都能夠呼叫它的任意方法和屬性;這種動態獲取資訊以及動態呼叫物件方法的功能稱為java語言的反射機制。

三、沒有資料夾

錯誤:輸入hdfs dfs -ls / 顯示沒有資料夾

解決方法:建立主目錄hdfs dfs -mkdir -p /user/hadoop

四、hadoop啟動之後輸入jps沒有看到DataNode的問題

原因:一般由於多次格式化NameNode導致。在配置檔案中儲存的是第一次格式化時儲存的namenode的ID,因此就會造成datanode與namenode之間的id不一致。

解決方法:

方法一

1 cd hadoop/logs/----dataNode–.logs
2 找到並複製這個namenode clusterID
3 找到hdfs-site.xml,開啟並獲取data目錄所在位置(cd /temp/dfs/data)
4 將VERSION檔案裡面的clusterID改成找到的哪一個

方法二(有時候沒用)

我感覺這樣不是很暢快解決問題,
所以直接/home/hadoop/hadoop-2.4.1/tmp/dfs/data/current
下面的VERSION刪除了,
然後再執行一下又重新執行了格式化命令(hdfs namenode -format),
最後啟動start-dfs.sh和start-yarn.sh就可以了;

方法三 方法二無效並且在VERSION資料夾被刪除的情況下

1、在叢集/usr/local/src/hadoop/bin目錄下./start-all.sh暫停所有服務
2、將/usr/local/src/hadoop/目錄下的 logs、tmp資料夾刪除(DataNode存放資料塊的位置) 然後重新建立tmp logs資料夾
3、重新格式化: (同樣是在bin目錄下)./hadoop namenode -format
4、重新啟動叢集:./start-all.sh
5、通過jps檢視程序 就好了

Hadoop常用命令

1、hdfs系統需要建立主目錄 hdfs dfs -mkdir -p /user/hadoop
2、檢視主目錄下的檔案 hdfs dfs -ls 檢視主目錄 hdfs dfs -ls /
3、 檢視主目錄下目錄中的檔案 hdfs dfs -ls examples
4、檢視檔案內容 hdfs dfs -cat Test1
5、建立以及刪除目錄 hdfs dfs -mkdir 目錄 ; hdfs dfs -rm -r 目錄
6、 上傳檔案到hdfs系統 hdfs dfs -put test1 TestFirst
下載檔案到系統 hdfs dfs -get TestFirst test1
7、複製本地檔案到hdfs系統
hdfs dfs -copyFromLocal 本地檔案路徑 hdfs路徑
8、 將hdfs系統的檔案合併並儲存在本地山
hdfs dfs -getmerge hdfs檔名 本地檔名
9、開啟安全模式 hdfs dfsadmin -safemode enter
關閉安全模式 hdfs dfsadmin -safemode leave
安全模式下hdfs裡面的檔案不可被修改
10、 檢視hdfs基本統計資訊 hdfs dfsadmin -report
11、 負載均衡 ./start-balancer.sh

知識點

1 、tmp目錄儲存的是dataNode節點的資料
2、 hdfs namenode -format 每一次都會將nameNode進行格式化,也就是清空nameNode裡面的元資料,但是不會刪除dataNode裡面的資料
3 、hadoop fs 已經過時,要用hdfs dfs
4、偽分散式能否新增加dataNode節點?
如果你之前是偽分散式的話,這個datanode節點可不能還是在這一臺機器上,一臺機器只能設定一個datanode。 新增一個datanode節點在salves檔案下新增上這個節點的ip或者主機名,然後到新加的datanode主機下啟動datanode程序就可以了。
增加dataNode節點的教程
連結:link.