站長(zhǎng)資訊網(wǎng)
        最全最豐富的資訊網(wǎng)站

        搭建Spark高可用集群

        Spark簡(jiǎn)介

        官網(wǎng)地址:http://spark.apache.org/

        搭建Spark高可用集群

        Apache Spark™是用于大規(guī)模數(shù)據(jù)處理的統(tǒng)一分析引擎。

        從右側(cè)最后一條新聞看,Spark也用于AI人工智能 spark是一個(gè)實(shí)現(xiàn)快速通用的集群計(jì)算平臺(tái)。它是由加州大學(xué)伯克利分校AMP實(shí)驗(yàn)室 開(kāi)發(fā)的通用內(nèi)存并行計(jì)算框架,用來(lái)構(gòu)建大型的、低延遲的數(shù)據(jù)分析應(yīng)用程序。它擴(kuò)展了廣泛使用的MapReduce計(jì)算 模型。高效的支撐更多計(jì)算模式,包括交互式查詢和流處理。spark的一個(gè)主要特點(diǎn)是能夠在內(nèi)存中進(jìn)行計(jì)算,及時(shí)依賴磁盤進(jìn)行復(fù)雜的運(yùn)算,Spark依然比MapReduce更加高效。

        為什么要學(xué)Spark

        中間結(jié)果輸出:基于MapReduce的計(jì)算引擎通常會(huì)將中間結(jié)果輸出到磁盤上,進(jìn)行存儲(chǔ)和容錯(cuò)。出于任務(wù)管道承接的,考慮,當(dāng)一些查詢翻譯到MapReduce任務(wù)時(shí),往往會(huì)產(chǎn)生多個(gè)Stage,而這些串聯(lián)的Stage又依賴于底層文件系統(tǒng)(如HDFS)來(lái)存儲(chǔ)每一個(gè)Stage的輸出結(jié)果。 Spark是MapReduce的替代方案,而且兼容HDFS、Hive,可融入Hadoop的生態(tài)系統(tǒng),以彌補(bǔ)MapReduce的不足。

        Spark的四大特性

        高效性

        運(yùn)行速度提高100倍。 Apache Spark使用最先進(jìn)的DAG調(diào)度程序,查詢優(yōu)化程序和物理執(zhí)行引擎,實(shí)現(xiàn)批量和流式數(shù)據(jù)的高性能。

        易用性

        Spark支持Java、Python和Scala的API,還支持超過(guò)80種高級(jí)算法,使用戶可以快速構(gòu)建不同的應(yīng)用。而且Spark支持交互式的Python和Scala的shell,可以非常方便地在這些shell中使用Spark集群來(lái)驗(yàn)證解決問(wèn)題的方法。

        通用性

        Spark提供了統(tǒng)一的解決方案。Spark可以用于批處理、交互式查詢(Spark SQL)、實(shí)時(shí)流處理(Spark Streaming)、機(jī)器學(xué)習(xí)(Spark MLlib)和圖計(jì)算(GraphX)。這些不同類型的處理都可以在同一個(gè)應(yīng)用中無(wú)縫使用。Spark統(tǒng)一的解決方案非常具有吸引力,畢竟任何公司都想用統(tǒng)一的平臺(tái)去處理遇到的問(wèn)題,減少開(kāi)發(fā)和維護(hù)的人力成本和部署平臺(tái)的物力成本。

        兼容性

        Spark可以非常方便地與其他的開(kāi)源產(chǎn)品進(jìn)行融合。比如,Spark可以使用Hadoop的YARN和Apache Mesos作為它的資源管理和調(diào)度器,器,并且可以處理所有Hadoop支持的數(shù)據(jù),包括HDFS、HBase和Cassandra等。這對(duì)于已經(jīng)部署Hadoop集群的用戶特別重要,因?yàn)椴恍枰鋈魏螖?shù)據(jù)遷移就可以使用Spark的強(qiáng)大處理能力。Spark也可以不依賴于第三方的資源管理和調(diào)度器,它實(shí)現(xiàn)了Standalone作為其內(nèi)置的資源管理和調(diào)度框架,這樣進(jìn)一步降低了Spark的使用門檻,使得所有人都可以非常容易地部署和使用Spark。此外,Spark還提供了在EC2上部署Standalone的Spark集群的工具。

        Mesos:Spark可以運(yùn)行在Mesos里面(Mesos 類似于yarn的一個(gè)資源調(diào)度框架) standalone:Spark自己可以給自己分配資源(master,worker) YARN:Spark可以運(yùn)行在yarn上面 Kubernetes:Spark接收 Kubernetes的資源調(diào)度

        Spark的組成

        Spark組成(BDAS):全稱伯克利數(shù)據(jù)分析棧,通過(guò)大規(guī)模集成算法、機(jī)器、人之間展現(xiàn)大數(shù)據(jù)應(yīng)用的一個(gè)平臺(tái)。也是處理大數(shù)據(jù)、云計(jì)算、通信的技術(shù)解決方案。

        它的主要組件有:

        SparkCore:將分布式數(shù)據(jù)抽象為彈性分布式數(shù)據(jù)集(RDD),實(shí)現(xiàn)了應(yīng)用任務(wù)調(diào)度、RPC、序列化和壓縮,并為運(yùn)行在其上的上層組件提供API。

        SparkSQL:Spark Sql 是Spark來(lái)操作結(jié)構(gòu)化數(shù)據(jù)的程序包,可以讓我使用SQL語(yǔ)句的方式來(lái)查詢數(shù)據(jù),Spark支持 多種數(shù)據(jù)源,包含Hive表,parquest以及JSON等內(nèi)容。

        SparkStreaming: 是Spark提供的實(shí)時(shí)數(shù)據(jù)進(jìn)行流式計(jì)算的組件。

        MLlib:提供常用機(jī)器學(xué)習(xí)算法的實(shí)現(xiàn)庫(kù)。

        GraphX:提供一個(gè)分布式圖計(jì)算框架,能高效進(jìn)行圖計(jì)算。

        BlinkDB:用于在海量數(shù)據(jù)上進(jìn)行交互式SQL的近似查詢引擎。

        Tachyon:以內(nèi)存為中心高容錯(cuò)的的分布式文件系統(tǒng)。

        應(yīng)用場(chǎng)景

        Yahoo將Spark用在Audience Expansion中的應(yīng)用,進(jìn)行點(diǎn)擊預(yù)測(cè)和即席查詢等 淘寶技術(shù)團(tuán)隊(duì)使用了Spark來(lái)解決多次迭代的機(jī)器學(xué)習(xí)算法、高計(jì)算復(fù)雜度的算法等。應(yīng)用于內(nèi)容推薦、社區(qū)發(fā)現(xiàn)等 騰訊大數(shù)據(jù)精準(zhǔn)推薦借助Spark快速迭代的優(yōu)勢(shì),實(shí)現(xiàn)了在“數(shù)據(jù)實(shí)時(shí)采集、算法實(shí)時(shí)訓(xùn)練、系統(tǒng)實(shí)時(shí)預(yù)測(cè)”的全流程實(shí)時(shí)并行高維算法,最終成功應(yīng)用于廣點(diǎn)通pCTR投放系統(tǒng)上。 優(yōu)酷土豆將Spark應(yīng)用于視頻推薦(圖計(jì)算)、廣告業(yè)務(wù),主要實(shí)現(xiàn)機(jī)器學(xué)習(xí)、圖計(jì)算等迭代計(jì)算。

        spark安裝

        上傳spark-安裝包到Linux上

        [root@hdp-01 ~]# wget https://d3kbcqa49mib13.cloudfront.net/spark-2.2.0-bin-hadoop2.7.tgz
        [root@hdp-01 ~]# tar -zxvf spark-2.2.0-bin-hadoop2.7.tgz -C apps/
        [root@hdp-01 apps]# mv spark-2.2.0-bin-hadoop2.7 /spark

        進(jìn)入conf目錄并重命名并修改spark-env.sh.template文件

        [root@hdp-01 conf]# mv spark-env.sh.template spark-env.sh  [root@hdp-01 conf]# vi spark-env.sh

        在該配置文件中添加如下配置

        export JAVA_HOME=/root/apps/jdk1.8.0_152  export SPARK_MASTER_IP=hdp-01  export SPARK_MASTER_PORT=7077

        重命名并修改slaves.template文件

        [root@hdp-01 conf]# mv slaves.template slaves  [root@hdp-01 conf]# vi slaves

        在該文件中添加子節(jié)點(diǎn)所在的位置(Worker節(jié)點(diǎn))

        hdp-02  hdp-03
        hdp-04

        將配置好的Spark拷貝到其他節(jié)點(diǎn)上

        [root@hdp-01 apps]# scp -r spark/ hdp-02:$PWD  [root@hdp-01 apps]# scp -r spark/ hdp-03:$PWD
        [root@hdp-01 apps]# scp -r spark/ hdp-04:$PWD

        Spark集群配置完畢,目前是1個(gè)Master,3個(gè)Work,在hdp-01上啟動(dòng)Spark集群

        [root@hdp-01 spark]# sbin/start-all.sh

        啟動(dòng)后執(zhí)行jps命令,主節(jié)點(diǎn)上有Master進(jìn)程,其他子節(jié)點(diǎn)上有Work進(jìn)程,登錄Spark管理界面查看集群狀態(tài)(主節(jié)點(diǎn)): http://hdp-01:8080/

        搭建Spark高可用集群

        到此為止,Spark集群安裝完畢,但是有一個(gè)很大的問(wèn)題,那就是Master節(jié)點(diǎn)存在單點(diǎn)故障,要解決此問(wèn)題,就要借助zookeeper,并且啟動(dòng)至少兩個(gè)Master節(jié)點(diǎn)來(lái)實(shí)現(xiàn)高可靠

        配置Spark集群之前一定要把zookper集群?jiǎn)?dòng)

        Spark集群規(guī)劃:hdp-01,hdp-02是Master;hdp-03,hdp-04是Worker 安裝配置zk集群,并啟動(dòng)zk集群 停止spark所有服務(wù)

        集群中Master地址是不固定的 所以必須把export SPARK_MASTER_IP=hdp-01 注釋掉

        [root@hdp-01 sbin]# ./stop-all.sh  [root@hdp-01 conf]# vi spark-env.sh    export JAVA_HOME=/root/apps/jdk1.8.0_152  #export SPARK_MASTER_IP=hdp-01  export SPARK_MASTER_PORT=7077  export SPARK_DAEMON_JAVA_OPTS="-Dspark.deploy.recoveryMode=ZOOKEEPER  -Dspark.deploy.zookeeper.url=hdp-01:2181,hdp-02:2181,hdp-03:2181 -Dspark.deploy.zookeeper.dir=/spark"    [root@hdp-01 conf]#scp -r spark-env.sh/ hdp-02:$PWD  [root@hdp-01 conf]#scp -r spark-env.sh/ hdp-03:$PWD  [root@hdp-01 conf]#scp -r spark-env.sh/ hdp-04:$PWD  [root@hdp-01 sbin]# ./start-all.sh
        // 啟動(dòng)hdp-02上的master,如果hdp-01宕機(jī) hdp-02會(huì)有worker變?yōu)?span>master
        [root@hdp-02 spark]# sbin/start-master.sh

        測(cè)試集群部署

        打開(kāi)瀏覽器  輸入        http://hdp-01:8080/  http://hdp-02:8080/

        搭建Spark高可用集群

        搭建Spark高可用集群

         standby:備用狀態(tài)

        現(xiàn)在停掉hdp-01上的Master

        [root@hdp-01 sbin]# jps  35473 Master  1682 NameNode  15109 NodeManager  35575 Jps  2200 SecondaryNameNode  14984 ResourceManager  14636 QuorumPeerMain  1839 DataNode  [root@hdp-01 sbin]# kill -9  35473

        搭建Spark高可用集群

        hdp-02接替hdp-01工作 從Master變?yōu)閃orker  如果現(xiàn)在再啟動(dòng) hdp-01 hdp-01為從節(jié)點(diǎn) 不會(huì)變?yōu)橹鞴?jié)點(diǎn) 

        如果hdp-02發(fā)生故障后 hdp-01就會(huì)自動(dòng)變成Master

        Spark Shell

        spark-shell是Spark自帶的交互式Shell程序,方便用戶進(jìn)行交互式編程,用戶可以在該命令行下用scala編寫spark程序。

        啟動(dòng)spark shell

        [root@hdp-01 spark]# bin/spark-shell --master spark:/hdp-01:7077 --executor-memory 1g --total-executor-cores 1

        搭建Spark高可用集群

        出現(xiàn)此logo證明spark shell 啟動(dòng)成功

        集群模式下啟動(dòng)spark shell

        [root@hdp-01 spark]# bin/spark-shell --master spark://hdp-01:7077,hdp-04:7077

        注意: 如果啟動(dòng)spark shell時(shí)沒(méi)有指定master地址,但是也可以正常啟動(dòng)spark shell和執(zhí)行spark shell中的程序,其實(shí)是啟動(dòng)了spark的local模式,該模式僅在本機(jī)啟動(dòng)一個(gè)進(jìn)程,沒(méi)有與集群建立聯(lián)系。 Spark Shell中已經(jīng)默認(rèn)將SparkContext類初始化為對(duì)象sc。用戶代碼如果需要用到,則直接應(yīng)用sc即可

        Spark控制臺(tái)有一個(gè)Running Applications 也就是剛剛啟動(dòng)的spark shell

         執(zhí)行Spark程序

        Spark程序求圓周率

        [root@hdp-01 spark]# bin/spark-submit --master spark://hdp-01:7077 --class org.apache.spark.examples.SparkPi  --executor-memory 1G --total-executor-cores 1 examples/jars/spark-examples_2.11-2.2.0.jar 100

        搭建Spark高可用集群

        [root@hdp-01 spark]# bin/spark-submit –class org.apache.spark.examples.SparkPi –master spark://hdp-01:7077 examples/jars/spark-examples_2.11-2.2.0.jar 100

        參數(shù)說(shuō)明: –master spark://hdp-01:7077 指定Master的地址 –executor-memory 1G 指定每個(gè)worker可用內(nèi)存為1G –total-executor-cores 1 指定整個(gè)集群使用的cup核數(shù)為1

        集群模式執(zhí)行spark程序

        [root@hdp-01 spark]# bin/spark-submit --class org.apache.spark.examples.SparkPi --master spark://hdp-01:7077,hdp-04:7077 --executor-memory 1G --total-executor-cores 2 examples/jars/spark-examples_2.11-2.2.0.jar 100

        spark shell中編寫WordCount程序

        啟動(dòng)hdfs 上傳單詞文件到hdfs中

        [root@hdp-01 ~]# start-all.sh  [root@hdp-01 ~]# vi spark.txt    helo java  hello spark  hello hdfs  hello yarn  yarn hdfs    [root@hdp-01 ~]# hadoop fs -mkdir -p /spark  [root@hdp-01 ~]# hadoop fs -put spark.txt /spark

        spark shell 執(zhí)行任務(wù)

        scala> sc.textFile("hdfs://hdp-01:9000/spark").flatMap(split(" ")).map((,1)).reduceByKey(+).collect

        將結(jié)果輸出到hdfs中

        scala> sc.textFile("hdfs://hdp-01:9000/spark").flatMap(.split(" ")).map((,1)).reduceByKey(+).saveAsTextFile("hdfs://hdp-01:9000/outText")  2019-06-25 Comments   

        贊(0)
        分享到: 更多 (0)
        網(wǎng)站地圖   滬ICP備18035694號(hào)-2    滬公網(wǎng)安備31011702889846號(hào)
        主站蜘蛛池模板: 久久亚洲精品无码观看不卡| 最新精品露脸国产在线| 国内精品久久久久久中文字幕| 久久精品国产亚洲AV高清热| 欧美久久久久久午夜精品| 97久久精品人人澡人人爽| 国精品无码一区二区三区左线| 亚洲AⅤ永久无码精品AA| 91人妻人人澡人人爽人人精品| 国产精品视频一区二区三区四 | 精品国产粉嫩内射白浆内射双马尾| 久久久久成人精品无码| www亚洲欲色成人久久精品| 国产偷亚洲偷欧美偷精品| 精品少妇无码AV无码专区| 亚洲AV永久精品爱情岛论坛| 呦交小u女国产精品视频| 天天爽夜夜爽8888视频精品| 精品一区二区三区高清免费观看 | 国产精品内射视频免费| 思思99热在线观看精品| 好吊妞视频精品| 国产精品自拍一区| 国产精品一级香蕉一区| 精品无人区麻豆乱码1区2区| 国产成人亚洲合集青青草原精品| 国产色婷婷五月精品综合在线| 久久精品国产亚洲AV嫖农村妇女| 亚洲国产精品无码专区| 亚洲级αV无码毛片久久精品| 亚洲乱码精品久久久久..| 亚洲中文字幕久久精品无码喷水 | 精品久久国产一区二区三区香蕉 | 97久久精品人人澡人人爽| 99久久国产综合精品成人影院| 欧美精品一区二区三区视频| 久久99国产精品久久99果冻传媒| 国产亚洲精品xxx| 亚洲精品欧美综合在线| 国产精品色视频ⅹxxx| 精品欧美|