1. 程式人生 > >超圖大資料產品spark on yarn模式使用

超圖大資料產品spark on yarn模式使用

本文介紹超圖大資料產品spark元件,iServer產品中的分散式分析服務,如何在部署好的spark叢集,hadoop叢集中採用spark on yarn模式提交任務進行空間大資料相關的分析。

一、環境

1. Ubuntu server 16,三個節點的hadoop叢集和spark叢集,一個客戶端機器。
2. hadoop 2.7,spark 2.1,叢集已部署好,未開啟kerberos認證
3. iobjects for java 910,iobjects for spark 910,iServer 910,未部署

二、部署超圖產品

  1. hadoop叢集的每個節點機器上部署java元件,解壓java元件產品,將bin目錄下檔案放入指定目錄“/opt/SuperMap/iobjects/910/Bin”,確保Bin目錄有讀寫許可權

    在這裡插入圖片描述

  2. hadoop叢集的每個節點機器上配置試用許可,根據叢集名稱(hostname)在官網申請試用許可,將許可檔案放入每個機器的目錄“/opt/SuperMap/License”。

  3. 客戶端機器上部署spark元件和iServer產品,將spark元件解壓,iServer產品目錄解壓,在iServer產品裡安裝依賴庫,安裝許可驅動(這一步參考iServer的文件)。

  4. 配置iServer下自帶的spark配置檔案spark-default.conf ,新增yarn叢集地址,am記憶體引數等,如下圖。

    在這裡插入圖片描述

  5. 將hadoop叢集的配置core-site.xml,hdfs-site.xml,yarn-site.xml檔案拷貝到客戶端機器的目錄/opt/SuperMap/hadoop-cdh,這個目錄可自行選擇。

  6. 進入iServer的bin目錄,啟動iServer,執行” startup.sh”,進入iServer管理頁面,按下面截圖步驟配置分散式分析服務,配置前需啟動hadoop叢集

    在這裡插入圖片描述
    在這裡插入圖片描述
    在這裡插入圖片描述
    在這裡插入圖片描述

  7. 配置完後,在yarn叢集的ui介面檢視應用是否有分散式分析服務的任務,如下圖

    在這裡插入圖片描述

  8. 用iServer將自帶的示例csv資料,註冊到hdfs系統裡,按截圖步驟操作

    在這裡插入圖片描述
    在這裡插入圖片描述
    在這裡插入圖片描述
    在這裡插入圖片描述
    在這裡插入圖片描述
    在這裡插入圖片描述

三、用iServer提交點密度分析,進入“分散式分析服務”—“建立分析”,(確保hadoop叢集機器上沒有超圖的spark的lib包,如果有,請保持與iServer自帶的版本保持一致。)正常結果如下截圖
在這裡插入圖片描述


在這裡插入圖片描述

四、用spark元件提交大資料分析任務

  1. Cluster模式提交,Cluster模式建議採用分散式儲存資料,這裡使用的udb是本地儲存,生成的結果不一定在driver端目錄下,可能在參與計算的某個worker節點目錄下。

    ./spark-submit --master yarn --deploy-mode cluster --driver-memory 6g --executor-memory 6g --executor-cores 4 --class com.supermap.bdt.main.CreateBuffersMain /opt/SuperMap/test-yarn-cluster/com.supermap.bdt.core-9.1.0-16402.jar --input '{"type":"udb","info":[{"server":"/opt/SuperMap/test-yarn-cluster/testdata.udb","datasetNames":["Railway"]}]}' --distance 100 --output '{"type":"udb","server":"/opt/SuperMap/test-yarn-cluster/testBufferOut10.udb","datasetName":"RailwayBuffer"}' 
    
    1. client模式提交,生成的結果是driver端。
    ./spark-submit --master yarn --deploy-mode client--driver-memory 6g --executor-memory 6g --executor-cores 4 --class com.supermap.bdt.main.CreateBuffersMain /opt/SuperMap/test-yarn-cluster/com.supermap.bdt.core-9.1.0-16402.jar --input '{"type":"udb","info":[{"server":"/opt/SuperMap/test-yarn-cluster/testdata.udb","datasetNames":["Railway"]}]}' --distance 100 --output '{"type":"udb","server":"/opt/SuperMap/test-yarn-cluster/testBufferOut10.udb","datasetName":"RailwayBuffer"}' 
    

五、使用shell互動式提交任務,在spark/bin目錄按如下步驟執行命令即可

  1. 啟動spark-shell

    ./spark-shell --master yarn --deploy-mode client --jars /home/yb/opt/supermap-spark-9.0.0/lib/com.supermap.bdt.core-9.1.0.jar./spark-shell --master yarn --deploy-mode client --jars /home/yb/opt/supermap-spark-9.0.0/lib/com.supermap.bdt.core-9.1.0.jar
    
  2. 匯入類,import com.supermap.bdt.io.simpleCSV.SimpleCSVReader

  3. 執行讀取csv資料(資料路徑改為自己的),val fRDD = SimpleCSVReader.read(sc, “hdfs://myspark-master:9000/input/newyorktaxi/newyork_taxi_2013-01_14k.csv”)

  4. 檢視結果,資料集的記錄總數,fRDD.count()