Hypertable在Ubuntu12.04上standalone模式的安装

来源:互联网 发布:用python写网络爬虫书 编辑:程序博客网 时间:2024/05/21 16:00

前段时间,花精力翻译了Hypertable官方网站上的有关文档,还有参考手册,比较长,以后有时间再说。

翻译这些文档,其实也是自己学习消化的过程。下面就从安装起,来一次Hypertable之旅。

本人使用的是64位Ubuntu(建议使用64位,否则会有麻烦),版本为12.04,本文及以后的测试,都是基于该操作系统。

本文是Hypertable最简单的一种安装:standalone,Hypertable的版本为0.9.6.0。

一、下载及安装文件

正如安装文档中所描述的,Hypertable的安装应该是比较简单的,有两种安装包选择:

1.hypertable-0.9.6.0-linux-x86_64.deb

2.hypertable-0.9.6.0-linux-x86_64.tar.bz2

Hypertable网站均提供了下载,本质上,两种包没有区别,但deb包的安装更简单,下载后采用如下命令:

 sudo dpkg --install hypertable-0.9.6.0-linux-x86_64.deb
就完成。如果用tar包,则需要自己选择安装位置。

安装文档中强调采用root账户,请遵守(可以采用每个命令前用sudo),否则将带来麻烦。

(按安装文档操作或缺省情况)包解压完成后,可以看到/opt目录下出现hypertable及其下面一系列目录。

二、初始化化运行目录结构

安装文档中将此步骤叫做FHSize,其实就是运行fhsize.sh脚本,创建某些目录及链接。安装要求,先创建两个目录,在运行该脚本(加sudo),这时,查看一下/opt/hypertable/0.9.6.0/目录,会有一些链接被创建出来。

三、一些可选步骤

在本文的环境下,文档中的3,4,5并不是必需的。创建current链接最好做一下,创建数据卷就不必了,另外,在/opt/hypertable/0.9.6.0/目录下已经有fs链接了,所以文档中的第4步似乎有些问题,不过只要指向数据卷就可以了。修改Hyperspace.Replica.Host属性也不是必需的,文档中建议将此值改为机器名(不是ip)也可以,localhost也可以。

四、运行

按文档中格式运行start-all-servers.sh脚本,应该见到期望的结果。

五、问题

比较复杂的情况是采用tar包,而又不是root账户,例如是firstuser。笔者一开始就是如此,按安装文档的要求将有关目录的改为firstuser所有。但启动hypertable时,有如下错误:

ERROR: Hypertable.Master did not come up

ERROR: ThriftBroker did not come up

查看Hypertable.Master的日志,有如下记录:

1343726488 INFO Hypertable.Master : (/root/src/hypertable/src/cc/Hypertable/Master/main.cc:308) Obtained lock on '/hypertable/master'1343726488 INFO Hypertable.Master : (/root/src/hypertable/src/cc/Hypertable/Master/main.cc:332) Successfully Initialized.1343726488 WARN Hypertable.Master : (/root/src/hypertable/src/cc/AsyncComm/IOHandlerData.cc:756) FileUtils::writev(8, len=38) failed : Broken pipe1343726488 INFO Hypertable.Master : (/root/src/hypertable/src/cc/AsyncComm/ConnectionManager.cc:359) Event: type=DISCONNECT from=127.0.0.1:38030; Problem connecting to DFS Broker, will retry in 600000 milliseconds...1343726488 INFO Hypertable.Master : (/root/src/hypertable/src/cc/Hypertable/Master/Monitoring.cc:73) rangeservers monitoring stats dir /opt/hypertable/0.9.6.0/run/monitoring exists 1343726488 INFO Hypertable.Master : (/root/src/hypertable/src/cc/Hypertable/Master/Monitoring.cc:73) rangeservers monitoring stats dir /opt/hypertable/0.9.6.0/run/monitoring/tables exists 1343726488 INFO Hypertable.Master : (/root/src/hypertable/src/cc/Hypertable/Master/Monitoring.cc:73) rangeservers monitoring stats dir /opt/hypertable/0.9.6.0/run/monitoring/rangeservers exists 1343726488 WARN Hypertable.Master : (/root/src/hypertable/src/cc/AsyncComm/Comm.cc:246) No connection for 127.0.0.1:38030 - COMM not connected1343726489 ERROR Hypertable.Master : main (/root/src/hypertable/src/cc/Hypertable/Master/main.cc:254): Hypertable::Exception: Error checking existence of DFS path: /hypertable/servers/master/log/mml - COMM not connectedat virtual bool Hypertable::DfsBroker::Client::exists(const Hypertable::String&) (/root/src/hypertable/src/cc/DfsBroker/Lib/Client.cc:655)at void Hypertable::DfsBroker::Client::send_message(Hypertable::CommBufPtr&, Hypertable::DispatchHandler*) (/root/src/hypertable/src/cc/DfsBroker/Lib/Client.cc:731): DFS send_request to 127.0.0.1:38030 failed


比较怪异的是,在停掉Hypertable(当然,停止也不是完成成功)以后再启动,有时也能成功。

以上问题估计是权限的问题。


原创粉丝点击