wiki:HyperTable/HowToInstall

如何安裝Hypertable

【Google Wiki】

【安裝】

  • 安裝過程運行於Ubuntu作業系統,以下所列說明指令適用於Ubuntu的安裝方式,若使用者要安裝到其他作業平台環境,可以參考下列安裝項目並以通用該平台的安裝指令來取代之,接下來會說明編譯過程中的相關檔案存放位置,以及如何組態並編譯原始程式碼,最後再說明安裝方式及如何執行迴歸測試。
  • Hypertable原始程式碼的存放路徑放置於:
    ~/src/hypertable
    
  • 編譯過程中所產生的連結物件檔存放於:
    ~/build/hypertable
    
  • 編譯完成的輸出執行檔存放路徑:
    ~/hypertable
    

【下載原始程式碼】

  • 要取得Hypertable原始碼需要先安裝git這套由google所提出的版本控制軟體,安裝指令如下:
    $ sudo apt-get install git-core
    
  • 然後執行以下指令設定git所通行的使用者資訊,這一份使用者資訊原則上是由git這套版本控制軟體儲存,以及留作記錄程式碼被哪些使用者下載的一份參考來源,其設定使用者資訊方式如下:
    $ git config --global user.name "<your name>"
    $ git config --global user.email "<your email>"
    
  • 使用git下載Hypertable原始碼之指令:
    $ git clone git://scm.hypertable.org/pub/repos/hypertable.git
    
  • 更新已下載之Hypertable原始碼方式:
    $ cd ~/hypertable
    $ git pull
    

