一、Hadoop 2.7分布式集群环境搭建
见博客:Hadoop 2.7分布式集群环境搭建
二、G++安装
Ubuntu:
sudo apt-get install g++
Centos:
yum install gcc-c++
三、MPI安装
tar xzf mpich-3.1.tar.gz
cd mpich-3.1
./configure --prefix=/usr/local/mpich --disable-fortran
make
make install
- 配置环境变量
export MPICH_HOME=/usr/local/mpich
export PATH=$PATH:$MPICH_HOME/bin
四、运行pregel+程序
- 下载system.zip,解压至文件夹如/usr/local/system
- 下载sssp.zip,解压至文件夹如/usr/local/sssp)
- 创建toy.txt,并上传至hdfs
1 0
2 2 3 4
3 2 2 4
4 4 2 3 5 6
5 2 4 6
6 2 4 5
7 3 8 9 10
8 3 7 9 10
9 3 7 8 10
10 3 7 8 9
hadoop fs -mkdir /toyFolder
hadoop fs -put toy.txt /toyFolder
- 进入sssp解压文件夹/usr/local/sssp,创建Makefile
CCOMPILE=mpic++
CPPFLAGS= -I$(HADOOP_HOME)/include -I$(JAVA_HOME)/include -I$(JAVA_HOME)/include/linux -I/usr/local/system -Wno-deprecated -O2
LIB = -L$(JAVA_HOME)/lib -L$(HADOOP_HOME)/lib/native
LDFLAGS =-lhdfs
all: run
run: run.cpp
$(CCOMPILE) run.cpp $(CPPFLAGS) $(LIB) $(LDFLAGS) -o run
clean:
-rm run
- 编译之后得到run文件
make
- 创建文件conf
master:1
slave1:4
slave2:4
......
slaveN:4
- 在各个节点分别创建/usr/local/sssp,然后将run拷贝到各个节点
scp run slave1:/usr/local/sssp
scp run slave2:/usr/local/sssp
......
- 运行程序
mpiexec -n 31 -f ./conf ./run
五、错误日志
-
libhdfs.so: undefined reference to JNI_GetCreatedJavaVMs@SUNWprivate_1.1
解决方法:在/etc/ld.so.conf
中加入一行/usr/local/hadoop-2.7.6/lib/native/ /usr/java/jdk1.8.0_191/jre/lib/amd64/server
保存退出后,执行
ldconfig -v
使其生效 -
出现xmanager弹窗
解决方法:删除ssh配置失败的节点 -
loadFileSystems error:
(unable to get stack trace for java.lang.NoClassDefFoundError exception: ExceptionUtils::getStackTrace error.)
hdfsBuilderConnect(forceNewInstance=0, nn=master, port=9000, kerbTicketCachePath=(NULL), userName=(NULL)) error:
(unable to get stack trace for java.lang.NoClassDefFoundError exception: ExceptionUtils::getStackTrace error.)
解决方法:
hadoop classpath --glob
把结果添加到CLASSPATH中