By云深作者:Schubert/Terry 2009年3月
转载请注明出处
本文讲述hypertable-0.9.2.2-alpha安装方法。
主要的指导文档要参考Hypertable的Wiki文档:http://code.google.com/p/hypertable/wiki/ HowToInstall
1. cmake:
参考cmake网站 http://www.cmake.org/,安装到缺省目录,在/usr/local下面,到/usr/local/bin下面看看是否有cmake的相关命令。
./bootstrap
make
make install
2. BerkeleyDB.4.7:
http://www.oracle.com/technology/software/products/berkeley-db/index....载db-4.7.25.tar.gz
虽然系统一般已经有安装4.3的BDB,但互相不影响,不必卸掉db4-4.3....,因为Hypertable只用到一些API。(实际上
4.3的在Hypertable0.9.2.2时也能用,所以下面的安装过程以前可以不做。)
cd build_unix
../dist/configure --enable-cxx --enable-java #(java is optional
here, but enable it for later usage)
make
make install
略看一下README和INSTALL文档安装更好,缺省在/usr/local/BerkeleyDB.4.7 下面,文档在docs/
index.html里面
echo "/usr/local/BerkeleyDB.4.7/lib" > /etc/ld.so.conf.d/
BerkeleyDB.conf
ldconfig
这样相关lib就可以在后面的安装过程中生效了。
3. boost:
到http://www.boost.org下载boost_1_35_0.tar.gz
按照boost网站上 Getting Started Guide 的安装步骤安装之。以后要好好学习boost了,好多东西:-)
./configure
make
make install
这个版本的Boost安装在/usr/local下面,库都在/usr/local/lib下面
既然安装了这个新版本,如果原来系统中有boost1.33等老版本,可以rpm -e掉他们。
rpm -e boost-devel-1.33.1-10.el5.x86_64 #(only for 64bit system)
rpm -e boost-devel-1.33.1-10.el5
rpm -e boost-1.33.1-10.el5.x86_64 #(only for 64bit system)
rpm -e boost-1.33.1-10.el5
rpm -qa|grep boost
@@这么多库东东安装在/usr/local/lib下面,那就echo "/usr/local/lib" > /etc/
ld.so.conf.d/usr_local_lib.conf,并ldconfig以便以后其他程序能找到这些共享库。
4. log4cpp:
到 http://log4cpp.sourceforge.net/ 下载log4cpp-1.0.tar.gz,按照网站说明安装之。
缺省安装在/usr/local下面。到/usr/local/lib下面看看安装的库文件。
./configure
make
make install
log4cpp的lib文件也安装在/usr/local/lib下,前面安装boost时已经生成了 /etc/ld.so.conf.d/
usr_local_lib.conf,所以只需 ldconfig 就可以了。
5. expat, readline, ncurses
一般系统都安装好了expat, readline和ncurses,所以用rpm检查无误就可以了。
6. tcmalloc (Optional)
虽然是Optional,但据说这东西对内存分配的性能有巨大提升,那就安装之吧。
到http://code.google.com/p/google-perftools/ 下载google-
perftools-0.98.tar.gz并好好学习一下下感觉说的好强的。
但如果你是x86_64的主机,就要先安装另外一个东东libunwind, 先到http://www.nongnu.org/
libunwind/ 下载 libunwind-0.98.6.tar.gz。
这个libunwind是帮助跟踪call-chain of a program的
编译libunwind有点参数注意了:
CFLAGS=-fPIC ./configure
make CFLAGS=-fPIC
make CFLAGS=-fPIC install
ldconfig
--------------------------
再编译安装google-perftools-0.98。步骤无非是configure/make/make install
这个东东也被缺省安装在/usr/local/lib下面,那就再ldconfig一下吧,前面我们已经创建号/etc/
ld.so.conf.d/usr_local_lib.conf了,这里只需 ldconfig
添加依赖库:hyperic-sigar-1.6.0.tar.gz
wget http://internap.dl.sourceforge.net/sourceforge/sigar/hyperic-sigar-1.6.0.tar.gz
tar -xzvf hyperic-sigar-1.6.0.tar.gz
cp hyperic-sigar-1.6.0/sigar-bin/include/*.h /usr/local/include
x86 32bit:
cp hyperic-sigar-1.6.0/sigar-bin/lib/libsigar-x86-linux.so /usr/local/lib/
x86_64
cp hyperic-sigar-1.6.0/sigar-bin/lib/libsigar-amd64-linux.so /usr/local/lib/
ldconfig
7. hypertable
前面搞了半天这才进入主题,可见hypertable的作者老人家还是很会利用新的"高科技"的。咱们要学习啊。记得KFS也是如此,不过也很
不爽,这么多依赖关系,使用和学习起来很是烦啊。
这两天Google Code上Hypertable Project Wiki中关于安装的文档更新了,大家要注意喽,不过也没有什么很大的
差别,以后有更新要以更新为准。
先到http://code.google.com/p/hypertable/ 下载hypertable-x.x.x.x-alpha-
src.tar.gz。
编译安装过程是:
(1) 找个地方创建你的安装目录,如我在/home/schunert/test/hypertable,缺省人家是要安装到/opt/
hypertable的,记得后面cmake的时候要修改一下。
(2) 找个地方创建你的build目录,如我在/home/schubert/test/src/hypertable-0.9.0.6-
alpha/build,然后进去这个目录
(3) 然后 cmake <your_source_dir>,如我只需cmake ..
建议还是仔细看看cmake输出的东东,行数不多,大多是关联模块的执行文件或库文件的位置,特别注意库文件的位置是否正确。特别注
意boost和BerkeleyDB. 一般他找到的东西都对,但我们有两个版本的BerkeleyDB,他有时找到老的,所以我们需在下一步改之。
(4) 用ccmake修改编译配置文件,运行ccmake <your_source_dir>。在显示的界面里面键入t,根据提示修改相
关配置变量内容,特别注意,如果不对就修改之:
BDB_INCLUDE_DIR /usr/local/BerkeleyDB.4.7/include
BDB_LIBRARY /usr/local/BerkeleyDB.4.7/lib/libdb_cxx.so
CMAKE_INSTALL_PREFIX /home/schubert/test/hypertable
修改好后键入c然后g保存就行了。其实这些参数的设置都在build目录下的CMakeCache.txt文件中啦,进去看看吧。
(5) 然后make/make install就可以了。不过时间有点长哦,如果你用的是多核心CPU,那么就make -j
number_of_cpu_or_cores_plus_1(比如我的四核CPU就 make -j 5),速度会快很多哦。去喝杯咖啡吧。
安装完成了,单机localFS运行试试看:
cd /home/schubert/test/hypertable/0.9.0.6
bin/start-all-servers.sh local
一定能起来吧。
Successfully started DFSBroker (local)
Successfully started Hyperspace
Successfully started Hypertable.Master
Successfully started Hypertable.RangeServer
ps aux你会看到四个进程,各自就是上面的对应。
也可以按照如下步骤编译:
假定编译环境如下:
CMAKE_INSTALL_PREFIX="/opt/hypertable_test/exec/hypertable"
CMAKE_BUILD_TYPE="Release"
Boost_INCLUDE_DIR="/usr/local/include/boost-1_35"
BDB_INCLUDE_DIR="/usr/local/BerkeleyDB.4.7/include"
BDB_LIBRARY="/usr/local/BerkeleyDB.4.7/lib/libdb_cxx.so"
HYPERTABLE_SRC = "/opt/hypertable/src/hypertable-0.9.2.2-alpha"
BUILD_DIR = "/opt/hypertable/build/hypertable-0.9.2.2-alpha"
1)将源文件加压到{HYPERTABLE_SRC }
2)进入build目录,
3)执行 cmake -DCMAKE_INSTALL_PREFIX={CMAKE_INSTALL_PREFIX}
-DCMAKE_BUILD_TYPE="Release"
-DBoost_INCLUDE_DIR={Boost_INCLUDE_DIR}
-DBDB_INCLUDE_DIR={BDB_INCLUDE_DIR}
-DBDB_LIBRARY={BDB_LIBRARY}
根据实际情况替换相关参数,cmake语句不换行。
4)make,make install,hypertable就安装到{CMAKE_INSTALL_PREFIX}/hypertable/0.9.2.2。
进入{CMAKE_INSTALL_PREFIX}/hypertable/0.9.2.2,执行bin/start-all-servers.sh local,单机启动
在build目录,执行make test进行单元测试。
结果如下:
[root@demo-LVS1 build]# make test
Running tests...
Start processing tests
Test project /opt/hypertable_test/build
1/ 46 Testing Common-Exception Passed
2/ 46 Testing Common-Logging Passed
3/ 46 Testing Common-Serialization Passed
4/ 46 Testing Common-ScopeGuard Passed
5/ 46 Testing Common-InetAddr Passed
6/ 46 Testing Common-PageArena Passed
7/ 46 Testing Common-Properties Passed
8/ 46 Testing Common-BloomFilter Passed
9/ 46 Testing Common-Hash Passed
10/ 46 Testing HyperComm Passed
11/ 46 Testing HyperComm-datagram Passed
12/ 46 Testing HyperComm-timeout Passed
13/ 46 Testing HyperComm-timer Passed
14/ 46 Testing HyperComm-reverse-request Passed
15/ 46 Testing BerkeleyDbFilesystem Passed
16/ 46 Testing FileBlockCache Passed
17/ 46 Testing CellStoreScanner Passed
18/ 46 Testing Schema Passed
19/ 46 Testing LocationCache Passed
20/ 46 Testing LoadDataSource Passed
21/ 46 Testing LoadDataEscape Passed
22/ 46 Testing BlockCompressor-BMZ Passed
23/ 46 Testing BlockCompressor-LZO Passed
24/ 46 Testing BlockCompressor-NONE Passed
25/ 46 Testing BlockCompressor-QUICKLZ Passed
26/ 46 Testing BlockCompressor-ZLIB Passed
27/ 46 Testing CommitLog Passed
28/ 46 Testing MetaLog-RangeServer Passed
29/ 46 Testing Client-large-block Passed
30/ 46 Testing HyperDfsBroker Passed
31/ 46 Testing Hyperspace Passed
32/ 46 Testing Hypertable-shell Passed
33/ 46 Testing RangeServer Passed
34/ 46 Testing Client-random-write-read Passed
35/ 46 Testing RangeServer-commit-log-gc Passed
36/ 46 Testing RangeServer-load-exception ***Failed
37/ 46 Testing RangeServer-maintenance-thread***Failed
38/ 46 Testing RangeServer-row-overflow Passed
39/ 46 Testing RangeServer-split-recovery-1 ***Failed
40/ 46 Testing RangeServer-split-recovery-2 ***Failed
41/ 46 Testing RangeServer-split-recovery-3 ***Failed
42/ 46 Testing RangeServer-split-recovery-4 ***Failed
43/ 46 Testing RangeServer-split-recovery-5 ***Failed
44/ 46 Testing RangeServer-split-recovery-6 Passed
45/ 46 Testing RangeServer-bloomfilter-rows Passed
46/ 46 Testing RangeServer-bloomfilter-rows-c Passed
85% tests passed, 7 tests failed out of 46
The following tests FAILED:
36 - RangeServer-load-exception (Failed)
37 - RangeServer-maintenance-threads (Failed)
39 - RangeServer-split-recovery-1 (Failed)
40 - RangeServer-split-recovery-2 (Failed)
41 - RangeServer-split-recovery-3 (Failed)
42 - RangeServer-split-recovery-4 (Failed)
43 - RangeServer-split-recovery-5 (Failed)
Errors while running CTest
make: *** [test] Error 8
由于没有完整安装,或环境因素影响,有关测试为failed。
8. hypertable on Hadoop
参考Wiki: http://code.google.com/p/hypertable/wiki/UpAndRunningWithHadoop
Hadoop的安装很简单,就不提了。
以上供参考,以hypertable官方网站为准。
附ubuntu上安装hypertable的较详细的说明文档:
《如何安裝Hypertable》地址:http://trac.nchc.org.tw/cloud/wiki/HyperTable/HowToInstall
台湾同行写的,写的很仔细,佩服!