搭建MESOS大數據平臺的總結

jopen 9年前發布 | 33K 次閱讀 Mesos
 

基于阿三的《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的安裝部署都比較順利

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!