鸿 网 互 联 www.68idc.cn

同步图计算:GraphLite的安装和使用

来源:互联网 作者:佚名 时间:2016-05-15 06:52
http://blog.csdn.net/pipisorry/article/details/51350908 Requirements 1. JDK 1.7.x Hadoop 2.6.x Hadoop的安装参考[Hadoop:Hadoop单机伪分布式的安装和配置] 2. protocol buffers root@dc34d732b74d:/# apt-get update root@dc34d732b74d:/# sudo apt-g

http://blog.csdn.net/pipisorry/article/details/51350908

Requirements

1. JDK 1.7.x + Hadoop 2.6.x

Hadoop的安装参考[Hadoop:Hadoop单机伪分布式的安装和配置]
2. protocol buffers

root@dc34d732b74d:/# apt-get update

root@dc34d732b74d:/# sudo apt-get install protobuf-c-compiler libprotobuf-c0 libprotobuf-c0-dev

下载和安装graphlite

root@dc34d732b74d:/# apt-get install -y git              #没有安装git的话要安装,lz使用的是docker中配置的环境,很多都没有

root@dc34d732b74d:/# cd /opt

root@dc34d732b74d:/opt# git clone https://github.com/schencoding/GraphLite.git

root@dc34d732b74d:/opt/GraphLite/GraphLite-0.20# vim bin/setenv 
export JAVA_HOME=/opt/jdk1.8.0_91
export HADOOP_HOME=/usr/local/hadoop-2.6.4
export GRAPHLITE_HOME=/opt/GraphLite/GraphLite-0.20
root@dc34d732b74d:/opt# . bin/setenv

root@dc34d732b74d:/opt/GraphLite/GraphLite-0.20/# cd engine

root@dc34d732b74d:/opt/GraphLite/GraphLite-0.20/engine# apt-get install -y make      #没有安装make的话要安装
root@dc34d732b74d:/opt/GraphLite/GraphLite-0.20/engine# make

root@dc34d732b74d:/opt/GraphLite/GraphLite-0.20/engine# cd ..

check if bin/graphlite is successfully generated:

root@dc34d732b74d:/opt/GraphLite/GraphLite-0.20# ls bin/          
clean-output  graphlite  hash-partitioner.pl  setenv  start-graphlite  start-worker

Compile and Run Vertex Program

1. build example

root@dc34d732b74d:/opt/GraphLite/GraphLite-0.20/# cd example

root@dc34d732b74d:/opt/GraphLite/GraphLite-0.20/# apt-get install -y g++    #没有安装g++的要安装

root@dc34d732b74d:/opt/GraphLite/GraphLite-0.20/example# make
g++ -std=c++0x -g -O2 -I/usr/local/hadoop-2.6.4/include -I/opt/GraphLite/GraphLite-0.20/include PageRankVertex.cc -fPIC -shared -o PageRankVertex.so
check if example/PageRankVertex.so is successfully generated:

root@dc34d732b74d:/opt/GraphLite/GraphLite-0.20/example# ls
Makefile  PageRankVertex.cc  PageRankVertex.so
2. run example

root@dc34d732b74d:/opt/GraphLite/GraphLite-0.20/example# cd ..

root@dc34d732b74d:/opt/GraphLite/GraphLite-0.20/# /etc/init.d/ssh start           #没有开启ssh的要开启

root@dc34d732b74d:/opt/GraphLite/GraphLite-0.20# start-graphlite example/PageRankVertex.so Input/facebookcombined_4w Output/out

查看输出结果:

root@dc34d732b74d:/opt/GraphLite/GraphLite-0.20# cat Output/out_*

保存docker 容器为images

pika:~$docker ps

pika:~$docker commit 2379 graphlite1

当然也可以测试自己写的代码和输入文件

编写自己的同步图计算程序并测试代码结果

#将自己写的代码KcoreVertex.cc和输入文件的目录(代码和输入文件下载)挂载到docker image的/mnt目录下

Note: KcoreVertex.cc内容:KCore:一个图G的 KCore 是G的子图,这个子图的每个顶点的度>=K;输入:无向图 (有成对的有向边);输出:  KCore 子图中的所有顶点

pika:~$docker run -v /media/pika/files/mine/c_workspace/BDMS/BDMS:/mnt -it graphlite1 bash

root@23791b4028eb:/opt/GraphLite/GraphLite-0.20/example# mv PageRankVertex.cc ori.cc   #重命名之前的文件

root@23791b4028eb:/opt/GraphLite/GraphLite-0.20/example# rm PageRankVertex.so #删除之前产生的中间文件

root@23791b4028eb:/# cp /mnt/*.cc /opt/GraphLite/GraphLite-0.20/example

root@23791b4028eb:/# cp /mnt/part2-input/* /opt/GraphLite/GraphLite-0.20/Input

root@23791b4028eb:/opt/GraphLite/GraphLite-0.20#  . bin/setenv

root@23791b4028eb:/opt/GraphLite/GraphLite-0.20# cd example/

root@23791b4028eb:/opt/GraphLite/GraphLite-0.20/example# make

root@23791b4028eb:/opt/GraphLite/GraphLite-0.20/example# cd ..

root@23791b4028eb:/opt/GraphLite/GraphLite-0.20# /etc/init.d/ssh start 

root@23791b4028eb:/opt/GraphLite/GraphLite-0.20# start-graphlite example/PageRankVertex.so Input/KCore-graph0_4w Output/out 6     #PageRankVertex实际已改成自己写的KcoreVertex,文件名修改的话也要修改Makefile文件再make

root@23791b4028eb:/opt/GraphLite/GraphLite-0.20# cat Output/out_*
0
4
1
5
2
6
3

pika:~$docker ps

pika:~$docker commit <container id> graphlite

from: http://blog.csdn.net/pipisorry/article/details/51350908


网友评论
<