White scenery @showyou, hatena

If you have any comments, you may also send twitter @shsub or @showyou.

Greenplum DatabaseがOSSで公開されたのでビルドしてみた

注)個人の所感なんで所属会社等の意見とは違うかもしれません
 

Greenplum Databaseとは?

雑に言うと並列動作するPostgreSQL8.2です。Pivotal社の製品ですがソースが公開されました。

http://greenplum.org/

Pivotal、高速データ分析が可能なデータベース「Greenplum Database」をオープンソースとしてリリース:CodeZine(コードジン)

んで公開されたのでビルドしてみました。
単純に触るだけなら上のサイトからVMをダウンロードすればいいかと思います。
 
--

 

Ubuntu 14.04のVagrantで、centos6.5で動作しました。
依存ファイルの関係からcentos7の方が楽かもしれません。
 
$ mkdir vagrant-gpdb
$ vim Vagrantfile
  config.vm.box = "centos"
  config.vm.define :node1 do |node|
    node.vm.box = "centos"
    node.vm.network "public_network"
    node.vm.provider "virtualbox" do |vb|
      vb.customize ["modifyvm", :id, "--memory", "2048"]
    end
  end
 
$ vagrant up
vagrant ssh node1
以下node1上で
$ cd gpdb
$ sudo yum install readline-devel zlib-devel curl libmetalink libssh2-devel c-ares c-ares-devel bzip2-devel python-devel ed
$ sudo yum install python-PSI python-lockfile python-setuptools  epydoc
 
 curl 7.20以上が必要なので
$ sudo rpm -Uvh curl-7.45.0-1.0.cf.rhel6.x86_64.rpm  libcurl-devel-7.45.0-1.0.cf.rhel6.x86_64.rpm  libcurl-7.45.0-1.0.cf.rhel6.x86_64.rpm libssh2-devel-1.6.0-2.0.cf.rhel6.x86_64.rpm libssh2-1.6.0-2.0.cf.rhel6.x86_64.rpm
$ configure
$ make
 
...
make[1]: Entering directory `/home/vagrant/gpdb/contrib/indexscan'
sed 's,MODULE_PATHNAME,$libdir/indexscan,g' indexscan.sql.in >indexscan.sql
gcc -O3 -std=gnu99  -Wall -Wmissing-prototypes -Wpointer-arith -Wendif-labels -Wformat-security -fno-strict-aliasing -fwrapv -Wno-unused-but-set-variable -Wno-address  -fpic -I. -I../../src/include -D_GNU_SOURCE   -c -o indexscan.o indexscan.c
gcc -O3 -std=gnu99  -Wall -Wmissing-prototypes -Wpointer-arith -Wendif-labels -Wformat-security -fno-strict-aliasing -fwrapv -Wno-unused-but-set-variable -Wno-address  -fpic -L../../src/port -L../../src/port -Wl,--as-needed -Wl,-rpath,'/data/gpdb/lib',--enable-new-dtags  -shared -o indexscan.so indexscan.o
rm indexscan.o
make[1]: Leaving directory `/home/vagrant/gpdb/contrib/indexscan'
All of Greenplum Database successfully made. Ready to install.
$ sudo make install
find /data/gpdb/lib/python/gppylib -name test -type d | xargs rm -rf
make[1]: Leaving directory `/home/vagrant/gpdb/gpMgmt'
Greenplum Database installation complete.
 
 
$ sudo vim /etc/sysconfig/
HOSTNAME=mdw
$ sudo vim /etc/hosts
add mdw
$ sudo reboot
$ source /data/gpdb/greenplum_path.sh
$ cd gpdb/
$ cat  ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
$ sudo easy_install lockfile==0.9.1
 
[root@mdw ~]# gpseginstall -f /tmp/hostfile -ugpadmin -p gpadmin
 
[root@mdw ~]# mkdir /data1/primary
[root@mdw ~]# mkdir /data2/primary
[root@mdw ~]# mkdir /data3/primary
 
[root@mdw ~]# chown gpadmin:gpadmin /data1/primary
[root@mdw ~]# chown gpadmin:gpadmin /data2/primary
[root@mdw ~]# chown gpadmin:gpadmin /data3/primary
[root@mdw ~]# su - gpadmin
[gpadmin@mdw ~]$ source /data/gpdb/greenplum_path.sh
[gpadmin@mdw ~]$ cp $GPHOME/docs/cli_help/gpconfigs/gpinitsystem_config  /home/gpadmin/gpconfigs/gpinitsystem_config
[gpadmin@mdw ~]$ vi /home/gpadmin/gpconfigs/gpinitsystem_config
declare -a DATA_DIRECTORY=(/data1/primary /data2/primary)
$ vi /tmp/hostfile
今回は
mdw
だけ
[gpadmin@mdw ~]$ gpinitsystem -c gpconfigs/gpinitsystem_config -h /tmp/hostfile
$ export MASTER_DATA_DIRECTORY=/data/master/gpseg-1/
このあとgpstopで止まる。gpstartで起動。
あとはpostgresと一緒なので、
$ createdb hoge
とかで繋がる
hoge=# create table hoge(a int, b text);
hoge=# insert into hoge values (1, 'abc'), (2, 'ggg');
hoge=# select sum(a) from hoge;
 sum
-----
   3
(1 row)