大資料求索(1):HDFS安裝指南
大資料求索(1):HDFS安裝指南
背景
HDFS是分散式檔案系統,是Hadoop的基礎,本章主要介紹如何安裝HDFS。
環境引數
- centos 6.5
- hadoop2.6.0-cdh5.7.0
- jdk8
偽分散式安裝
一、JDK安裝
-
解壓並輸出到app目錄下 tar -zxvf xxx.tar.gz -C ~/app
-
新增到系統環境變數
vim ~/.bash_profile export JAVA_HOME=/home/wds/jdk8 export PATH=$JAVA_HOME:$PATH
-
使得環境變數生效 source ~/.bash_profile
-
驗證java是否配置成功 java -v
二、安裝SSH並配置免密登入
因為實在centos下,所以安裝命令如下:
sudo yum install ssh
sudo yum install rsync
ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa
cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys
然後使用ssh localhost檢查能否免密登入。如果成功會連線到自己,使用exit退出即可。
三、下載Hadoop
這裡推薦使用cdh版本,具體這個版本和官方版本的區別,可以自己查閱資料,一般推薦使用cdh版本。
下載地址為:https://archive.cloudera.com/cdh5/cdh/5/,然後搜尋hadoop2.6.0-cdh5.7.0,如下圖所示
注意這裡應該下載hadoop-2.6.0-cdh5.7.0.tar.gz,而不是帶src的。
下載完成後解壓 tar -zxvf hadoop-2.6.0-cdh5.7.0.tar.gz -C ~/app
四、hadoop配置檔案的修改
因為是單機版,即偽分散式,所以這裡只需要配置三個檔案
etc/hadoop/hadoop-env.sh(大概25行)
註釋掉原來的JAVA_HOME,改為自己系統下的目錄,如下圖所示:
etc/hadoop/core-site.xml:
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://主機名:8020</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/home/stu/app/tmp</value>
</property>
</configuration>
說明:
fs.defaultFS : 預設檔案系統的名稱 ,uri用來確定主機、埠等
dfs.name.dir : 用於確定HDFS檔案系統的元資訊儲存在說明目錄下,預設的是儲存在linux系統的/tmp目錄下,但是每次重啟系統後資料會被清除,所以這裡自己配置一個新的目錄
etc/hadoop/hdfs-site.xml:
<configuration>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
</configuration>
說明:
dfs.replication : 用於指定備份的數量,預設是3份,因為這裡是偽分散式,所以改為1
為了方便命令列操作,配置hadoop環境變數
vim ~/.bash_profile
export Hadoop_HOME=/home/wds/app/hadoop
export PATH=$Hadoop_HOME:$PATH
這樣在linux shell裡直接輸入hadoop可以看到有命令提示,如下圖所示
到這裡,配置基本完成。
五、啟動HDFS
1) 第一次啟動的時候,需要先進行格式化操作
bin/hdfs namenode -format
2)啟動
sbin/start-dfs.sh
啟動日誌如下
- 驗證啟動是否成功
-
JPS命令
-
瀏覽器訪問,在瀏覽器裡輸入https://ip:50070
瀏覽器裡有很多方便的視覺化操作,非常方便
六、遇到的問題解決
1) 瀏覽器訪問打不開
可能的原因:
-
沒有格式化檔案系統
-
沒有配置JAVA_HOME
-
防火牆沒有關閉(或者配置規則)
-
檢視本地埠,netstat -ant,檢視埠50070是否已經開放
-
檢視本地埠,如果50070前面ip是127.0.0.1(預設繫結),會造成迴環,改成0.0.0.0或者本機ip,具體做法是修改/etc/hosts檔案,刪除多餘檔案並新增一行 ip 主機名
或者在hdfs-site.xml檔案修改
<property> <name>dfs.http.address</name> <value>0.0.0.0:50070</value> </property>
2) datanode結點無法啟動
如果在第一次格式化檔案系統以後又格式化了一次,會造成這種情況,主要原因是datanode的clusterID 和 namenode的clusterID 不匹配。當我們執行檔案系統格式化時,會在namenode資料資料夾(即配置檔案中dfs.name.dir在本地系統的路徑)中儲存一個current/VERSION檔案,記錄namespaceID,標誌了所有格式化的namenode版本。如果我們頻繁的格式化namenode,那麼datanode中儲存(即dfs.data.dir在本地系統的路徑)的current/VERSION檔案只是你地第一次格式化時儲存的namenode的ID,因此就會造成namenode和datanode之間的ID不一致。
解決方法一:(推薦)
刪除DataNode的所有資料及將叢集中每個datanode節點的/dfs/data/current中的VERSION刪除,然後重新執行hadoop namenode -format進行格式化,重啟叢集,錯誤消失。
解決方法二:
將name/current下的VERSION中的clusterID複製到data/current下的VERSION中,覆蓋掉原來的clusterID
然後重啟即可。