【如何設定編譯組態】

  • 在編譯Hypertable之前,需要先把編譯環境準備好,有一些編譯軟體要先安裝就序,以下條列出在Ubuntu環境下,各項編譯軟體的安裝指令:
    • 此套件在安裝C語言標準程式庫所需要的編譯環境,如果沒有安裝build-essential套件時可能會出現編譯階段找不到stdio.h這個引入檔案的位置,因此建議要先確認這項套件是否有安裝。
      $ sudo apt-get install build-essential
      
    • 在Hypertable會使用到一些資料壓縮與解壓縮功能,因此需要安裝 z library。
      $ sudo apt-get install zlib1g-dev
      
    • 安裝可跨平台的makefiles產生工具CMake,因此可以選擇編譯器及編譯環境來產生Hypertable的執行檔;根據官網公佈資訊,目前測試過可執行的平台仍以Linux/Unix為主,Windows平台仍在測試當中。
      $ sudo apt-get install cmake
      
    • 安裝Boost 程式庫1.34.1以上版本,這套程式庫為強化C++ Standard Library而設計,內含功能像是記憶體的Buffer處理,數學,Hash,MPI,圖形等等函式庫。
      $ sudo apt-get install libboost.*-dev libboost-doc libboost.*1.34.1
      
    • 安裝log4cpp套件,此套件參考log4j而設計,故名思議是針對c++而設計的記錄日誌檔機制,在Hypertable裡的記錄檔案便是由此套記錄機制在處理Log功能。
      $ sudo apt-get install liblog4cpp*
      
    • 安裝expat套件,這個套件是一個XML處理程式庫,在Hypertable舉凡對於XML的存取都是引用這個套件來處理。
      $ sudo apt-get install expat libexpat1 libexpat1-dev
      
    • 安裝libattr套件,它是處理檔案的延伸屬性的程式庫。
      $ sudo apt-get install libattr1 libattr1-dev
      
    • 安裝readline套件,這份套件內含讀取terminal上的command line程式庫,在Hypertable裡面像是登入hql shell模式,或其他會需要讀取command line的情況會使用到這一類的功能。
      $ sudo apt-get install libreadline5-dev
      
    • 安裝ncurses,透過它可以撰寫terminal底下的文字模式介面程式,在Hypertable裡面像是登入hql shell模式,或需要模擬文字模式下的使用者介面,會使用到這一類的功能。
      $ sudo apt-get install libncurses5 libncurses5-dev
      
    • 安裝tcmalloc(Thread-Caching Malloc)套件,它是一個記憶體配置套件,可處理多執行緒情況下的記憶體回收之程式庫。
      $ sudo apt-get install libgoogle-perftools0 libgoogle-perftools-dev
      
    • 開始編譯程式前還需要建立安裝目錄,以及編譯後的物件檔案存放目錄
      $ mkdir ~/src/hypertable
      $ mkdir -p ~/build/hypertable
      
    • 執行CMake來產生編譯組態文件(makefiles),並指定編譯後的執行檔模式為偵錯模式(Debug)或發行模式(Release),以及安裝路徑,如果組態過程中出現找不到預設路徑下的Boost程式庫時,可以再指定其路徑,指令範例如下列所示,其中 -D代表定義某個變數的前置符號。
      $ cmake -DCMAKE_INSTALL_PREFIX="~/hypertable" -DCMAKE_BUILD_TYPE="Debug" -DBoost_INCLUDE_DIR="/usr/include/boost" ~/src/hypertable
      
    • 在產生編譯程式讀取的組態檔過程中,顯示結果加註說明如下:
      組態過程...
      -- Looking for required boost libraries...
      尋找boost程式庫當中...
      
      -- Boost include dir: /usr/include/boost
      找到boost的header檔案路徑
      
      -- Boost thread lib: /usr/lib/libboost_thread-mt.so
      找到boost的多執行緒處理之動態程式庫
      
      -- Boost program options lib: /usr/lib/libboost_program_options-mt.so
      找到boost的程式參數處理之動態程式庫
      
      -- Boost lib dir: /usr/lib
      找到boost的動態程式庫存放路徑
      
      -- Boost version: 1_34_1
      顯示boost的版本資訊
      
      -- Looking for doxygen...
      尋找doxygen程式庫當中...
      
      -- Looking for doxygen... - found /usr/bin/doxygen
      找到doxygen的執行程式路徑
      
      -- Looking for dot tool...
      尋找graphviz繪圖使用的dot套件
      
      -- Looking for dot tool... - found /usr/bin/dot
      找到dot的執行程式路徑
      
      -- Found Tcmalloc: /usr/lib/libtcmalloc_minimal.so
      找到tcmalloc的動態連結程式庫路徑
      
      -- Got boost 1.34.x, prepend fix directory
      -- Configuring done
      -- Generating done
      -- Build files have been written to: ~/build/hypertable
      組態完成後把編譯需要的設定檔放到指定路徑~/build/hypertable
      

