集群安装部署运行Graphlab

来源:互联网 发布:java int转string 编辑:程序博客网 时间:2024/06/09 19:29

操作系统:ubuntu12.04 LTS

Step 1:在一台机器上安装graphlab

默认当前工作目录在用户主目录(/home/username)

1、安装软件依赖(每台机器上都要运行)

sudo apt-get updatesudo apt-get install openssh-serversudo apt-get install gcc g++ build-essential libopenmpi-dev openmpi-bin default-jdk cmake zlib1g-dev git

2、下载源代码

git clone https://github.com/graphlab-code/graphlab.git

解压到主目录

3、编译源码

在graphlab目录下,运行 ./configure ,产生两个子目录release/(发行版) 和 debug/(调试版)。 编译你想使用的文件。如你想使用graphlab toolkits中graph_analytics,则进入release/toolkits/graph_analytics目录,运行make,将只编译graph_analytics中的工具(pagerank,triangle_count等)。进入release/toolkits,运行make,将编译所有的toolkits。编译会很慢。 可以使用make –j n,启动n个并行任务,n应小于核数,会加快编译,但消耗内存较多,机器运行会卡。

编译过程中可能出现错误:

***/libhdfs/configure: permission denied

权限问题,修改:

sudo chmod 777 configure

Step 2:复制graphlab文件到集群中其它机器

1、machines文件创建

在用户主目录中创建一个新文件“machines”。文件中存放集群中所有机器的ip(或机器名,需要配置/etc/hosts把机器名和ip映射),每个ip单独一行。

2、配置任意两台机器间无密码ssh登录
(1) 打开终端,输入

ssh-keygen -t rsa

遇到提示输入文件名或是密码的地方不用管,只需按回车键即可。 在用户主目录下会有生成一个".ssh"目录,“ls .ssh”之后会发现里面有两个文件,一个是id_rsa,另一个是id_rsa.pub,前者是私钥,后者是公钥。 (2) 把公钥添加到授权文件中

cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys

(3) 修改文件"authorized_keys"权限

sudo chmod 600 ~/.ssh/authorized_keys

(4)把.ssh目录和machines文件拷到集群中所有机器的主目录中,注意修改文件权限: .ssh 权限700 /.ssh/authorized_keys权限600 .ssh应包含三个文件id_rsa, id_rsa.pub, authorized_keys 此时,无密码登录配置成功,任意两台机器间可以无密码登录。如在机器1上访问机器2,运行ssh username_of_2@ip_of_2,应该不用输入密码。 3、复制graphlab文件 (1) 修改~/graphlab/scripts/mpirsync文件 如果本机用户名不是ubuntu,把其中的ubuntu改为你的用户名 如果没有配置/etc/hosts文件,把$(hostname)改为本机ip (2) 复制~/graphlab/deps/local到所有机器,运行

cd ~/graphlab/deps/local~/graphlab/scripts/mpirsync

(3) 将/release中已编译好的你需要的文件复制到所有机器。进入编译好的目录(如~/graphlab/release/toolkits),运行下列命令,将把该目录下的已编译文件复制到所有机器的相同位置。

cd ~/graphlab/release/toolkits~/graphlab/scripts/mpirsync

step 3 测试graphlab

测试之前需要保证所有机器的防火墙关闭,可以使用

sudo ufw disable

关闭并重启机器。否则会在Will find first IPv4 non-loopback address matching the subnet 之后卡住。 此时graphlab不读写输入和输出,看终端的log 运行

mpiexec -n 3 -hostfile ~/machines ~/graphlab/release/toolkits/graph_analytics/pagerank --powerlaw=100000

将使用100000个点的人造网络运行pagerank,产生三个mpi实例,在三台机器上并行计算。

step4 安装hdfs

(1) 在master节点下载hadoop安装包,将hadoop-1.2.1.tar.gz文件放到用户主目录下解压:

sudo tar -xvzf hadoop-1.2.1.tar

