RAMCloud编译部署指南
Posted ystu
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了RAMCloud编译部署指南相关的知识,希望对你有一定的参考价值。
作者:tuyunshan
RAMCloud技术交流QQ群:295905581
RAMCloud编译部署指南
1. 编译环境要求
- GNU Make (Anything reasonably recent)
- GNU g++ (4.9.x)
- git (>= 1.6.0)
- Perl (Anything reasonably recent)
- For mergedeps.pl, which automatically inserts included headers in source files into the make dependencies.
- Python 2.6, epydoc
- Boost
- If you’re having issues with Boost on Ubuntu, check boost ticket #3844.
- pcre
- Doxygen 1.7.2
- protocol buffers
- ZooKeeper
- java and javac (>= 1.7.0_25)
2. CentOS下编译环境搭建
2.1 概述
本章中所有操作,都是在CentOS 6.5版本上安装部署完成的。不同机器上的配置可能不一样,可以先查看上述编译环境,如果某些编译环境满足要求,下述的相应步骤可以跳过。
注:可以把yum源改换成阿里云源,以下许多就可以通过yum安装了!
2.2 安装GNU Make
使用yum安装
yum -y make automake
2.3 升级gcc/g++
因为在RAMCloud源码中采用c++11标准,在编译时候需要加入-std=c++11
选项,所以需要升级gcc/g++的版本(本人经验证明4.9.x版本以上都是可以的)。
第一步:下载gcc安装包(也可手动下载并导入)
wget ftp://ftp.gnu.org/gnu/gcc/gcc-4.9.2/gcc-4.9.2.tar.gz
第二步:解压下载文件
tar -xzvf gcc-4.9.2.tar.gz
第三步:下载gcc依赖文件和库
cd gcc-4.9.2 ./contrib/download_prerequisites
注:如果不能下载gcc依赖文件和库,可以手动下载安装gcc所需的mpfr、gmp和mpc文件(详细安装步骤可以百度)。
第四步:配置gcc
建立一个输出目录,编译时所有生成的中间文件都放到该目录下:mkdir build
工作目录切换至输出目录,并在其中执行配置和安装:
cd build
执行configure配置安装文件,其中
--prefix=/usr/local/gcc-4.9.2
参数给出了gcc安装目录:../configure --prefix=/usr/local/gcc --enable-threads=posix --disable-checking --enable-languages=c,c++ --disable-multilib
第五步:编译gcc(这个过程会很漫长,大约3个小时左右,请耐心等待)
make
第六步:安装gcc
make install
如果已经安装了其他版本的gcc,并且需要备份的,可以采取以下命令:
第一步:进入“/usr/bin”目录
cd /usr/bin
第二步:依次执行以下命令,重命名原有的gcc链接文件以作为备份
mv gcc gcc.bak mv g++ g++.bak
第三步:依次执行以下命令,建立gcc 4.9.2的链接
ln -s /usr/local/gcc/bin/gcc /usr/bin/gcc ln -s /usr/local/gcc/bin/g++ /usr/bin/g++
最后,可以执行gcc --verion
可以查看gcc版本,验证是否安装成功。
2.4 安装git
Git是一个开源的分布式版本控制工具。安装git,主要是为了从github上pull源码。
通过yum工具安装git(这种方法比较简单)
yum install git
源码安装git:先从Git官网下载源码,然后解压,依次输入:
./config
,make
,sudo make install
这几个命令安装就好了。
2.5 安装Perl
第一步:下载perl源码包
wget http://www.cpan.org/src/5.0/perl-5.16.1.tar.gz
第二步:解压源码包
tar -xzvf perl-5.16.1.tar.gz
第三步:编译并安装(目录可以自定义)
cd perl-5.16.1 ./Configure -des -Dprefix=/usr/local/perl make make test make install
如果系统以前已安装了旧版本的perl的话,替换系统原有的版本。
第一步:重命名原有的gcc链接文件以作为备份
mv /usr/bin/perl /usr/bin/perl.bak
第二步:建立perl 5.16.1的链接
ln -s /usr/local/perl/bin/perl /usr/bin/perl
最后,可以执行perl -v
可以查看perl版本,验证是否安装成功。
2.6 安装Python 2.6
第一步:下载Python源码包
wget http://www.python.org/ftp/python/2.6.6/Python-2.6.6.tgz
第二步:解压源码包
tar xzf Python-2.6.6.tgz
第三步:编译并安装(目录可以自定义)
cd Python-2.6.6 ./configure --prefix=/usr/local/python2.6 make make install
第四步:创建一个python2.6的链接
ln -sf /usr/local/python/bin/python2.6 /usr/bin/python2.6
完成后就可以在命令行中输入 python2.6 运行刚刚安装的python2.6.6 版本
2.7 安装Boost
在linux平台下,要编译安装Boost,除gcc和gcc-c++之外,还需要两个开发库:bzip2-devel 和python-devel,因此在安装前应该先保证这两个库已经安装。
yum install bzip2 bzip2-devel bzip2-libs python-devel -y
- 第一步:到Boost官网下载源码包,本人下载的是boost_1_52_0.tar.bz2。
第二步:解压源码包
bzip2 -d boost_1_52_0.tar.bz2 tar -xvf boost_1_52_0.tar
第三步:编译安装,boost源码包中有配置脚本。
cd boost_1_52_0 ./bootstrap.sh ./b2 ./b2 install --prefix=/usr/local/boost_1_52_0
安装完毕后的头文件默认是在/usr/local/boost_1_52_0/include目录下,.a和.so在/usr/local/boost_1_52_0/lib目录下。然后将需要使用的库cp
至/usr/lib64 。不然在执行代码时,ldd会提示找不到.so文件。
2.8 安装pcre
第一步:使用
rpm
命令查看是否安装了pcre软件rpm -qa pcre
第二步:编译升级到新版本的pcre。首先把系统里的旧版删除了,然后再进行安装。使用如下命令进行卸载它。
rpm -e --nodeps pcre
第三步:yum安装pcre
yum pcre pcre-devel
2.9 安装Doxygen 1.7.2
在Doxygen源码安装过程中,需要用到cmake编译器,所以需要安装cmake(如果安装了cmake,此步可跳过)。
安装cmake
第一步:获取cmake源码包
wget http://www.cmake.org/files/v2.8/cmake-2.8.10.2.tar.gz
第二步:解压源码包
tar -zxvf cmake-2.8.10.2.tar.gz
第三步:编译安装cmake
cd cmake-2.8.10.2 ./bootstrap gmake gmake install
安装Doxygen
第一步:从github仓库拉取源码
git clone https://github.com/doxygen/doxygen.git
第二步:编译Doxygen源码
cd doxygen mkdir build cd build cmake -G "Unix Makefiles" .. make
第三步:安装Doxygen
make install
2.10 安装protocol buffers
第一步:获取源码包
wget https://github.com/google/protobuf/archive/v2.6.1.zip
第二步:解压源码包
unzip protobuf-2.6.1.zip
第三步:编译安装
cd protobuf-2.6.1 ./configure --prefix=/usr/local/protobuf make make check make install
第四步:配置环境
到此步还没有安装完毕,在/etc/profile或者用户目录~/.bash_profile添加下面内容
####### add protobuf lib path ######## #(动态库搜索路径) 程序加载运行期间查找动态链接库时指定除了系统默认路径之外的其他路径 export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/protobuf/lib/ #(静态库搜索路径) 程序编译期间查找动态链接库时指定查找共享库的路径 export LIBRARY_PATH=$LIBRARY_PATH:/usr/local/protobuf/lib/ #执行程序搜索路径 export PATH=$PATH:/usr/local/protobuf/bin/ #c程序头文件搜索路径 export C_INCLUDE_PATH=$C_INCLUDE_PATH:/usr/local/protobuf/include/ #c++程序头文件搜索路径 export CPLUS_INCLUDE_PATH=$CPLUS_INCLUDE_PATH:/usr/local/protobuf/include/ #pkg-config 路径 export PKG_CONFIG_PATH=/usr/local/protobuf/lib/pkgconfig/ ######################################
2.11 安装ZooKeeper
安装部署ZooKeeper
第一步:下载ZooKeeper源码包
wget http://www.apache.org/dist//zookeeper/zookeeper-3.3.6/zookeeper-3.3.6.tar.gz
第二步:解压ZooKeeper源码包
tar zxvf zookeeper-3.3.6.tar.gz cd zookeeper-3.4.6
第三步:配置ZooKeeper
cp conf/zoo_sample.cfg conf/zoo.cfg vi conf/zoo.cfg
配置信息(单机版)如下:
tickTime=2000 initLimit=10 syncLimit=5 dataDir=/zoo/data dataLogDir=/zoo/logs clientPort=4180 #如果报错端口被占用,可以使用下面的参数配置 #admin.serverPort=12321
如果想要配置集群版,可以参照官方或网上ZooKeeper配置教程
第四步:启动ZooKeeper服务器
启动ZooKeeper服务./bin/zkServer.sh start
停止ZooKeeper服务
./bin/zkServer.sh stop
安装ZooKeeper客户端
编译安装
cd zookeeper-3.4.5/src/c ./configure make make install
测试客户端
./cli_mt localhost:4180
2.12 java and javac
用yum安装java
第一步:查看CentOS自带JDK是否已安装。
yum list installed |grep java
第二步:若有自带安装的JDK且版本不符合要求,卸载CentOS系统自带Java环境。
卸载JDK相关文件输入yum -y remove java-1.7.0-openjdk*
卸载tzdata-java输入
yum -y remove tzdata-java.noarch
当结果显示为Complete!即卸载完毕。
第三步:查看yum库中的Java安装包。
yum -y list java*
第四步:使用yum安装Java环境。
yum -y install java-1.7.0-openjdk*
最后,使用java -version
查看java版本。
3. Debian下编译环境搭建
3.1 概述
本章中所有操作,都是在Debian 8.2版本上安装部署完成的。不同机器上的配置可能不一样,可以先查看上述编译环境,如果某些编译环境满足要求,下述的相应步骤可以跳过。
3.2 通过aptitude工具安装
Debian 8.2默认gcc版本为4.9.2,所以在此不用升级。下面安装上述要求的其它环境。
aptitude install build-essential git-core doxygen libboost1.42-all-dev libpcre3-dev protobuf-compiler libprotobuf-dev libcrypto++-dev libevent-dev libboost-all-dev libgtest-dev openjdk-7-source libzookeeper-mt-dev libssl-dev libcrypto++-dev
4. 编译RAMCloud
4.1 pull源码
RAMCloud源码放置在github仓库中,可以通过git clone
命令拉取源码。
git clone https://github.com/PlatformLab/RAMCloud.git
4.2 编译源码
目标文件和可执行文件将出现在子目录obj.xxx,xxx是你的当前分支(如:master)。
cd RAMCloud
make -j12
默认情况下,以debug模式编译RAMCloud,这个会使系统的速度大大降低。如果你想测试性能,可以不采用debug模式。
make clean
make -j12 DEBUG=no
更多编译选项可以参照官网。
5. 部署RAMCloud
集群配置,特定服务器启动,请参照下面的详细叙述。
10.11.1.208:Zookeeper , Coordinator
10.11.1.209:Server(master和backup)
10.11.1.205:Server(master和backup)
10.11.1.204:Server(master和backup)
10.11.1.202:Server(master和backup)
10.11.1.206:Client
5.1 启动ZooKeeper
cd zookeeper-3.4.5
./bin/zkServer.sh start
5.2 启动Coordinate
cd RAMCloud
./obj.master/coordinator -C tcp:host=10.11.1.208,port=11100 -x zk:10.11.1.208:4180
具体参数含义,可以参照官网,也可以通过-h
或--help
5.3 启动Server
cd RAMCloud
sudo ./obj.master/server -L tcp:host=10.11.1.205,port=1105 -x zk:10.11.1.208:4180 --totalMasterMemory 16000 -f /home/tuyunshan/rc/data --segmentFrames 10000 -r 2
具体参数含义,可以参照官网,也可以通过-h
或--help
5.4 启动client
cd RAMCloud
sudo ./obj.master/client -C tcp:host=10.11.1.208,port=11100 -L tcp:host=10.11.1.205,port=1105
具体参数含义,可以参照官网,也可以通过-h
或--help
5.5 运行RAMCloud自带的测试程序
cd RAMCloud
sudo obj.master/ClusterPerf -C tcp:host=10.11.1.208,port=11100
具体参数含义,可以参照官网,也可以通过-h
或--help
由于作者水平有限,欢迎指正。
以上是关于RAMCloud编译部署指南的主要内容,如果未能解决你的问题,请参考以下文章