【如何編譯與安裝】

  • 開始編譯之前,要先切換到編譯組態檔的存放路徑,根據上述組態預設路徑為~/build/hypertable,然後再執行編譯指令:
    $ cd ~/build/hypertable
    $ make
    
  • 編譯之後的結果顯示如下:
    [  6%] Built target HyperComm
    [ 10%] Built target HyperCommon
    [ 11%] Built target commTest
    [ 12%] Built target commTestDatagram
    [ 12%] Built target commTestReverseRequest
    [ 13%] Built target commTestTimeout
    [ 13%] Built target commTestTimer
    [ 13%] Built target sampleClient
    [ 14%] Built target testServer
    [ 14%] Built target htConvert
    [ 17%] Built target Hyperspace
    [ 33%] Built target Hypertable
    [ 42%] Built target HyperDfsBroker
    [ 50%] Built target Hyperspace.Master
    [ 56%] Built target Hypertable.Master
    [ 57%] Built target htgc
    [ 73%] Built target Hypertable.RangeServer
    [ 76%] Built target count_stored
    [ 79%] Built target csdump
    [ 79%] Built target bmz-test
    [ 79%] Built target bmzip
    [ 80%] Built target compressor_test
    [ 80%] Built target generate_test_data
    [ 80%] Built target loadDataSourceTest
    [ 81%] Built target locationCacheTest
    [ 81%] Built target schemaTest
    [ 85%] Built target dfsTest
    [ 88%] Built target dfsclient
    [ 94%] Built target hyperspace
    [ 94%] Built target hyperspaceTest
    [ 95%] Built target hypertable
    [ 95%] Built target hypertable_test
    [ 96%] Built target dumplog
    [ 96%] Built target merge_diff
    [ 97%] Built target rsTest
    [ 98%] Built target rsclient
    [ 99%] Built target rsdump
    [ 99%] Built target serverup
    [100%] Built target localBroker
    
  • 安裝指令如下:
    $ make install DESTDIR="~/hypertable"
    
  • 由於安裝過程較為繁雜,所以省略了其中一些步驟之後說明如下:
    編譯過程省略..
    [  6%] Built target HyperComm
    ...
    ...
    [100%] Built target localBroker
    
    連結程式過程..
    Linking CXX executable CMakeFiles/CMakeRelink.dir/Hyperspace.Master
    Linking CXX executable CMakeFiles/CMakeRelink.dir/Hypertable.Master
    Linking CXX executable CMakeFiles/CMakeRelink.dir/htgc
    Linking CXX executable CMakeFiles/CMakeRelink.dir/Hypertable.RangeServer
    Linking CXX executable CMakeFiles/CMakeRelink.dir/count_stored
    Linking CXX executable CMakeFiles/CMakeRelink.dir/csdump
    Linking CXX executable CMakeFiles/CMakeRelink.dir/generate_test_data
    Linking CXX executable CMakeFiles/CMakeRelink.dir/dfsclient
    Linking CXX executable CMakeFiles/CMakeRelink.dir/hyperspace
    Linking CXX executable CMakeFiles/CMakeRelink.dir/hypertable
    Linking CXX executable CMakeFiles/CMakeRelink.dir/dumplog
    Linking CXX executable CMakeFiles/CMakeRelink.dir/merge_diff
    Linking CXX executable CMakeFiles/CMakeRelink.dir/rsclient
    Linking CXX executable CMakeFiles/CMakeRelink.dir/rsdump
    Linking CXX executable CMakeFiles/CMakeRelink.dir/serverup
    Linking CXX executable CmakeFiles/CMakeRelink.dir/localBroker
    
    安裝程式過程,部份內容省略未列出,僅列出整理排列後之內容..
    Install the project...
    -- Install configuration: "Debug"
    
    安裝設定檔..
    -- Installing ~/hypertable/0.9.0.5/conf/hypertable.cfg
    -- Installing ~/hypertable/0.9.0.5/conf/METADATA.xml
    
    安裝引用檔案及應用範例程式及測試資料庫內容(省略)..
    
    安裝Java及C/C++程式庫..
    -- Installing ~/hypertable/0.9.0.5/java/lib/commons-logging-1.0.4.jar
    -- Installing ~/hypertable/0.9.0.5/java/lib/hadoop-0.14.4-core.jar
    -- Installing ~/hypertable/0.9.0.5/java/lib/junit-4.3.1.jar
    -- Installing ~/hypertable/0.9.0.5/java/lib/log4j-1.2.13.jar
    -- Installing ~/hypertable/0.9.0.5/java/lib/hypertable-0.9.0.jar
    -- Installing ~/hypertable/0.9.0.5/lib/libHyperComm.a
    -- Installing ~/hypertable/0.9.0.5/lib/libHyperCommon.a
    -- Installing ~/hypertable/0.9.0.5/lib/libHyperspace.a
    -- Installing ~/hypertable/0.9.0.5/lib/libHypertable.a
    -- Installing ~/hypertable/0.9.0.5/lib/libHyperDfsBroker.a
    
    安裝可執行程式..
    -- Installing ~/hypertable/0.9.0.5/bin/jrun
    -- Installing ~/hypertable/0.9.0.5/bin/start-all-servers.sh
    -- Installing ~/hypertable/0.9.0.5/bin/start-master.sh
    -- Installing ~/hypertable/0.9.0.5/bin/start-range-server.sh
    -- Installing ~/hypertable/0.9.0.5/bin/kill-servers.sh
    -- Installing ~/hypertable/0.9.0.5/bin/slaves.sh
    -- Installing ~/hypertable/0.9.0.5/bin/Hyperspace.Master
    -- Installing ~/hypertable/0.9.0.5/bin/Hypertable.Master
    -- Installing ~/hypertable/0.9.0.5/bin/htgc
    -- Installing ~/hypertable/0.9.0.5/bin/Hypertable.RangeServer
    -- Installing ~/hypertable/0.9.0.5/bin/csdump
    -- Installing ~/hypertable/0.9.0.5/bin/count_stored
    -- Installing ~/hypertable/0.9.0.5/bin/generate_test_data
    -- Installing ~/hypertable/0.9.0.5/bin/dfsclient
    -- Installing ~/hypertable/0.9.0.5/bin/hyperspace
    -- Installing ~/hypertable/0.9.0.5/bin/hypertable
    -- Installing ~/hypertable/0.9.0.5/bin/dumplog
    -- Installing ~/hypertable/0.9.0.5/bin/merge_diff
    -- Installing ~/hypertable/0.9.0.5/bin/rsclient
    -- Installing ~/hypertable/0.9.0.5/bin/rsdump
    -- Installing ~/hypertable/0.9.0.5/bin/serverup
    -- Installing ~/hypertable/0.9.0.5/bin/localBroker
    

