Trafodion 开发环境搭建

甘英光
2023-12-01

Trafodion是Apache下面的开源孵化项目,既然是开源,任何人都可以修改并提交你的代码,Trafodion欢迎大家通过各种方式为开源社区贡献一份力量,最直接的方式当然是提交你的代码。

要想将自己的代码提交到开源Trafodion社区,首先得准备一套自己的开发环境,有了自己的开发环境,就可以在下载下来的Trafodion源码基础上修改、编译并测试,本篇幅通过详细步骤描述如何搭建Trafodion的开发环境,希望对有志于贡献Trafodion的各位提供一点帮助,如有错误,还请指正!

1 首先需要准备一台自己的开发机器,推荐操作系统版本为CentOS 6.5~6.7(注:以下步骤的执行均建议使用root用户),操作系统版本可通过以下命令查看

[root@cent-1 ~]# cat /etc/centos-release 
CentOS release 6.8 (Final)

2 操作系统基本配置,包括修改ulimit、关闭iptables、关闭selinux、安装ntp、修改/etc/hosts、配置本机ssh免密码、安装JDK(推荐oracle jdk1.7),因为Trafodion是基于Hadoop,这些配置均是Hadoop及Trafodion运行的前提条件,主要命令如下

//关闭iptables
service iptables stop
chkconfig iptables off
//安装并启动ntp
yum install -y ntp
service ntpd start
chkconfig ntpd on
//关闭selinux
setenforce 0
sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
//安装oracle jdk1.7,需提前准备好rpm包,若Linux自带jdk可忽略此步骤
rpm -ivh oracle-j2sdk1.7-1.7.0+update67-1.x86_64.rpm
//编辑/etc/hosts
echo "192.168.0.16  cent-1  cent-1.novalocal" >>/etc/hosts
//修改ulimit
echo "# Added for Trafodion: Max locked-in memory size
root  soft    memlock 49595556
root  hard    memlock 99191112
# Added for Trafodion: Increase maximum number of file opens since Trafodion needs many
root  soft    nofile  32768
root  hard    nofile  32768
# Added for Trafodion: Increase maximum number of pending signals
root  soft    sigpending 515196
root  hard    sigpending 515196
# Added for Trafodion: Increase maximum number of proceses
root  soft    nproc     267263
root  hard    nproc     267263" >>/etc/security/limits.conf

3 yum安装开发环境需要的一些工具和第三方包

yum install -y alsa-lib-devel ant ant-nodeps boost-devel cmake \
         device-mapper-multipath dhcp flex gcc-c++ gd git glibc-devel \
         graphviz-perl gzip java-1.7.0-openjdk-devel \
         libX11-devel libXau-devel libaio-devel \
         libcurl-devel  libibumad-devel \
         libiodbc libiodbc-devel librdmacm-devel  \
         libxml2-devel lua-devel lzo-minilzo \
         openldap-clients openldap-devel \
         openmotif openssl-devel  \
         openssl-static perl-Config-IniFiles perl-Config-Tiny \
         perl-DBD-SQLite perl-Expect perl-IO-Tty perl-Math-Calc-Units \
         perl-Params-Validate perl-Parse-RecDescent perl-TermReadKey \
         perl-Time-HiRes protobuf-compiler protobuf-devel \
         readline-devel saslwrapper sqlite-devel \
         unixODBC unixODBC-devel uuid-perl wget xerces-c-devel xinetd \
         git apr apr-util apr-devel apr-util-devel unzip

4 下载Trafodion源码,提前创建好自己的工作目录,将源码下载至工作目录下,这里假设目录为~/my_workspace

mkdir ~/my_workspace
cd ~/my_workspace
git clone https://github.com/apache/incubator-trafodion.git

5 安装那些无法通过yum安装的第三方软件,这些第三方软件是Trafodion编译时需要依赖的,这些工具可以通过Trafodion源码中traf_tools_setup.sh脚本下载然后自动编译。因此需要我们提交创建两个辅助目录:一个用来存放下载的源代码并编译;另一个用来安装这些软件,作为这些软件的安装目录,需要注意:必须将安装目录设置给TOOLSDIR这个环境变量,Trafodion编译时需要通过这个TOOLSDIR环境变量来找到这些依赖的第三方软件。我们这里使用~/download目录存放下载的源码,用~/tools作为安装目录

//以下步骤创建辅助目录并添加TOOLSDIR环境变量
mkdir ~/tools
mkdir ~/download
echo export TOOLSDIR=~/tools >> ~/.bashrc
. ~/.bashrc

//以下步骤执行traf_tools_setup.sh脚本并安装依赖的第三方软件,此步骤需要通过网络下载软件包,可能会由于网络原因中断,建议多次几次,或者配置代理下载
cd ~/my_workspace/incubator-trafodion
./install/traf_tools_setup.sh -d ~/download -i ~/tools

6 上述步骤执行完成后会下载以下列表软件并安装,包括maven(用于代码编译),为方便后续编译步骤,此处我们需要将maven的可执行文件路径加入到PATH环境变量中,一般也可以通过修改.bashrc来完成,加入完成后可以通过直接”mvn -v”命令检查是否添加成功

//下载软件列表
apache-log4cxx-0.10.0
apache-maven-3.3.3
bison_3_linux
dest-llvm-3.2
dest-mpich-3.0.4
hadoop-2.6.0
icu4c_4.4
protobuf-2.5.0
thrift-0.9.0
udis86-1.7.2
zookeeper-3.4.5
//检查mvn环境变量配置成功
mvn -v

