Trafodion 开发环境搭建

来源:互联网 发布:互联网过滤软件 编辑:程序博客网 时间:2024/04/30 23:54

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运行的前提条件,主要命令如下

//关闭iptablesservice iptables stopchkconfig iptables off//安装并启动ntpyum install -y ntpservice ntpd startchkconfig ntpd on//关闭selinuxsetenforce 0sed -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/hostsecho "192.168.0.16  cent-1  cent-1.novalocal" >>/etc/hosts//修改ulimitecho "# Added for Trafodion: Max locked-in memory sizeroot  soft    memlock 49595556root  hard    memlock 99191112# Added for Trafodion: Increase maximum number of file opens since Trafodion needs manyroot  soft    nofile  32768root  hard    nofile  32768# Added for Trafodion: Increase maximum number of pending signalsroot  soft    sigpending 515196root  hard    sigpending 515196# Added for Trafodion: Increase maximum number of procesesroot  soft    nproc     267263root  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_workspacecd ~/my_workspacegit clone https://github.com/apache/incubator-trafodion.git

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

//以下步骤创建辅助目录并添加TOOLSDIR环境变量mkdir ~/toolsmkdir ~/downloadecho 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.0apache-maven-3.3.3bison_3_linuxdest-llvm-3.2dest-mpich-3.0.4hadoop-2.6.0icu4c_4.4protobuf-2.5.0thrift-0.9.0udis86-1.7.2zookeeper-3.4.5//检查mvn环境变量配置成功mvn -v

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

cd ~/my_workspace/incubator-trafodionsource ./env.shmake all

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

cd ~/my_workspace/incubator-trafodionsource ./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-trafodionsource ./env.sh//检查hbase是否可用hbcheck

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

Stderr being written to the file: /root/my_workspace/incubator-trafodion/core/sqf/logs/hbcheck.logZooKeeper Quorum: localhost, ZooKeeper Port  : 2181HBase is available!HBase version: 1.2.0-cdh5.7.1HMaster: cent-1,55185,1510713313066Number of RegionServers available:1RegionServer #1: cent-1,33702,1510713314440Number of Dead RegionServers:1Dead RegionServer #1: cent-1,34995,1510712037725Number of regions: 2Number of regions in transition: 0Average load: 2.0

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

cd ~/my_workspace/incubator-trafodionsource ./env.shcds//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               2RMS             4               4DcsMasterDcsServermxosrvr         0               0

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

cd ~/my_workspace/incubator-trafodionsource ./env.shcds//安装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               2RMS             4               4DcsMaster       1               1DcsServer       1               1mxosrvr         4               4RestServer      0               0

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

[root@cent-1 incubator-trafodion]# trafciWelcome to Apache Trafodion Command InterfaceCopyright (c) 2015-2017 Apache Software FoundationJLine support is: falseHost Name/IP Address: localhost:23400User Name: zzConnected to Apache TrafodionSQL>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.
原创粉丝点击