【由原始程式碼建立程式說明文件】

  • 要由原始程式碼產生文件資料,需要再額外安裝2個套件,分別為Doxygen及Graphviz,第1個套件是產生類別,屬性及函式功能說明文件之文件產生器程式庫,可協助程式設計者將特定格式之註解裡的說明文件導出,產生說明文件,目前Doxygen支援的程式語言包含C++/C/Java/Object-C/Python/IDL/Fortran/VHDL/PHP/C#等程式語言;另一個套件Graphviz可以將指定格式的結構化資訊,轉換為抽象圖形或網路圖形,在Doxygen套件裡的圖形處理,是引用這個套件來產生類別階層圖。
    產生說明文件的方式,只要將目錄切換到組態設定檔路徑,然後執行Make指令後可以自動產生文件:
    $ cd ~/build/hypertable
    $ make doc
    
  • 文件產生後放置路徑為~/build/hypertable/doc ,文件首頁放置路徑為:
    $ ~/build/hypertable/doc/html/index.html 
    

【執行迴歸測試】

  • 執行程式部署完成之後,還需要再進一步設定Hypertable掛載的磁碟分割區,開啟檔案的延伸屬性功能,然後重新啟動Hypertable之後才算完成安裝步驟。當Hypertable使用的磁碟磁區是本機硬碟空間,並且作業系統為Windows/Linux/Unix,才會需要特別再修改/etc/fstab設定檔,增加user_xattr屬性;若是作業系統為Mac OS或是使用Hadoop File System(HDFS)/Kosmos File System(KFS),則會內建有延伸屬性功能,不用再去修改檔案系統。
    • 修改/etc/fstab前的內容範本:
      $ /dev/sda1 ext3 defaults,errors=remount-ro 0 1
      
    • 修改/etc/fstab後的內容範本:
      $ /dev/sda1 ext3 defaults,user_xattr,errors=remount-ro 0 1
      
    • 不用關機並重新掛載磁碟空間的方法:
      $ sudo mount -o remount /home
      
    • 重新啟動Hypertable方式是先關閉所有的伺服器,然後再開啟,指令如下:
      切換到執行檔案路徑
      $ cd ~/hypertable/0.9.0.5/bin
      
      關閉Server
      $ ./kill-servers.sh 
      
      使用本機端磁碟空間的開啟方式
      $ ./start-all-servers.sh local 
      
    • 啟動所有伺服器的指令格式如下:
      Usage: start-test-servers.sh [local|hadoop|kosmos] 
      
    • 運行迴歸測試之指令及結果如下:
      $ make test
      Running tests...
      Start processing tests
      Test project /home/sunny/build/hypertable
        1/ 17 Testing HyperComm                        Passed
        2/ 17 Testing HyperComm-datagram               Passed
        3/ 17 Testing HyperComm-timeout                Passed
        4/ 17 Testing HyperComm-timer                  Passed
        5/ 17 Testing HyperComm-reverse-request        Passed
        6/ 17 Testing Schema                           Passed
        7/ 17 Testing LocationCache                    Passed
        8/ 17 Testing LoadDataSource                   Passed
        9/ 17 Testing BlockCompressor-BMZ              Passed
       10/ 17 Testing BlockCompressor-LZO              Passed
       11/ 17 Testing BlockCompressor-NONE             Passed
       12/ 17 Testing BlockCompressor-QUICKLZ          Passed
       13/ 17 Testing BlockCompressor-ZLIB             Passed
       14/ 17 Testing HyperDfsBroker                   Passed
       15/ 17 Testing Hyperspace                       Passed
       16/ 17 Testing hypertable                       Passed
       17/ 17 Testing RangeServer                      Passed
      
      100% tests passed, 0 tests failed out of 17
      

