Hypertable 快速安装,仅需上载一个RPM包,零编译
Hypertable 快速安装,仅需下载一个RPM包,零编译
本文采用 单机安装
1. Hypertable 安装
单机:安装于单机,采用本地文件系统
Hadoop:分布式安装,使用Hadoop(HDFS)作为存储
MapR:分布式安装,在MapR之上
ThriftBroker:在应用服务器上安装ThriftBroke
1.1. Hypertable standalone 单机安装
过程 4.1. Hypertable standalone 安装过程
-
安装 Hypertable 软件包
# cd /usr/local/src/
# wget http://cdn.hypertable.com/packages/0.9.7.0/hypertable-0.9.7.0-linux-x86_64.rpm
-
安装 Hypertable, 我个人比较喜欢用yum localinstall他会解决软件之间的依赖关系
# yum localinstall hypertable-0.9.7.0-linux-x86_64.rpm
相关的软件会自动安装
Dependencies Resolved
====================================================================================================================
Package Arch Version Repository Size
====================================================================================================================
Installing:
hypertable x86_64 0.9.7.0-1 /hypertable-0.9.7.0-linux-x86_64 288 M
Installing for dependencies:
mailcap noarch 2.1.31-2.el6 base 27 k
perl-Bit-Vector x86_64 7.1-2.el6 base 169 k
perl-Carp-Clan noarch 6.03-2.el6 base 25 k
perl-Compress-Raw-Zlib x86_64 1:2.020-127.el6 base 68 k
perl-Compress-Zlib x86_64 2.020-127.el6 base 43 k
perl-HTML-Parser x86_64 3.64-2.el6 base 109 k
perl-HTML-Tagset noarch 3.20-4.el6 base 17 k
perl-IO-Compress-Base x86_64 2.020-127.el6 base 67 k
perl-IO-Compress-Zlib x86_64 2.020-127.el6 base 134 k
perl-IO-String noarch 1.08-9.el6 base 15 k
perl-URI noarch 1.40-2.el6 base 117 k
perl-libwww-perl noarch 5.833-2.el6 base 387 k
Transaction Summary
====================================================================================================================
Install 13 Package(s)
-
Hypertable 默认安装在 /opt/hypertable/0.9.7.0
备份配置文件,
# cd /opt/hypertable/0.9.7.0/conf
# cp hypertable.cfg hypertable.cfg.original
-
FHS-IZE 安装
# bin/fhsize.sh
Setting up /var/opt/hypertable
Setting up /etc/opt/hypertable
fshize /opt/hypertable/0.9.7.0: success
-
设计 "CURRENT" 连接
# cd /opt/hypertable
# ln -s 0.9.7.0 current
-
安装 notification-hook.sh 脚本.
# cp conf/notification-hook.tmpl conf/notification-hook.sh
# chmod o+x conf/notification-hook.sh
测试 notification-hook.sh脚本 .
/opt/hypertable/current/conf/notification-hook.sh "Test Message" "This is a test."
-
启动 hypertable
# /opt/hypertable/current/bin/start-all-servers.sh local
DFS broker: available file descriptors: 1024
Started DFS Broker (local)
Started Hyperspace
Started Hypertable.Master
/proc/sys/vm/swappiness = 60
Started Hypertable.RangeServer
Started ThriftBroker
# /opt/hypertable/current/bin/ht shell
Welcome to the hypertable command interpreter.
For information about Hypertable, visit http://hypertable.com
Type 'help' for a list of commands, or 'help shell' for a
list of shell meta commands.
hypertable>
-
测试安装是否有效
# /opt/hypertable/current/bin/ht shell
Welcome to the hypertable command interpreter.
For information about Hypertable, visit http://hypertable.com
Type 'help' for a list of commands, or 'help shell' for a
list of shell meta commands.
hypertable> help
USE ................ Sets the current namespace
CREATE NAMESPACE ... Creates a new namespace
DROP NAMESPACE ..... Removes a namespace
EXISTS TABLE ....... Check if table exists
CREATE TABLE ....... Creates a table
DELETE ............. Deletes all or part of a row from a table
DESCRIBE TABLE ..... Displays a table's schema
DROP TABLE ......... Removes a table
RENAME TABLE ....... Renames a table
DUMP TABLE ......... Create efficient backup file
ALTER TABLE ........ Add/remove column family from existing table
INSERT ............. Inserts data into a table
LOAD DATA INFILE ... Loads data from a TSV input file into a table
SELECT ............. Selects (and display) cells from a table
SHOW CREATE TABLE .. Displays CREATE TABLE command used to create table
SHOW TABLES ........ Displays only the list of tables in the current namespace
GET LISTING ........ Displays the list of tables and namespace in the current namespace
Statements must be terminated with ';'. For more information on
a specific statement, type 'help <statement>', where <statement> is from
the preceding list.
hypertable>quit
-
停止 hypertable
运行下列命令停止 Hypertable
$ /opt/hypertable/current/bin/stop-servers.sh
1.5. 检验安装
创建一个表
# echo "USE '/'; CREATE TABLE foo ( c1, c2 ); GET LISTING;" \
> | /opt/hypertable/current/bin/ht shell --batch
foo
sys (namespace)
tmp (namespace)
插入一些数据
# echo "USE '/'; INSERT INTO foo VALUES('001', 'c1', 'very'), \
> ('000', 'c1', 'Hypertable'), ('001', 'c2', 'easy'), ('000', 'c2', 'is');" \
> | /opt/hypertable/current/bin/ht shell --batch
查询数据
# echo "USE '/'; SELECT * FROM foo;" \
> | /opt/hypertable/current/bin/ht shell --batch
000 c1 Hypertable
000 c2 is
001 c1 very
001 c2 easy
如果你想清楚所有表运行下面命令
$ /opt/hypertable/current/bin/stop-servers.sh
$ /opt/hypertable/current/bin/clean-database.sh
2. Code examples
http://hypertable.com/documentation/code_examples/
2.1. PHP
设置环境变量
export PHPTHRIFT_ROOT=/opt/hypertable/current/lib/php
安装PHP环境
# yum install php-cli
建立测试文件
# vim lib/php/test.php
<?php
if (!isset($GLOBALS['THRIFT_ROOT']))
$GLOBALS['THRIFT_ROOT'] = getenv('PHPTHRIFT_ROOT');
require_once dirname(__FILE__).'/ThriftClient.php';
$client = new Hypertable_ThriftClient("localhost", 38080);
$namespace = $client->namespace_open("");
echo "HQL examples\n";
print_r($client->hql_query($namespace, "show tables"));
print_r($client->hql_query($namespace, "select * from foo"));
运行测试程序
# php lib/php/test.php
HQL examples
Hypertable_ThriftGen_HqlResult Object
(
[results] => Array
(
[0] => foo
)
[cells] =>
[scanner] =>
[mutator] =>
)
Hypertable_ThriftGen_HqlResult Object
(
[results] =>
[cells] => Array
(
[0] => Hypertable_ThriftGen_Cell Object
(
[key] => Hypertable_ThriftGen_Key Object
(
[row] => 000
[column_family] => c1
[column_qualifier] =>
[timestamp] => 1361518099519878001
[revision] => 1361518099519878001
[flag] => 255
)
[value] => Hypertable
)
[1] => Hypertable_ThriftGen_Cell Object
(
[key] => Hypertable_ThriftGen_Key Object
(
[row] => 000
[column_family] => c2
[column_qualifier] =>
[timestamp] => 1361518099519878002
[revision] => 1361518099519878002
[flag] => 255
)
[value] => is
)
[2] => Hypertable_ThriftGen_Cell Object
(
[key] => Hypertable_ThriftGen_Key Object
(
[row] => 001
[column_family] => c1
[column_qualifier] =>
[timestamp] => 1361518099519878003
[revision] => 1361518099519878003
[flag] => 255
)
[value] => very
)
[3] => Hypertable_ThriftGen_Cell Object
(
[key] => Hypertable_ThriftGen_Key Object
(
[row] => 001
[column_family] => c2
[column_qualifier] =>
[timestamp] => 1361518099519878004
[revision] => 1361518099519878004
[flag] => 255
)
[value] => easy
)
)
[scanner] =>
[mutator] =>
)