集群安装部署运行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开头的文件,文件里应该有内容
安装完成
- 集群安装部署运行Graphlab
- Graphlab并行集群安装教程
- GraphLab 安装在Hadoop集群
- graphlab安装
- GraphLab编译运行
- GraphLab集群搭建和测试
- QPID集群安装部署
- Redis集群安装部署
- Spark集群安装部署
- RHCS集群安装部署
- hadoop集群安装部署
- elasticsearch集群部署安装
- Spark集群安装部署
- Solr集群安装部署
- zooekeeper集群安装部署
- storm 集群 安装 部署
- elasticsearch 集群安装部署
- Hadoop集群安装部署
- wind8 鼠标键盘用不了的问题解决
- ReferenceError: Error #1069: 在 spark.components.RadioButtonGroup 上找不到属性 label,且没有默认值
- android应用程序跳转到系统的各个设置页面
- 模式对话框非模式对话框添加工具栏、菜单、状态栏总结
- 一种将图片绘制在一个圆形区域内的简单方法——CGContextClip
- 集群安装部署运行Graphlab
- 我的github简历
- Qt学习之路 简易俄罗斯方块
- distributor之Interrupt Clear-Pending Registers, GICD_ICPENDRn
- settimer、ontimer用法 .
- 写个八皇后
- MySQL 增加 Sequence 管理功能
- liunx下cpu占用率高如何定位代码问题
- Linux下配置Popush——陈键