【組態設定說明】

  • 系統組態預設的存放位置為安裝路徑的conf目錄底下:
    ~/hypertable/0.9.0.5/conf/hypertable.cfg
    
  • 這個組態檔可提供使用者設定3種檔案系統的橋接程式 (DfsBroker?)之位址與通訊埠等等資訊,以及Hyperspace與Hypertable的Master伺服器資訊,和Hypertable的Range Server資訊,換言之,這些可設定的伺服器位址可以不限定在同一台機器上,它們可以各別存在於不同台機器上運作,除了Hyperspace與Hypertable的Master伺服器同一時間只允許互動運作一個執行個體之外,Range Server與DfsBroker是可以多個執行個體同時互動執行的,所以啟動Hypertable服務的機器,都會先確認過DfsBroker是否運作正常,Hyperspace與Hypertable的Master是否啟動成功,然後再啟動本機的Range Server;單機版的Hypertable會同時啟動Hyperspace+Master+Range Server+Local DfsBroker在同一台機器上,多機版的Hypertable則可以把這4種服務分散在不同台機器上。
  • 預設的設定檔內容如下:
    #
    # hypertable.cfg
    #
    
    # Global properties
    
    # Hypertable的等待連線時間
    Hypertable.Request.Timeout=180
    
    # HDFS Broker服務的相關設定
    HdfsBroker.Port=38030
    HdfsBroker.fs.default.name=hdfs://localhost:9000
    HdfsBroker.Workers=20
    
    # Local DFS Broker 服務的相關設定
    DfsBroker.Local.Port=38030
    DfsBroker.Local.Root=fs/local
    
    # DFS Broker 給用戶端的相關設定
    DfsBroker.Host=localhost
    DfsBroker.Port=38030
    
    # Hyperspace 的相關設定
    Hyperspace.Master.Host=localhost
    Hyperspace.Master.Port=38040
    Hyperspace.Master.Dir=hyperspace
    Hyperspace.Master.Workers=20
    
    # Hypertable.Master 的相關設定
    Hypertable.Master.Host=localhost
    Hypertable.Master.Port=38050
    Hypertable.Master.Workers=20
    
    
    # Hypertable.RangeServer 的相關設定
    Hypertable.RangeServer.Port=38060
    

【參考來源】

  1. 系統概觀
  2. 系統架構說明
  3. 運作方式說明
  4. 原始程式碼取得說明
  5. 安裝說明
  6. Bigtable 結構化數據的分佈存儲系統
  7. Hypertable Query Language教學手冊
  8. 組態設定手冊
  9. 系統測試步驟說明
  10. 效能測試
  11. 已知的弱點說明
Last modified 16 years ago Last modified on Jun 17, 2008, 11:54:34 AM