(2) 配置 hadoop-1.2.1/conf/hadoop-env.sh 添加JAVA_HOME(step1 安装软件依赖时,若默认安装openjdk6,则添加以下内容。可以先检查以下目录是否存在:

export JAVA_HOME=/usr/lib/jvm/java-6-openjdk-amd64

(3) 配置hadoop-1.2.1/conf/core-site.xml

1<?xml version="1.0"?>   2<?xml-stylesheet type="text/xsl"href="configuration.xsl"?>   3<configuration>   4<property>   5 <name>fs.default.name</name>   6  <value>hdfs://本机IP:49000</value>   7</property>   8<property>   9  <name>hadoop.tmp.dir</name>   (备注:请先在 hadoop-1.2.1下建立 tmp 文件夹)10 <value>/home/用户名/hadoop-1.2.1/tmp</value>   11</property>   12</configuration>  

fs.default.name是NameNode的URI。 hdfs://本机ip:端口 hadoop.tmp.dir :Hadoop的默认临时路径,提前在磁盘上创建此目录

(4) 配置hadoop-1.2.1/conf/mapred-site.xml

1<?xmlversionxmlversionxmlversionxmlversion="1.0"?>   2<?xml-stylesheettypexml-stylesheettypexml-stylesheettypexml-stylesheettype="text/xsl" href="configuration.xsl"?>   3<configuration>   4<property>   5  <name>mapred.job.tracker</name>   6  <value>本机ip:49001</value>   7</property>   8</configuration>

mapred.job.tracker是JobTracker的主机(或者IP)和端口。

(5) 配置 /conf/hdfs-site.xml

1<?xmlversionxmlversionxmlversionxmlversion="1.0"?>   2<?xml-stylesheettypexml-stylesheettypexml-stylesheettypexml-stylesheettype="text/xsl" href="configuration.xsl"?>   3<configuration>   4<property>   5  <name>dfs.name.dir</name>   6  <!--#namenode保存HDFS文件系统的元信息的路径,不能提前创建-->7  <value>/home/用户名/hdaoop-1.2.2/name</value> 8</property>   9<property>   10   <name>dfs.data.dir</name>   11   <!--#真正的datanode数据保存路径,不能提前创建-->12   <value>/home/用户名/hadoop-1.2.1/data</value>  13</property>   14<property>   15  <name>dfs.replication</name>   16  <!-- hdfs数据块的复制份数,默认3。不能超过机器数 -->   17  <value>3</value>   18</property>   19</configuration>  

(6) 配置master和slaves主从节点

配置conf/masters和conf/slaves两个文件,每个主机ip一行。masters只有一个。

(7) 复制hadoop文件到其他机器

cd ~/hadoop-1.2.1~/graphlab/scripts/mpirsync

(8) 配置环境变量,每台机器都要配置 修改/etc/profile,添加

export JAVA_HOME=/usr/lib/jvm/java-6-openjdk-amd64export JRE_HOME=/usr/lib/jvm/java-6-openjdk-amd64/jreexport CLASSPATH=.:$CLASSPATH:$JAVA_HOME/lib:$JRE_HOME/libexport PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin#HADOOPexport HADOOP_HOME=/home/用户名/hadoop-1.2.1export PATH=$PATH:$HADOOP_HOME/binexport HADOOP_HOME_WARN_SUPPRESS=1

运行

source /etc/profile

使配置生效

(9) 测试hdfs

hadoop namenode -format  #格式化文件系统  start-all.sh                 #启动所有节点hadoop dfsadmin -report   #查看集群状态(可能需要等一会,集群启动才成功)hadoop fs -mkdir /output   #在根目录下创建output目录      hadoop fs -put ./Epinions.txt /output   #拷贝Epinions.txt文件到根目录

(10) 测试graphlab+hdfs

mpiexec -n 2  --hostfile ~/machines env CLASSPATH=`hadoop classpath`  ~/graphlab/release/toolkits/graph_analytics/pagerank --graph=hdfs:///Epinions.txt  --format=tsv --saveprefix=hdfs:///output/out

需要特别注意的是给CLASSPATH赋值的时候,hadoop classpath加上的不是单引号,而是上逗号(tab键上面的那个),用单引号会报一大堆错!

查看结果

hadoop fs -ls /output

应该有多个以out开头的文件,文件里应该有内容

安装完成

0 0
原创粉丝点击