moonbox在hdp的基礎上使用獨立spark2.2安裝遇到的問題記錄

目錄

前言

問題描述

moonbox的配置項說明

moonbox-evn.sh配置

moonbox-defaults.conf配置

slaves配置項

Spark2.2的安裝及部署

spark-env.sh

spark-defaults.conf

slaves

遇到的問題


前言

使用CDH6.0.0搭建的集羣環境,雖然默認選擇的spark2.2,但是依然是無法直接使用moonbox,此spark2.2非apache原生2.2,是經過CDH重構過得,所以在對接moonbox的時候,總是有問題,後來使用了暫緩方案,通過替換jar的方式實現了moonbox的鏈接(參考這裏),但是spark-shell不能使用,而且zeppline也不能正常使用。對於前期的技術調研和學習,使用這種方式可以湊合,但是如果真是到生產或者正式使用的時候,這樣做肯定不妥。爲了完美兼容moonbox,經過調研,最終選擇使用Ambari進行集羣環境的安裝和管理,相關大數據組件選擇使用HDP進行安裝,HDP據說是使用的原生apache組件。

ps:開源未編譯的使用的原生apache組件,但是編譯好的hdp對應的相關組件並非是原生。

版本信息:

ambari-2.6.1.0/HDP-2.6.5.0

問題描述

按照預期設想,我們使用了HDP進行集羣環境的搭建,使用的是原生的Spark2.2版本,照理說應該可以無縫對接moonbox了,但事實沒有這麼順利,經過測試發現moonbox還是啓動失敗。經過和moonbox的研發人員進行溝通交流,確認可以自己單獨部署一個spark2.2的環境,和HDP的spark共存,但是yarn還是使用一套。相關配置參考如下。

moonbox的配置項說明

moonbox-evn.sh配置

#JDK安裝目錄
export JAVA_HOME=/usr/java/jdk1.8.0_221
#spark的安裝目錄
export SPARK_HOME=/home/app/moonbox/spark/spark-2.2.0-bin-hadoop2.7
#yarn的conf目錄(chd的可以在spark目錄下找到,hdp的再hadoop-yarn目錄下)
export YARN_CONF_DIR=/usr/hdp/2.6.4.0-91/hadoop-yarn/etc/hadoop
export MOONBOX_SSH_OPTS="-p 22"
#moonbox的安裝目錄
export MOONBOX_HOME=/home/app/moonbox
#master的主機名
export MOONBOX_MASTER_HOST=master
#master的對應moonbox通訊的端口
export MOONBOX_MASTER_PORT=2551

moonbox-defaults.conf配置

moonbox {
    deploy {
        catalog {
            implementation = "mysql"
            url = "jdbc:mysql://192.168.1.123:3306/moonbox?createDatabaseIfNotExist=true"
            user = "root"
            password = "tydic0815"
            driver = "com.mysql.jdbc.Driver"
        }
        rest {
            enable = true
            port = 9191
            request.timeout = "600s"
            idle.timeout= "600s"
        }
        tcp {
            enable = true
            port = 10010
        }
        timer {
            enable = true
        }
    }
    mixcal {
        pushdown.enable = true
        column.permission.enable = true
        spark.sql.cbo.enabled = true
        spark.sql.constraintPropagation.enabled = false
        spark.sql.catalogImplementation = "in-memory"



        cluster = [{
          #yarn所在主節點的主機名
          spark.hadoop.yarn.resourcemanager.hostname = "master"
          #這個8050端口在yarn-site.xml文件的yarn.resourcemanager.address配置項找到
          spark.hadoop.yarn.resourcemanager.address = "master:8050"
          #這個8020端口在hdfs-site.xml文件的dfs.namenode.rpc-address配置項找到
          spark.yarn.stagingDir = "hdfs://master:8020/tmp"
          spark.yarn.access.namenodes = "hdfs://master:8020"
          #下面兩行配置是使用hdp安裝的時候需要配置的項,指定hdp的版本,否則moonbox啓動失敗
          spark.driver.extraJavaOptions =  "-Dhdp.version=2.6.5.0-292"
          spark.executor.extraJavaOptions = "-Dhdp.version=2.6.5.0-292"
          spark.loglevel = "ERROR"
          spark.cores.max = 2
          spark.driver.memory = "512m"
          spark.driver.cores = 1
          spark.executor.instances = 2
          spark.executor.cores = 1
          spark.executor.memory = "2g"
        }]
    }
}

slaves配置項

master
slave1

以上配置好之後,拷貝整個安裝包到對應指定的目錄去就行了。

Spark2.2的安裝及部署

如上配置,單獨拷貝了一個spark2.2的安裝包放到moonbox的目錄中(非必須放置該位置),然後對spark2.2的相關參數進行配置和調整,如下:

(1)解壓壓縮包

(2)切換到conf目錄下,執行以下命令

cp spark-env.sh.template spark-env.sh
cp spark-defaults.conf.template spark-defaults.conf
cp slaves.template slaves

(3)對以上三個配置文件進行調整

spark-env.sh

export JAVA_HOME=/usr/java/jdk1.8.0_221
export SCALA_HOME=/usr/share/scala
export HADOOP_HOME=/usr/hdp/2.6.4.0-91/hadoop
export HADOOP_CONF_DIR=/usr/hdp/2.6.4.0-91/hadoop/etc/hadoop

spark-defaults.conf

#8020就是hadoop的dfs.namenode.rpc-address配置項,這一項不要配置,否則出錯。
#spark.yarn.jars=hdfs://master:8020/spark_jars/*

注意配置文件中註釋,這是重點。單獨列出這個配置項,是想說不要配置這個,不然會出現moonbox啓動成功後,等幾十秒就自動掛掉的情況。

slaves

master
slave1
slave2

遇到的問題

(1)啓動報錯,截圖如下:

解決辦法,拷貝這兩個jar包放到spark的jars目錄下。

(2)啓動成功,但是在yarn上建立application失敗,報錯如下:

解決辦法:
 
          spark.driver.extraJavaOptions =  "-Dhdp.version=2.6.4.0-91"
 
          spark.executor.extraJavaOptions = "-Dhdp.version=2.6.4.0-91"
 
這兩行配置項到moonbox-defaults.conf配置文件的cluster配置項中,其中後面數字是dhp的版本號。
 
Dhdp.version的版本號確認,可以到hdp的安裝目錄去看,例如我在集羣中的安裝目錄爲/usr/hdp/2.6.4.0-91。
 
 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章