搭建MESOS大数据平台的总结

jopen 8年前
 

基于阿三的《Mesos大数据资源调度与大规模容器运行最佳实践》,主要就列举一些注意事项

搭建采用的是在笔记本电脑上的virtualbox内建的虚拟机,基本配置:1C2G20G 网络连接:采用桥接方式

操作系统: Ubuntu14.04LTS (一开始采用Ubuntu14.10版本,编译mesos时各种报错,后换为14.04版本)

一、mesos

基本按照书上P8~15页上的操作即可,需要注意的是要将/etc/host文件修改如下:

127.0.0.1 localhost

127.0.0.1 mesos //此行注释掉

192.168.1.112 mesos //采用固定IP(用ifconfig查询)

vagrant我没有安装成功,这块如果有人在virtubox的ubuntu虚拟机中装成功的,可以告诉我一下,我学习学习

二、 zookeeper

注:书的编排估计有点问题,前面mesos安装部署时举例没有讲zookeeper配置方式,而后面的hadoop、spark、storm等等举例又用的是zookeeper配置方式,所以这里要先做一下P108页的zookeeper配置。

三. hadoop

基本上可以参照P23~27页操作,需要注意:

1. 设置环境变量,在/etc/profile开头添加:

export JAVA_HOME="/usr/lib/jvm/java-7-openjdk-amd64/" //JDK安装目录

export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar

export HADOOP_HOME=/home/fjibj/hadoop //hadoop安装目录

export PATH=$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH

2. 如果运行hadoop命令时报找不到native本地库的错误,需要重新编译CDH:

mvn package -Pdist,native -DskipTests -Dtar

编译时会遇到各种问题,下面把我遇到的问题及解决方案列一下:

(1)findbugs: findbugs必须网上下载,解压,之后编译安装:

unzip findbugs-3.0.1-source.zip

进入到解压后的目录,直接运行ant命令

然后在shell输入: export FINDBUGS_HOME=解压后的目录 。不安装的话会有这个错误:

Caused by: org.apache.maven.plugin.MojoExecutionException: An Ant BuildException has occured: stylesheet /home/hadoop/hadoop-2.0.4-alpha-src/hadoop-common-project/hadoop-common/${env.FINDBUGS_HOME}/src/xsl/default.xsl doesn't exist.

(2)如果运行hadoop命令时报找不到native本地库,检查hadoop-2.5.0-cdh5.2.0/lib/native目录下是否有Linux-amd64-64目录及该目录下一堆.so文件(包括一些软连接),如果没有需要重新编译CDH,进入到hadoop-2.5.0- cdh5.2.0/src目录下运行:

mvn package -Pdist,native -DskipTests -Dtar

经过漫长的编译时间后,

将编译后的src/hadoop-dist/target/hadoop-2.5.0-cdh5.2.0/lib/native下的内容复制到lib/native/Linux-amd64-64目录下,并建立相应的软连接

(3) 执行hadoop jobtracker时如果

遇到Failed to load native Mesos library from /home/fjibj/hadoop/lib/native/Linux-amd64-64

15/11/05 02:52:41 FATAL mapred.JobTracker: java.lang.UnsatisfiedLinkError: no mesos in java.library.path

执行:

fjibj@mesos:/usr/local/lib$ cp libmesos-0.25.0.so ~/hadoop/lib/native/Linux-amd64-64/

fjibj@mesos:/usr/local/lib$ cd ~/hadoop/lib/native/Linux-amd64-64/

fjibj@mesos:~/hadoop/lib/native/Linux-amd64-64$ ln -s libmesos-0.25.0.so libmesos.so

(4) 如果上传文件到dfs时遇到put: Cannot create file/xxxxx.tar.gz._COPYING_. Name node is in safe mode.可以

去除安全模式:hadoop dfsadmin -safemode leave

(5)hadoop datanode不能启动或经常自动挂掉的解决方案:

a)进入/home/fjibj/hadoop/logs/hadoop-fjibj-datanode-mesos.out所在目录,检查

tail -100 hadoop-fjibj-datanode-mesos.log

发现有:

java.io.IOException: Incompatible clusterIDs in /home/fjibj/tmp/dfs/data:namenode clusterID = CID-62809071-82b4-4cca-bbcf-c87d4ddb85fd; datanode clusterID = CID-8606188a-f0b5-4999-88d9-5ed44bea449d

表示datanode与namenode的clusterID不一致

b) 检查core-site.xml或hdfs-site.xml中的hadoop.tmp.dir的值,这里是/home/fjibj/tmp,同时检查是否有设置dfs.data.dir,如果有的话以dfs.data.dir的值为准

c) 进入上一步查出的目录(/home/fjibj/tmp)/dfs/data/current目录下,修改VERSION文件:

将其中的

clusterID= 前面异常信息中的namenode clusterID的值

保存

d) 重启datanode

hadoop-daemon.sh start datanode

四、spark

基本可参考P38~41页上操作,需要注意:

(1)vim conf/spark-defaults.conf

spark.executor.uri hdfs://localhost:9000/tmp/spark-1.5.1.tar.gz

spark.io.compression.codec lzf

spark.master mesos://zk://localhost:2181/mesos

spark.mesos.coarse true

(2)vim conf/spark-env.sh

JAVA_HOME="/usr/lib/jvm/java-7-openjdk-amd64/"

MESOS_HOME=/home/fjibj/mesos

MESOS_NATIVE_JAVA_LIBRARY=/home/fjibj/hadoop/lib/native/Linux-amd64-64/libmesos.so

SPARK_EXECUTOR_URI=hdfs://localhost:9000/tmp/spark-1.5.1.tar.gz

MASTER=mesos://zk://localhost:2181/mesos

HADOOP_HOME=/home/fjibj/hadoop

PATH=$HADOOP_HOME/bin:$PATH

SPARK_DIST_CLASSPATH=$(hadoop classpath)

SPARK_EXECUTOR_MEMORY=100M

SPARK_WORKER_MEMORY=100M

(3)运行 ./bin/run-example org.apache.spark.examples.SparkPi时遇到

Caused by: org.xerial.snappy.SnappyError: [FAILED_TO_LOAD_NATIVE_LIBRARY] null

是由于snappy版本问题,可采用修改压缩方式解决:

修改vim conf/spark-defaults.conf添加:

spark.io.compression.codec lzf

(遇到WARN component.AbstractLifeCycle: FAILED SelectChannelConnector@0.0.0.0:4040: java.net.BindException: Address already in use

java.net.BindException: Address already in use问题可直接忽略,spark会尝试4041,4042等其他端口)

(4)将spark目录重新打包并上传到hdfs

tar zcvf spark-1.5.1.tar.gz spark-1.5.1-bin-without-hadoop

hadoop fs -put spark-1.5.1.tar.gz /tmp

(5)以zookeeper方式启动mesos-master、mesos-slave、hadoop namenode、hadoop datanode

启动zookeeper:

cd mesos/3rdparty/zookeeper-3.4.5/

bin/zkServer.sh start

mesos/3rdparty/zookeeper-3.4.5/bin/zkServer.sh start

启动mesos master:

mesos-master --quorum=1 --work_dir=/var/lib/mesos --zk=zk://localhost:2181/mesos --log_dir=/home/fjibj/mesos/mesos-master.log &

启动mesos slave:

mesos-slave --master=zk://localhost:2181/mesos

五、各平台对应的WEB UI:

mesos: http://192.168.1.112:5050/

hdfs: http://192.168.1.112:50070/

spark: http://192.168.1.112:4040/

六、后面storm直到marathon的安装部署都比较顺利