Distributed File SystemKFS源碼編譯與安裝過程

來源:互聯網
上載者:User

Kosmos distributed file system (KFS)是一個專門為資料密集型應用(搜尋引擎,資料採礦等)而設計的儲存系統,類似於Google的GFS和Hadoop的HDFSDistributed File System。 KFS使用C++實現,支援的用戶端包括C++,Java和Python。

以前曾在開源KFS基礎上做過開發,這裡介紹一下如何進行KFS的源碼編譯與安裝過程(以kfs-0.5為例)。

1.安裝依賴軟體

為了編譯和運行KFS檔案系統,需要安裝以下軟體包:

  • Boost (1.34或以上)
  • cmake (2.4.6或以上)
  • log4cpp (1.0或以上)
  • gcc version (4.1或以上)
  • xfs devel RPMs on Linux

下面介紹的是手動安裝以上軟體包的過程,這裡假設你已經下載完成軟體包壓縮檔。

1、安裝gcc

1 tar zxvf gcc-4.1.2.tar.gz
2 mkdir/usr/local/gcc-4.1.2
3 cd gcc-4.1.2
4 ./configure --prefix=/usr/local/gcc-4.1.2 --enable-threads=posix --disable-checking --enable--long-long --host=i386-redhat-linux--with-system-zlib --enable-languages=c,c++,java
5 make
6 make install

備忘:以上過程將gcc安裝在/usr/local/gcc-4.1.2目錄下,支援C/C++和JAVA語言,其它選項參見gcc提供的協助說明。

2、安裝log4cpp

1 tar xvzf log4cpp-1.0.tar.gz
2 cd log4cpp-1.0
3 ./configure
4 make
5 make install

3、安裝xfs

1 tar xvzf xfsprogs-3.0.1.tar.gz
2 cd xfsprogs-3.0.1
3 ./configure
4 make
5 make install
6 make install-dev

4、安裝cmake

1 tar xvzf cmake-2.6.4.tar.gz
2 cd cmake-2.6.4
3 ./bootstrap
4 make
5 make install

5、安裝boost

1 tar xvzf boost_1_39_0.tar.gz
2 cd boost_1_39_0
3 ./bootstrap.sh
4 ./bjam -sTOOLS=gcc --without-python install
2.編譯和安裝KFS

首先,到sourceforge下載kfs-0.5.tar.gz(點擊下載),這裡假設下載後目錄為使用者根目錄。

然後,解壓KFS軟體包,這裡假設解壓後KFS所在目錄:~/kfs-0.5,編譯源碼所在目錄:~/kfs-0.5/build。

為了完整編譯KFS,需要有以下三部分:

  • 編譯C++部分,產生MetaServer/ChunkServer,各種API操作的tools,C++用戶端;
  • 編譯Java部分,產生kfs.jar,即Java用戶端,以通過Java JNI調用本地的C++方法;
  • 編譯Python擴充模組,產生Python用戶端。
2.1 編譯C++部分
1 tar xvzf kfs-0.5.tar.gz
2 cd kfs-0.5
3 mkdir build
4 cd build
5 cmake -D CMAKE_BUILD_TYPE=RelWithDebInfo ~/kfs-0.5
6 gmake
7 gmake install

編譯之後,二進位檔案將被安裝在以下目錄:

  • 可執行檔:~/kfs-0.5/build/bin
  • 庫檔案:~/kfs-0.5/build/lib

備忘:編譯KFS過程中,帶上了debug調試資訊。

2.2 編譯Java部分
1 cd ~/kfs-0.5
2 ant jar

編譯之後,產生的檔案為:

  • Java class檔案:~/kfs-0.5/build/classes
  • Java Jar包:~/kfs-0.5/build/kfs-0.5.jar

最後,將產生的Jar包添加到CLASSPATH環境變數中:

1 export CLASSPATH=${CLASSPATH}:~/kfs-0.5/build/kfs-0.5.jar
2.3 編譯Python擴充模組

為了編譯Python擴充模組,首先需要進行步驟2.1,產生KFS用戶端庫檔案,這裡庫檔案所在目錄是:~/kfs-0.5/。

編譯Python擴充模組的步驟:

1 cd to ~/kfs-0.5/src/cc/access
2 Edit kfs_setup.py and setup the include path. Specifically, kfsext = Extension('kfs', include_dirs ['kfs/src/cc/', '<path to boost>'])
3 python kfs_setup.py ~/kfs-0.5/build/lib/ build

編譯之後,產生共用連結庫kfs.so,進行安裝:

1 python kfs_setup.py ~/kfs-0.5/build/lib/ install

如果要安裝到一個指定的目錄下(如~/kfs-0.5/build/lib),需要設定home選項:

1 python kfs_setup.py ~/kfs-0.5/build/lib install --home=~/kfs-0.5/build/lib

同時,需要更新PYTHONPATH和LD_LIBRARY_PATH環境變數:

1 export PYTHONPATH=${PYTHONPATH}:~/kfs-0.5/build/lib/lib64/python
2 export LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:~/kfs-0.5/build/lib
3.啟動KFS服務進程

1、 MetaServer

1 cd ~/kfs-0.5/build/src/cc/meta
2 cp ~/kfs-0.5/conf/MetaServer.prp ./
3 ./metaserver MetaServer.prp

備忘:這裡需要提前建立MetaServer.prp中指定的和logDir和cpDir目錄:./kfslog和./kfscp。

2、ChunkServer

1 cd~/kfs-0.5/build/src/cc/chunk
2 cp ~/kfs-0.5/conf/ChunkServer.prp ./
3 ./chunkserver ChunkServer.prp

3、KfsClient

1 cd ~/kfs-0.5/build/src/cc/tools
2 ./kfsshell –s <meta server name> -p <port>
3 ./cptokfs –s <meta server name> -p <port> -d <source path> -k <kfs path>
4 ./cpfromkfs –s <meta server name> -p <port> -d <source path> -k <kfs path>

備忘:~/kfs-0.5/build/src/cc/tools目錄下有各種API操作工具,如kfsshell、cptokfs、cpfromkfs等,這裡沒有一一列舉。

4.查看和關閉KFS服務進程

1、查看進程

1 ps –aux | grep metaserver
2 ps –aux | grep chunkserver
3 ps –aux | grep kfsshell

2、關閉進程

1 kill -9<pid>
5.參考資料
  • http://code.google.com/p/kosmosfs/
  • http://sourceforge.net/projects/kosmosfs/

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.