前几日,看了hypertable和hbase的性能比较,于是决定尝试搭建一下,由于之前一直做Linux C的开发,对C/C++程序的移植性有深切的体会,因此选择了二进制包安装。
在hypertable的官网上有相应的文档,http://hypertable.com/documentation/installation/quick_start_cluster_installation/,里面主要有四种方式,坚决选择基于hadoop的分布式模式安装。
由于官网上描述过于简单,因此在实际的安装中还是会遇到不少的麻烦,这个主要是安装的环境问题。
一,安装hadoop,这个要选择CDH3,主要的原因和hbase一样,需要对fsync的支持。具体安装过程就不赘述了,网上遍地就是。
二,安装hypertable之打通信任关系:在hadoop安装时,也要求打通信任关系,不过,这个只是first namenode (简称fn)和各个datanode(dn)之间,只是单向的可以从fn到dn的无密码ssh,但是,在使用cap来安装hypertable时,从dn到fn也必须可以无密码ssh的,因此还要打通dn到fn的无密码ssh。这里假设hypertable的逻辑拓扑是: master节点和fn在同一个节点,各个dn上运行rangeserver节点。
三,确认安装的rsync版本大于3.0.6.5,这个版本有个语法不兼容的bug,在执行cap时会报出error。
四,准备好ruby:
sudo yum install -y ruby
安装 rubygems-1.8.24.zip
安装 capistrano:sudo gem install capistrano
准备好相关的工具,这个主要是为监控准备的:sudo gem install sinatra rack thin json titleiz
五,下载hypertable的二进制包,下载了0.9.5.5二进制包,放在/tmp目录下。
六 从tar包中解压出conf/Capfile.cluster
文件,重命名为Capfile,主要是根据实际情况配置cluster的拓扑,这个官网上的内容还是靠谱的,就不多说。实际有ruby的经验的应该可以看懂这个脚本,个人感觉和makefile差不多,呵呵。
七 安装:使用打通信任关系的帐号,笔者是hadoop,在Capfile的目录下执行: cap install_package
八,编辑hypertable.cfg文件,这个是集群的配置文件,主要是配置hyperspace的主机,以hdfs的目录,以及数据目录
九,分发配置文件,将hypertable.cfg放置在Capfile中default_config
指定的目录下,然后使用cap:cap push_config,将配置文件同步到各个rangeserver
十,设置当前目录,这个过程可能会被人忽略,但是绝对是有必要的,因为这个过程会设置一个默认的软连接,这个hypertable之后的操作都和这个目录有关系,执行cap set_current
十一,启动hypertable,在Capfile的当前目录,执行cap start,即可启动hypertable,在master的38090端口可以看到集群的监控页面。不过,如果没有设置默认的javahome变量,则会造成集群无法启动,因此,需要在ht-env.sh这个脚本中的export一下JAVA_HOME环境变量。貌似大部分人会遇到这个问题。如果修改了这个文件,记得将这个文件分发到个台机器的对应目录下。