7 编译源代码,编译源代码的过程需要通过网络下载大量的jar包,可能会因为网络问题频繁出错,建议使用代理下载,或者使用一个比较好的maven镜像,抑或者使用本地repository直接替换~/.m2目录

cd ~/my_workspace/incubator-trafodion
source ./env.sh
make all

8 如果只是希望编译Trafodion,那么make all成功即意味着编译成功,但如果希望在开发环境中正常启动Trafodion,则需要先安装好Trafodion依赖的Hadoop和HBase,这可以通过Trafodion源代码中的install_local_hadoop脚本实现,此脚本会下载、安装并启动包括HDFS、Hive、HBase、MySQL在内的服务

cd ~/my_workspace/incubator-trafodion
source ./env.sh
//切换到~/my_workspace/incubator-trafodion/core/sqf/sql/scripts目录
cds
//执行安装本地hadoop,通常需要执行两次,第一次用于给目录添加权限
./install_local_hadoop

9 上述步骤成功后,我们必须开启一个新的shell窗口,在新的shell窗口里面,我们使用hbcheck命令来检查Trafodion所依赖的HBase是否正常工作,只有HBase正常工作,Trafodion才能正常启动。如果HBase没有启动,可以使用swstarthbase启动HBase,也可以使用swstartall启动包括HDFS、Hive、HBase、MySQL在内的所有组件。

cd ~/my_workspace/incubator-trafodion
source ./env.sh
//检查hbase是否可用
hbcheck

如果HBase正常启动,hbcheck的结果大致如下,

Stderr being written to the file: /root/my_workspace/incubator-trafodion/core/sqf/logs/hbcheck.log
ZooKeeper Quorum: localhost, ZooKeeper Port  : 2181

HBase is available!

HBase version: 1.2.0-cdh5.7.1
HMaster: cent-1,55185,1510713313066

Number of RegionServers available:1
RegionServer #1: cent-1,33702,1510713314440

Number of Dead RegionServers:1
Dead RegionServer #1: cent-1,34995,1510712037725
Number of regions: 2
Number of regions in transition: 0
Average load: 2.0

10 如果上述HBase没有问题,现在我们可以启动Trafodion了,启动Trafodion包括sqgen、sqstart、初始化等步骤,具体命令如下

cd ~/my_workspace/incubator-trafodion
source ./env.sh
cds
//sqgen主要用于生成环境变量、certificate等
sqgen
//启动Trafodion数据库,包括多个组件如dtm、rms等
sqstart
//启动完成后,需要进行sqlci(命令行SQL客户端)做初始化步骤
sqlci
//初始化,会创建一些trafodion的系统表,可通过hbase shell下list检查表的变化,此命令需在sqlci命令行执行
initialize trafodion;

数据库正常启动后,我们可以使用sqcheck检查当前的进程状态,正常结果如下,

[root@cent-1 incubator-trafodion]# sqcheck

*** Checking Trafodion Environment ***

Checking if processes are up.
Checking attempt: 1; user specified max: 2. Execution time in seconds: 0.

The Trafodion environment is up!


Process         Configured      Actual      Down
-------         ----------      ------      ----
DTM             2               2
RMS             4               4
DcsMaster
DcsServer
mxosrvr         0               0

11 通过以上结果我们可以发现,DTM、RMS进程均正常启动,但DcsMaster、DcsServer、mxosrvr均为空,DCS是客户端和Trafodion服务器连接的桥梁,属于单独的一部分,我们可以通过Trafodion中的脚本install_traf_components来进行安装,并通过dcsstart来启动

cd ~/my_workspace/incubator-trafodion
source ./env.sh
cds
//安装dcs组件
./instal_traf_components
//启动DCS模块的服务,此处需要切换到新的shell窗口执行
dcsstart

DCS启动成功后再通过sqcheck检查所有进程状态如下,

[root@cent-1 incubator-trafodion]# sqcheck

*** Checking Trafodion Environment ***

Checking if processes are up.
Checking attempt: 1; user specified max: 2. Execution time in seconds: 0.

The Trafodion environment is up!


Process         Configured      Actual      Down
-------         ----------      ------      ----
DTM             2               2
RMS             4               4
DcsMaster       1               1
DcsServer       1               1
mxosrvr         4               4
RestServer      0               0

现在我们可以通过Trafci来试用基本的SQL命令吧,

[root@cent-1 incubator-trafodion]# trafci

Welcome to Apache Trafodion Command Interface
Copyright (c) 2015-2017 Apache Software Foundation

JLine support is: false
Host Name/IP Address: localhost:23400
User Name: zz

Connected to Apache Trafodion

SQL>create table t(a int, b int);

--- SQL operation complete.

SQL>showddl t;


CREATE TABLE TRAFODION.SEABASE.T
  (
    A                                INT DEFAULT NULL NOT SERIALIZED
  , B                                INT DEFAULT NULL NOT SERIALIZED
  )
 ATTRIBUTES ALIGNED FORMAT
;

--- SQL operation complete.

SQL>insert into t values(1,2),(3,4);

--- 2 row(s) inserted.

SQL>select * from t;

A           B
----------- -----------
          1           2
          3           4

--- 2 row(s) selected.

SQL>drop table t;

--- SQL operation complete.
 类似资料: