Hypertable+KFS搭建步骤

0, 前言

KFS是参考GFS文件系统的实现,使用C++编写 http://kosmosfs.sourceforge.net/

Hypertable 参考BigTable系统的实现,使用C++编写 http://www.hypertable.org/

二者都是开放源代码的,KFS+Hypertable == GFS +BigTable


1,安装hypertable需要的依赖库

1).安装CMake 2.6,下载地址:http://www.cmake.org/

安装步骤:

./bootstrap;

make;

make install

2). 安装BerkeleyDB 4.7.25,下载地址:

http://www.oracle.com/technology/global/cn/software/products/berkeley-db/index.html

安装步骤:

tar –xzvf db-4.7.25.tar.gz;

cd db-4.7.25/build_unix/;

../dist/configure –enable-cxx;(需要root权限)

make

sudo make install

echo “/usr/local/BerkeleyDB.4.7/lib” | sudo tee /etc/ld.so.conf.d/BerkeleyDB.conf

sudo /sbin/ldconfig

3)  安装boost 1.40.0,下载地址:

http://sourceforge.net/project/showfiles.php?group_id=7586&package_id=8041

安装步骤:

tar –xzvf boost_1_40_0.tar.gz;

cd  boost_1_40_0;

./configure;

make;

make install;

4) 安装log4cpp 1.0,下载地址:http://log4cpp.sourceforge.net/

安装步骤:

需要打上补丁!

wget http://www.hypertable.org/pub/0003-Fixed-bug-in-StringUtil-vform.patch

tar –xzvf  log4cpp-1.0.tar.gz;

cd log4cpp-1.0;

patch -p1 < ../0003-Fixed-bug-in-StringUtil-vform.patch

./configure;

make;

make install;

5)  安装expat,下载地址:http://sourceforge.net/projects/expat

安装步骤:

tar –xzvf expat-2.0.1.tar.gz;

cd expat-2.0.1;

./configure;

make;

make install;

以上步骤可以参考hypertable安装包解压后的README文档,文档中提到的tcmalloc库不要安装!

同时可以参看官方文档:http://code.google.com/p/hypertable/wiki/HowToBuild

2,KFS编译环境准备  【这一步是可选的,为了将KFS与hypertable结合】


安装步骤请参考源码包中的README文档

注:这一步需要将KFS生成include lib文件夹放入到hypertable可以找到的地方,如果没有找到,hypertable不会生成kfsBroker 具体搜索路径可以看下hypertable/cmake/ FindKfs.cmake中的内容


3,搭建hypertable编译环境

tar –xzvf  hypertable-xxx.tar.gz;

cd  hypertable-xxx;

mkdir build;

cd build;

cmake ../;

make;

make install;

注:1)修改CmakeList.txt中hypertable的安装路径CMAKE_INSTALL_PREFIX

或者是在cmake命令前-DCMAKE_INSTALL_PREFIX=your_install_path

2) -DBUILD_SHARED_LIBS=ON  生成动态库 默认只生成hypertable静态库

3) -DCMAKE_BUILD_TYPE=Release  安装类型

至此hypertable编译环境安装完毕

4.安装单机版本的hypertable环境


cd ~/hypertable/xxx/bin;

./start-all-servers.sh local

export LD_LIBRARY_PATH=$HOME/hypertable/lib;

替代方式:echo $HOME/hypertable/lib >> /etc/ld.so.conf && /sbin/ldconfig

然后在~/hypertable/xxx/bin下运行./hypertable即可进入hypertable命令行模式(类似于mysql命令行环境),可以使用HQL语法进行操作

5.与KFS结合使用hypertable


将KFS作为底层的文件系统,目前hypertable最新版本已经支持

1)    修改conf/hypertable.cfg文件

加入以下内容

#kfs meta server

Kfs.MetaServer.Name=10.60.1.125

Kfs.MetaServer.Port=20000

Kfs.Broker.Workers=20

2)    启动kfs的metaserver chunkserver

3)    ./bin/start-all-servers.sh  kfs

搞定。

另外hypertable 使用了开源的集群管理工具capistrano  使用前提是各个机器间建立ssh信任关系,我是直接使用脚本来启动server,bin/目录下的脚本还是很有用的

Bin目录下的脚本说明:

1) start-all-server.sh  启动所有的有关server 包括DfsBroker hyperspace Hypertable.Master Hypertable.RangeServer 使用这个脚本的话,所有的server同时在一台机器上启动

2)  start-dfsbroker.sh  启动文件系统,参数:kfs | hdfs | local

3)  start-hyperspace.sh  启动hyperspace

4)  start-master.sh   启动Hypertable.Master

5)  start-rangeserver.sh  启动Hypertable.Rangeserver

6) stop-servers.sh 停止服务脚本

7)  ./ht shell 进入hypertable命令行界面 与./hypertable命令相同

如果是运行在集群下的话,

在master上启动start-dfsborker.sh  start-hyperspace.sh start.master.sh三个脚本

在slave机器上启动start-dfsborker.sh start-rangeserver.sh 两个脚本

来自yaronspace.cn  本文链接:http://yaronspace.cn/blog/archives/791