Spark Streaming實時流式大數據處理實戰》 ——2.3 搭建開發環境

      網友投稿 1108 2022-05-30

      《Spark Streaming實時流式大數據處理實戰》 ——2.3 搭建開發環境

      2.3? 搭建開發環境

      在2.2節中對Spark的幾種運行模式做了介紹,本書在進行實戰的過程中重點以Spark Standalone模式進行,該模式也可以在生產環境中直接部署,不依賴于其他框架模式。當然,對于需要用到Hadoop的讀者,也可以嘗試Spark On Yarn的部署模式,對資源進行統一的管理。下面就來一步一步地搭建Spark Standalone運行模式及Scala-Eclipse的開發環境。

      2.3.1? 修改配置

      2.1節下載和解壓Spark之后,在Spark的安裝目錄下進入conf目錄,可以看到以下幾個配置文件:

      $ ll conf/

      drwxr-xr-x@ 12 xiaolitao? staff?? 384? 8? 2 21:29 ./

      drwxr-xr-x@ 18 xiaolitao? staff?? 576 11? 5? 2017 ../

      -rw-r--r--@? 1 xiaolitao? staff?? 996? 7? 1? 2017 docker.properties.template

      -rw-r--r--@? 1 xiaolitao? staff? 1105? 7? 1? 2017 fairscheduler.xml.template

      -rw-r--r--@? 1 xiaolitao? staff? 2025? 7? 1? 2017 log4j.properties.template

      -rw-r--r--@? 1 xiaolitao? staff? 7313? 7? 1? 2017 metrics.properties.template

      -rw-r--r--@? 1 xiaolitao? staff?? 865? 7? 1? 2017 slaves.template

      -rw-r--r--@? 1 xiaolitao? staff? 1292? 7? 1? 2017 spark-defaults.conf.

      template

      -rwxr-xr-x@? 1 xiaolitao? staff? 3699? 7? 1? 2017 spark-env.sh.template*

      conf目錄中給出了很多模板文件,這里對幾個常用的文件進行簡單說明(默認目錄中給出了后綴帶有template的示例文件,在正式使用時我們需要將這個后綴去掉)。

      * docker.properties:當使用Docker容器時,需要就該文件進行相關修改和配置。

      * log4j.properties:Spark作為源生于Java和Scala的開源系統,其使用的日志服務也依賴于經典的log4j,所以當需要修改日志的顯示級別,以及日志的保存文件等相關內容時,就需要在這里做相應配置。

      * slaves:該文件用來配置slave節點,一般將每個slave節點的IP配置在該文件中。

      * spark-defaults.conf:在提交Spark應用時,可以在程序內部指定相關配置,如使用的核的數量、最大占用內存數量等,另外也可以在提交命令中指定。如果兩處都沒有指定,就會按照該文件進行Spark應用的默認配置。

      * spark-env.sh:是整個Spark集群環境變量的配置文件,我們需要在該文件中配置Java和Scala的安裝路徑,如果需要,還要配置Hadoop的安裝路徑。其他配置選項,讀者可以參考官方文檔http://spark.apache.org/docs/latest/spark-standalone.html。

      下面就來修改配置文件,搭建我們自己的集群,用于本書的所有實例。為了方便操作,我們以單一機器來搭建集群,即概念上的Master和Worker節點進行同機部署,而在實際生產環境中,只需要做相應的擴展,添加到集群中即可。集群的架構如圖2.5所示。

      我們以單一機器進行同機部署,以本地機器作為Master節點,同時該節點也是我們的Slave節點,并在此節點上啟動兩個Worker進程,圖2.5中所示的兩個Worker進程是Spark虛擬分配的兩個IP。為了完成整個集群的搭建,我們需要簡單配置以log4j.properties、slaves和spark-env.sh三個相關文件。

      圖2.5? Spark集群部署

      首先將前面介紹的模板文件的*.template的后綴template去掉,如下:

      $ ll conf/

      drwxr-xr-x@ 12 xiaolitao? staff?? 384? 8? 2 21:29 ./

      drwxr-xr-x@ 18 xiaolitao? staff?? 576 11? 5? 2017 ../

      -rw-r--r--@? 1 xiaolitao? staff?? 996? 7? 1? 2017 docker.properties.template

      -rw-r--r--@? 1 xiaolitao? staff? 1105? 7? 1? 2017 fairscheduler.xml.template

      -rw-r--r--@? 1 xiaolitao? staff? 2025 11? 5? 2017 log4j.properties

      -rw-r--r--@? 1 xiaolitao? staff? 2025? 7? 1? 2017 log4j.properties.template

      -rw-r--r--@? 1 xiaolitao? staff? 7313? 7? 1? 2017 metrics.properties.template

      -rw-r--r--@? 1 xiaolitao? staff?? 865 11? 5? 2017 slaves

      -rw-r--r--@? 1 xiaolitao? staff?? 865? 7? 1? 2017 slaves.template

      -rw-r--r--@? 1 xiaolitao? staff? 1292? 7? 1? 2017 spark-defaults.conf.

      template

      -rwxr-xr-x@? 1 xiaolitao? staff? 3997 12 13? 2017 spark-env.sh*

      -rwxr-xr-x@? 1 xiaolitao? staff? 3699? 7? 1? 2017 spark-env.sh.template*

      然后將這三個文件從模板文件中復制出來并進行簡單的配置。首先對spark-env.sh也是最重要的文件進行如下配置:

      JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_40.jdk/Contents/Home

      SCALA_HOME=/usr/local/Cellar/scala/2.11.7/

      SPARK_HOME=/Users/xiaolitao/Tools/spark-2.2.0-bin-hadoop2.7/

      SPARK_MASTER_HOST=127.0.0.1

      SPARK_WORKER_CORES=2

      SPARK_WORKER_MEMORY=7g

      SPARK_WORKER_INSTANCES=2

      SPARK_DAEMON_MEMORY=1g

      首先需要配置本地Java、Scala及Spark的安裝目錄,以上分別配置了其相應的安裝路徑(大家實際配置時,需要根據自己的實際環境來配置)。其次配置Master節點的IP,由于我們使用單一機器進行部署,所以這里指定的IP為127.0.0.1。之后的配置是針對每一個Worker實例,包含2核和7GB內存,我們這里共配置了兩個Worker實例(特別說明的是,根據機器的實際情況進行配置,由于本書用于試驗的機器是4核16GB內存,因此這里進行了如上配置)。

      最后配置守護進程的內存總量,包括Master和Worker等。我們進行了一些關鍵配置,Spark關于Standalone模式還提供了很多其他的配置,大家可以直接看模板文件或者參考官網(http://spark.apache.org/docs/latest/spark-standalone.html)。

      對于slaves文件,由于我們目前的集群只有一臺機器,所以這里僅僅配置了localhost,Spark會在slaves列出的所有機器節點中啟動Worker進程,用來進行計算。

      關于log4j.properties,當我們打開從模板文件復制過來的配置文件時,其中已經進行了很詳細的日志輸出配置,因此這里基本沒有改動,主要將log4j.rootCategory的日志輸出級別改為了WARN,否則會產生大量的系統日志信息,當程序發生錯誤的時候將很難進行定位,具體修改如下:

      # 設置日志信息在控制臺輸出

      log4j.rootCategory=WARN, console

      log4j.appender.console=org.apache.log4j.ConsoleAppender

      log4j.appender.console.target=System.err

      log4j.appender.console.layout=org.apache.log4j.PatternLayout

      log4j.appender.console.layout.ConversionPattern=%d{yy/MM/dd HH:mm:ss} %p

      %c{1}: %m%n

      # 將日志級別設置為WARN

      # 會覆蓋默認日志級別的設置

      # 針對不同的Spark應用可以設置不同的日志級別

      log4j.logger.org.apache.spark.repl.Main=WARN

      # 將第三方庫的日志級別設置高些

      log4j.logger.org.spark_project.jetty=WARN

      log4j.logger.org.spark_project.jetty.util.component.AbstractLifeCycle=

      ERROR

      log4j.logger.org.apache.spark.repl.SparkIMain$exprTyper=INFO

      log4j.logger.org.apache.spark.repl.SparkILoop$SparkILoopInterpreter=INFO

      log4j.logger.org.apache.parquet=ERROR

      log4j.logger.parquet=ERROR

      # 避免SparkSQL支持Hive中不存在的UDFs的各種噪音信息

      log4j.logger.org.apache.hadoop.hive.metastore.RetryingHMSHandler=FATAL

      log4j.logger.org.apache.hadoop.hive.ql.exec.FunctionRegistry=ERROR

      Spark spark 大數據 大數據

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      上一篇:Python裝飾器總結,帶你幾步跨越此坑!
      下一篇:深度學習必備數學知識之線性代數篇(附代碼實現)
      相關文章
      亚洲一卡2卡3卡4卡乱码 在线 | 亚洲精品无码你懂的| 亚洲一区精品无码| 无码不卡亚洲成?人片| 亚洲AV无码专区在线厂| 亚洲a∨无码一区二区| 亚洲精品一卡2卡3卡四卡乱码| 亚洲色少妇熟女11p| 亚洲人成色在线观看| 亚洲精品无码专区在线| 亚洲免费网站观看视频| 亚洲综合av一区二区三区不卡| 久久亚洲精品国产亚洲老地址| 一区二区亚洲精品精华液| 亚洲综合在线一区二区三区| 亚洲色成人网站WWW永久四虎| 亚洲国产一区二区三区在线观看 | 亚洲国产日韩在线视频| 亚洲精品无码av人在线观看| 亚洲国产精品乱码一区二区| 亚洲国产成人片在线观看无码| 久久精品亚洲综合专区| 久久精品国产亚洲AV无码娇色| 精品亚洲A∨无码一区二区三区| 91亚洲国产在人线播放午夜| 亚洲另类自拍丝袜第1页| 亚洲伦理中文字幕| 亚洲老熟女五十路老熟女bbw | 亚洲一区欧洲一区| 色老板亚洲视频免在线观| 日韩亚洲产在线观看| 亚洲成a人片在线观看天堂无码| 久久亚洲AV成人无码国产电影| 亚洲av无码天堂一区二区三区| 亚洲熟妇少妇任你躁在线观看无码| 在线亚洲人成电影网站色www| 亚洲国产精品国自产拍AV| 久久精品国产亚洲av影院| 亚洲二区在线视频| 亚洲AV无码之国产精品| 国产性爱在线观看亚洲黄色一级片|