2013年10月15日 星期二

Hadoop cluster 檔案系統

Hadoop兩個主要功能區塊之一,就是分散式檔案系統--HDFS
目前網路上找到的安裝文件,也鮮少提到HDFS設定...

沒有特別設定HDFS的話,那麼預設的儲存位置會是在系統的/tmp暫存目錄下。
如果你的HDFS只想要用來存放分散式計算的暫存資料,那還可以,
想要真的拿來存放資料,當然不能放在重新開機就可能會被刪除的/tmp內。

要設定HDFS,主要需要調整的是hadoop設定檔中的hdfs-site.xml
比較需要留意的是定值是:
dfs.replication: 每個資料在整個cluster中要有幾份 (有多個DataNode的話就可以設定多份提高可靠度)
dfs.name.dir: NameNode儲存資料的目錄 (存放檔案系統架構)
dfs.data.dir: DataNode儲存資料的目錄 (存放資料實體)

所以我的hdfs-site.xml是這樣設定:
<configuration>
  <property>
    <name>dfs.replication</name>
    <value>1</value>
  </property>
  <property>
    <name>dfs.name.dir</name>
    <value>/home/hadoopop/dfs/name</value>
  </property>
  <property>
    <name>dfs.data.dir</name>
    <value>/home/hadoopop/dfs/data</value>
  </property>
</configuration>
這邊hadoopop是我設定來運作hadoop的使用者,
為了方便管理,每台機器的設定值都一樣,
也就是每個node的HDFS相關資料都會在/home/hadoopop/dfs目錄下。
不同機器如果需要將資料存放在系統上的不同位置,
就使用替身連結的方式將/home/hadoopop/dfs指向實際儲存資料的目錄。
(一樣要注意權限問題)

如果設定好後NameNode的web UI顯示正常(所有DataNode都有起來),
就表示設定沒問題囉。

至於操作這個檔案系統的部份,hadoop題共了一系列的指令:
hadoop fs -(指令) [參數]
例如將檔案放入HDFS、或是自HDFS空間中讀取的指令就是:
hadoop fs -put (本地端檔案路徑) (HDFS端路徑)
hadoop fs -get (HDFS端檔案路徑) (本地端存放路徑)
其他也有如ls、mv、cp、rm等UNIX CLI常用的指令,
整體而言還算好操作。

至於與系統整合的部份,
目前有看到以FUSE(File system in User space,一個常見的open source檔案系統工具)開發的HDFS支援套件。
如果有想要讓HDFS與其他服務或是軟體整合,就有機會用到這樣的套件了。

沒有留言:

張貼留言