1. 程式人生 > >大資料求索(1):HDFS安裝指南

大資料求索(1):HDFS安裝指南

大資料求索(1):HDFS安裝指南

背景

HDFS是分散式檔案系統,是Hadoop的基礎,本章主要介紹如何安裝HDFS。

環境引數

  • centos 6.5
  • hadoop2.6.0-cdh5.7.0
  • jdk8

偽分散式安裝

一、JDK安裝

二、安裝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,如下圖所示

hdfs-1

注意這裡應該下載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,改為自己系統下的目錄,如下圖所示:

hdfs-2

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-3

到這裡,配置基本完成。

五、啟動HDFS

1) 第一次啟動的時候,需要先進行格式化操作

​ bin/hdfs namenode -format

2)啟動

​ sbin/start-dfs.sh

啟動日誌如下

hdfs-4

  1. 驗證啟動是否成功
  • JPS命令

    hdfs-5

  • 瀏覽器訪問,在瀏覽器裡輸入https://ip:50070

    hdfs-6

    瀏覽器裡有很多方便的視覺化操作,非常方便

六、遇到的問題解決

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

然後重啟即可。

七、參考

  1. https://blog.csdn.net/baidu_16757561/article/details/53698746
  2. http://hadoop.apache.org/docs/current/hadoop-project-dist/hadoop-hdfs/HdfsDesign.html