test150、test151、test152、test153、test154、test155、test156、test157、test158、test159、
test60、test61、test164。每个服务器上都建有gougou用户,test150为master,其余为slave。
一、安装部分
1. 下载GPS安装包。在虚拟机上的/home/gougou目录下创建GPS文件夹,进入/home/gougou/GPS,执行下述命令。
svn co https://subversion.assembla.com/svn/phd-projects/gps/trunk
下载完成后在GPS文件夹下会生成trunk文件夹,trunk文件夹里包含了GPS的源码等文件。把trunk文件夹下的所有文件移动到GPS中,然后删除trunk文件夹。最后把整个GPS文件夹拷贝到test150:/home/gougou目录下。
注:下面的操作均在test150:/home/gougou/GPS/上进行。
2. GPS默认支持的hadoop版本是hadoop-core-0.20.203.0.jar。若想更新为更高的hadoop版本,如hadoop-1.0.3。则把libs下面的hadoop-core-0.20.203.0.jar替换为hadooop-core-1.0.3.jar即可。
$ rm libs/hadoop-core-0.20.203.0.jar
$ cp hadoop-1.0.3/hadooop-core-1.0.3.jarlibs/
3. 修改 local-master-script文件夹下的make_gps_node_runner_jar.sh和manifest.txt文件,把里面的hadoop-core-0.20.203.0.jar替换为hadooop-core-1.0.3.jar即可。
4. 修改conf目录下的gps-env.sh,设置GPS_LOG_DIRECTORY和GPS_DIR变量值。如下:
GPS_LOG_DIRECTORY=/home/gougou/GPS/logs
GPS_DIR=/home/gougou/GPS
5. 编译GPS和Examples源码。命令如下:
$ cd local-master-scripts //进入目录
//编译GPS源码和Examples
$ ./make_gps_node_runner_jar.sh
//在GPS目录下,生成gps-0.0.1-slave.tar.gz
$ ./make_gps_tar_gz.sh
6. 在master-scripts目录下编辑slaves文件
cd master-scripts
$ vi slaves ,加入slaves机器名。结果如下:
7. 在每台slave机子上创建/home/gougou/GPS/目录(使用ShellUtils里面的脚本),
然后,拷贝并解压gps-0.0.1-slave.tar.gz到每个slave机子的/home/gougou/GPS文件夹下。命令如下:
$ cd master-scripts
$ copy_and_untar_gps_tar_to_slaves.sh nslaves //nslaves写为12即可。
注:原来的copy_and_untar_gps_tar_to_slaves.sh脚本默认是把gps-0.0.1-slave.tar.gz拷贝每台slave的~/(即/home/gougou)目录下,并在该目录解压。Shell脚本如下:
而我们的目的是要拷贝到/home/gougou/GPS目录下,并解压。所以要修改copy_and_untar_gps_tar_to_slaves.sh脚本。先备份。
$cp copy_and_untar_gps_tar_to_slaves.sh copy_and_untar_gps_tar_to_slaves.sh.bak
修改后的如下:
8. 在每个slave上创建 第四步在conf/gps-env.sh定义的GPS_LOG_DIRECTOR。
$ cd master-scripts
$ ./make_gps_log_directories_in_slaves.sh nslaves //nslaves写为12即可。
强调:千万务必在master(test150)的/home/gougou/GPS/目录下创建logs文件夹,否则不会启动gps-master进程。出错!!!
此错误花费一天时间所解。
二、运行ExampleOn GPS
9. 配置machine-config文件(在master-scripts下新建machine_config_test.cfg),包含每个节点(master和slave)的ID、机器名和端口三部分。master的ID为-1,slave从0开始,依次增加1。端口为通信端口,可自定义。
10.把machine-config上传到HDFS上。
hadoop fs -mkdir machine-configs
hadoop fs –put machine_config_test.cfg machine-configs
11.上传测试数据到HDFS上。
hadoop fs -mkdir GPSTestData
hadoop fs -put soc-Epinions1-d-n.txt GPSTestData
12.在master-scripts目录里运行start_gps_nodes.sh来运行job。原理:在master和每个slave上的scripts文件夹里运行./start_gps_nodes.sh脚本,该scripts/start_gps_nodes.sh脚本会运行gps_node_runner.jar来执行job。
注:自带的master-scripts/start_gps_nodes.sh脚本里,ssh到slave时,没有写机器名(如只是ssh test145 … ,因为如果master采用的是gougou用户,sshtest154后还默认是gougou用户),虽不会出错,但是不完善。原有:
故在ssh时添加用户,使其成为ssh user@test1xx。修改后如下:
运行job的命令如下:
./start_gps_nodes.sh 12 quick-start \
"-ifs GPSTestData/soc-Epinions1-d-n.txt \
-hcf/home/gougou/hadoop-1.0.3/conf/core-site.xml \
-jcgps.examples.pagerank.PageRankVertex###JobConfiguration \
-mcfg machine-configs/test_machine_config.cfg \
-log4jconfig/home/gougou/GPS/trunk/conf/log4j.config \
-other -max###40"
运行后,在slave机子上,在/home/gougou/GPS/ logs目录下查看运行log,会发现提示错误:java:commandnot found。
原因:ssh gougou@test ‘command’ ,该command只能识别系统自带的命令,因此不能识别scripts/start_gps_nodes.sh脚本里面的java命令。
修改方法1(原创):在scripts/start_gps_nodes.sh脚本里,添加
source /etc/profile
JAVA_HOME的环境变量定义在该配置文件中,即运行脚本的时候编译下.bashrc,就能识别脚本后面的java命令。
注:若把Java环境变量设置在.bashrc中,然后在脚本scripts/start_gps_nodes.sh中
添加 source /home/gougou/.bashrc 是不行的,还是不能识别java命令。
修改方法2(原创):在scripts/start_gps_nodes.sh脚本里,添加
写java命令的全路径。/home/gougou/jdk1.7.0_25/bin/java即可
修改后调用master-scripts里的脚本,把修改后的start_gps_nodes.sh拷贝到所有slave上。
./copy_start_gps_node_script_to_slaves.sh12
转载请注明出处。