<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      Spark入門實戰系列--2.Spark編譯與部署(下)--Spark編譯安裝

      【注】該系列文章以及使用到安裝包/測試數據 可以在《傾情大奉送--Spark入門實戰系列》獲取

      1編譯Spark

      Spark可以通過SBTMaven兩種方式進行編譯,再通過make-distribution.sh腳本生成部署包。SBT編譯需要安裝git工具,而Maven安裝則需要maven工具,兩種方式均需要在聯網下進行,通過比較發現SBT編譯速度較慢(原因有可能是1、時間不一樣,SBT是白天編譯,Maven是深夜進行的,獲取依賴包速度不同 2maven下載大文件是多線程進行,而SBT是單進程),Maven編譯成功前后花了34個小時。

      1.1 編譯SparkSBT

      1.1.1 安裝git并編譯安裝

      1.  從如下地址下載git安裝包

      http://www.onlinedown.net/softdown/169333_2.htm

      https://www.kernel.org/pub/software/scm/git/

      如果linuxCentOS操作系統可以通過:yum install git直接進行安裝

      clip_image002

      由于從https獲取內容,需要安裝curl-devel,可以從如下地址獲取

      http://rpmfind.net/linux/rpm2html/search.php?query=curl-devel

      如果linuxCentOS操作系統可以通過:yum install curl-devel直接進行安裝

      clip_image004

      2. 上傳git并解壓縮

      git-1.7.6.tar.gz安裝包上傳到/home/hadoop/upload目錄中,解壓縮然后放到/app目錄下

      $cd /home/hadoop/upload/

      $tar -xzf git-1.7.6.tar.gz

      $mv git-1.7.6 /app

      $ll /app

      clip_image006

      3. 編譯安裝git

      root用戶進行在git所在路徑編譯安裝git

      #yum install curl-devel

      #cd /app/git-1.7.6 

      #./configure

      #make

      #make install

      clip_image008

      clip_image010

      clip_image012

      clip_image014

      4. git加入到PATH路徑中

      打開/etc/profilegit所在路徑加入到PATH參數中

      export GIT_HOME=/app/git-1.7.6

      export PATH=$PATH:$JAVA_HOME/bin:$MAVEN_HOME/bin:$GIT_HOME/bin

      clip_image016

      重新登錄或者使用source /etc/profile使參數生效,然后使用git命令查看配置是否正確

      clip_image018

      1.1.2 下載Spark源代碼并上傳

      1. 可以從如下地址下載到spark源代碼:

      http://spark.apache.org/downloads.html

      http://d3kbcqa49mib13.cloudfront.net/spark-1.1.0.tgz

      git clone https://github.com/apache/spark.git

      把下載好的spark-1.1.0.tgz源代碼包使用1.1.3.1介紹的工具上傳到/home/hadoop/upload 目錄下

      clip_image020

      2. 在主節點上解壓縮

      $cd /home/hadoop/upload/

      $tar -xzf spark-1.1.0.tgz

      clip_image022

      3. spark-1.1.0改名并移動到/app/complied目錄下

      $mv spark-1.1.0 /app/complied/spark-1.1.0-sbt

      $ls /app/complied

      clip_image024

      1.1.3 編譯代碼

      編譯spark源代碼的時候,需要從網上下載依賴包,所以整個編譯過程機器必須保證在聯網狀態。編譯執行如下腳本:

      $cd /app/complied/spark-1.1.0-sbt

      $sbt/sbt assembly -Pyarn -Phadoop-2.2 -Pspark-ganglia-lgpl -Pkinesis-asl -Phive

      clip_image026

      clip_image028

      clip_image030

      整個編譯過程編譯了約十幾個任務,重新編譯N次,需要幾個甚至十幾個小時才能編譯完成(主要看下載依賴包的速度)。

      1.2 編譯SparkMaven

      1.2.1 安裝Maven并配置參數

      在編譯前最好安裝3.0以上版本的Maven,在/etc/profile配置文件中加入如下設置:

      export MAVEN_HOME=/app/apache-maven-3.0.5

      export PATH=$PATH:$JAVA_HOME/bin:$MAVEN_HOME/bin:$GIT_HOME/bin

      clip_image032

      1.2.2 下載Spark源代碼并上傳

      1. 可以從如下地址下載到spark源代碼:

      http://spark.apache.org/downloads.html

      http://d3kbcqa49mib13.cloudfront.net/spark-1.1.0.tgz

      git clone https://github.com/apache/spark.git

      把下載好的spark-1.1.0.tgz源代碼包使用1.1.3.1介紹的工具上傳到/home/hadoop/upload 目錄下

      clip_image020[1]

      2. 在主節點上解壓縮

      $cd /home/hadoop/upload/

      $tar -xzf spark-1.1.0.tgz

      clip_image022[1]

      3. spark-1.1.0改名并移動到/app/complied目錄下

      $mv spark-1.1.0 /app/complied/spark-1.1.0-mvn

      $ls /app/complied

      clip_image034

      1.2.3 編譯代碼

      編譯spark源代碼的時候,需要從網上下載依賴包,所以整個編譯過程機器必須保證在聯網狀態。編譯執行如下腳本:

      $cd /app/complied/spark-1.1.0-mvn

      $export MAVEN_OPTS="-Xmx2g -XX:MaxPermSize=512M -XX:ReservedCodeCacheSize=512m"

      $mvn -Pyarn -Phadoop-2.2 -Pspark-ganglia-lgpl -Pkinesis-asl -Phive -DskipTests clean package

      clip_image036

      整個編譯過程編譯了約24個任務,整個過程耗時1小時45分鐘。

      clip_image038

      1.3 生成Spark部署包

      Spark源碼根目錄下有一個生成部署包的腳本make-distribution.sh,可以通過執行如下命令進行打包 ./make-distribution.sh [--name] [--tgz] [--with-tachyon] <maven build options>

      l  --name NAME--tgz 結合可以生成spark-$VERSION-bin-$NAME.tgz 的部署包,不加此參數時NAME hadoop 的版本號

      l  --tgz在根目錄下生成 spark-$VERSION-bin.tgz ,不加此參數時不生成tgz 文件,只生成/dist 目錄

      l  --with-tachyon  是否支持內存文件系統Tachyon ,不加此參數時不支持tachyon

      clip_image040

      例子:

      1. 生成支持yarn hadoop2.2.0 hive 的部署包:

      ./make-distribution.sh --tgz --name 2.2.0 -Pyarn -Phadoop-2.2 -Phive

      2. 生成支持yarn hadoop2.2.0 hive ganglia 的部署包:

      ./make-distribution.sh --tgz --name 2.2.0 -Pyarn -Phadoop-2.2 -Pspark-ganglia-lgpl -P hive

      1.3.1 生成部署包

      使用如下命令生成Spark部署包,由于該腳本默認在JDK1.6進行,在開始時會進行詢問是否繼續,只要選擇Y即可

      $cd /app/complied/spark-1.1.0-mvn/

      $./make-distribution.sh --tgz --name 2.2.0 -Pyarn -Phadoop-2.2 -Pspark-ganglia-lgpl -P hive

      clip_image042

      clip_image044

       

      clip_image046

      生成Spark部署包編譯了約24個任務,用時大概1小時38分鐘。

       

      1.3.2 查看生成結果

      生成在部署包位于根目錄下,文件名類似于spark-1.1.0-bin-2.2.0.tgz

      clip_image048

      2安裝Spark

      2.1 上傳并解壓Spark安裝包

      1.我們使用上一步驟編譯好的spark-1.1.0-bin-2.2.0.tgz文件作為安裝包(也可以從網上下載native文件夾或者打包好的64hadoop安裝包),使用"Spark編譯與部署(上)"1. 3.1介紹的工具上傳到/home/hadoop/upload 目錄下

      clip_image050

      2. 在主節點上解壓縮

      $cd /home/hadoop/upload/

      $tar -xzf spark-1.1.0-bin-2.2.0.tgz

      clip_image052

      3. spark改名并移動到/app/hadoop目錄下

      $mv spark-1.1.0-bin-2.2.0 /app/hadoop/spark-1.1.0

      $ll /app/hadoop

      clip_image054

      2.2 配置/etc/profile

      1. 打開配置文件/etc/profile

      $sudo vi /etc/profile

      2.     定義SPARK_HOME并把spark路徑加入到PATH參數中

      SPARK_HOME=/app/hadoop/spark-1.1.0

      PATH=$PATH:$SPARK_HOME/bin:$SPARK_HOME/sbin

      2.3 配置conf/slaves

      1. 打開配置文件conf/slaves

      $cd /app/hadoop/spark-1.1.0/conf

      $sudo vi slaves

      clip_image056

      2. 加入slave配置節點

      hadoop1

      hadoop2

      hadoop3

      clip_image058

      2.4 配置conf/spark-env.sh

      1. 打開配置文件conf/spark-env.sh

      $cd /app/hadoop/spark-1.1.0/conf

      $cp spark-env.sh.template spark-env.sh

      $sudo vi spark-env.sh

      clip_image060

      2. 加入Spark環境配置內容,設置hadoop1Master節點

      export SPARK_MASTER_IP=hadoop1

      export SPARK_MASTER_PORT=7077

      export SPARK_WORKER_CORES=1

      export SPARK_WORKER_INSTANCES=1

      export SPARK_WORKER_MEMORY=512M

      clip_image062

      2.5 向各節點分發Spark程序

      1. 進入hadoop1機器/app/hadoop目錄,使用如下命令把spark文件夾復制到hadoop2hadoop3機器

      $cd /app/hadoop

      $scp -r spark-1.1.0 hadoop@hadoop2:/app/hadoop/

      $scp -r spark-1.1.0 hadoop@hadoop3:/app/hadoop/

      clip_image064

      clip_image066

      2. 在從節點查看是否復制成功

      clip_image068

      2.6 啟動Spark

      $cd /app/hadoop/spark-1.1.0/sbin

      $./start-all.sh

      clip_image070

      2.7 驗證啟動

      此時在hadoop1上面運行的進程有:WorkerMaster

      clip_image072

      此時在hadoop2hadoop3上面運行的進程有只有Worker

       clip_image074

      通過 netstat -nlt 命令查看hadoop1節點網絡情況

      clip_image076

      在瀏覽器中輸入 http://hadoop1:8080(需要注意的是要在網絡設置中把hadoop*除外,否則會到外網DNS解析,出現無法訪問的情況) 既可以進入Spark集群狀態頁面

      clip_image078

      2.8 驗證客戶端連接

      進入hadoop1節點,進入sparkbin目錄,使用spark-shell連接集群

      $cd /app/hadoop/spark-1.1.0/bin

      $spark-shell --master spark://hadoop1:7077 --executor-memory 500m

      clip_image080

      在命令中只指定了內存大小并沒有指定核數,所以該客戶端將占用該集群所有核并在每個節點分配500M內存

      clip_image082

      clip_image084

      3Spark測試

      3.1 使用Spark-shell測試

      這里我們測試一下在Hadoop中大家都知道的WordCout程序,在MapReduce實現WordCout需要MapReduceJob三個部分,而在Spark中甚至一行就能夠搞定。下面就看一下是如何實現的:

      3.1.1 啟動HDFS

      $cd /app/hadoop/hadoop-2.2.0/sbin

      $./start-dfs.sh

      clip_image086

      通過jps觀察啟動情況,在hadoop1上面運行的進程有:NameNodeSecondaryNameNodeDataNode

      clip_image088

      hadoop2hadoop3上面運行的進程有:NameNodeDataNode

      clip_image090

      3.1.2 上傳數據到HDFS

      hadoop配置文件core-site.xml文件作為測試文件上傳到HDFS

      $hadoop fs -mkdir -p /user/hadoop/testdata

      $hadoop fs -put /app/hadoop/hadoop-2.2.0/etc/hadoop/core-site.xml /user/hadoop/testdata

      clip_image092

      3.1.3 啟動Spark

      $cd /app/hadoop/spark-1.1.0/sbin

      $./start-all.sh

      clip_image094

      3.1.4 啟動Spark-shell

      spark客戶端(這里在hadoop1節點),使用spark-shell連接集群

      $cd /app/hadoop/spark-1.1.0/bin

      $./spark-shell --master spark://hadoop1:7077 --executor-memory 512m --driver-memory 500m

      clip_image096

      3.1.5 運行WordCount腳本

      下面就是WordCount的執行腳本,該腳本是scala編寫,以下為一行實現:

      scala>sc.textFile("hdfs://hadoop1:9000/user/hadoop/testdata/core-site.xml").flatMap(_.split(" ")).map(x=>(x,1)).reduceByKey(_+_).map(x=>(x._2,x._1)).sortByKey(false).map(x=>(x._2,x._1)).take(10)

      為了更好看到實現過程,下面將逐行進行實現:

      scala>val rdd=sc.textFile("hdfs://hadoop1:9000/user/hadoop/testdata/core-site.xml")

      scala>rdd.cache()

      scala>val wordcount=rdd.flatMap(_.split(" ")).map(x=>(x,1)).reduceByKey(_+_)

      scala>wordcount.take(10)

      scala>val wordsort=wordcount.map(x=>(x._2,x._1)).sortByKey(false).map(x=>(x._2,x._1))

      scala>wordsort.take(10)

      clip_image098

      clip_image100

      clip_image102

      clip_image104

      詞頻統計結果如下:

      Array[(String, Int)] = Array(("",100), (the,7), (</property>,6), (<property>,6), (under,3), (in,3), (License,3), (this,2), (-->,2), (file.,2))

      3.1.6 觀察運行情況

      通過http://hadoop1:8080查看Spark運行情況,可以看到Spark3個節點,每個節點各為1個內核/512M內存,客戶端分配3個核,每個核有512M內存。

      clip_image106

      通過點擊客戶端運行任務ID,可以看到該任務在hadoop2hadoop3節點上運行,在hadoop1上并沒有運行,主要是由于hadoop1NameNodeSpark客戶端造成內存占用過大造成

      clip_image108

      3.2 使用Spark-submit測試

      Spark1.0.0開始,Spark提供了一個易用的應用程序部署工具bin/spark-submit,可以完成Spark應用程序在localStandaloneYARNMesos上的快捷部署。該工具語法及參數說明如下:

      Usage: spark-submit [options] <app jar | python file> [app options]

      Options:

        --master MASTER_URL          spark://host:port, mesos://host:port, yarn, or local.

        --deploy-mode DEPLOY_MODE  driver運行之處,client運行在本機,cluster運行在集群

        --class CLASS_NAME            應用程序包的要運行的class

        --name NAME                  應用程序名稱

        --jars JARS                     用逗號隔開的driver本地jar包列表以及executor類路徑

        --py-files PY_FILES              用逗號隔開的放置在Python應用程序

      PYTHONPATH上的.zip, .egg, .py文件列表

        --files FILES                    用逗號隔開的要放置在每個executor工作目錄的文件列表

        --properties-file FILE           設置應用程序屬性的文件放置位置,默認是conf/spark-defaults.conf

        --driver-memory MEM         driver內存大小,默認512M

        --driver-java-options           driverjava選項

        --driver-library-path            driver的庫路徑Extra library path entries to pass to the driver

        --driver-class-path             driver的類路徑,用--jars 添加的jar包會自動包含在類路徑里

        --executor-memory MEM       executor內存大小,默認1G

       

       Spark standalone with cluster deploy mode only:

        --driver-cores NUM           driver使用內核數,默認為1

        --supervise                   如果設置了該參數,driver失敗是會重啟

       

       Spark standalone and Mesos only:

        --total-executor-cores NUM    executor使用的總核數

       

       YARN-only:

        --executor-cores NUM         每個executor使用的內核數,默認為1

        --queue QUEUE_NAME        提交應用程序給哪個YARN的隊列,默認是default隊列

        --num-executors NUM        啟動的executor數量,默認是2

        --archives ARCHIVES          被每個executor提取到工作目錄的檔案列表,用逗號隔開

      3.2.1 運行腳本1

      該腳本為Spark自帶例子,在該例子中個計算了圓周率π的值,以下為執行腳本:

      $cd /app/hadoop/spark-1.1.0/bin

      $./spark-submit --master spark://hadoop1:7077 --class org.apache.spark.examples.SparkPi --executor-memory 512m ../lib/spark-examples-1.1.0-hadoop2.2.0.jar 200

      參數說明(詳細可以參考上面的參數說明):

      l  --master Master所在地址,可以有MesosSparkYARNLocal四種,在這里為Spark Standalone集群,地址為spark://hadoop1:7077

      l  --class應用程序調用的類名,這里為org.apache.spark.examples.SparkPi

      l  --executor-memory 每個executor所分配的內存大小,這里為512M

      l  執行jar這里是../lib/spark-examples-1.1.0-hadoop2.2.0.jar

      l  分片數目 這里數目為200

      clip_image110

      clip_image112

      3.2.2 觀察運行情況

      通過觀察Spark集群有3Worker節點和正在運行的1個應用程序,每個Worker節點為1內核/512M內存。由于沒有指定應用程序所占內核數目,則該應用程序占用該集群所有3個內核,并且每個節點分配512M內存。

      clip_image114

      根據每個節點負載情況,每個節點運行executor并不相同,其中hadoop1executor數目為0。而hadoop3執行executor數為10個,其中5EXITED狀態,5KILLED狀態。

      clip_image116

      3.2.3 運行腳本2

      該腳本為Spark自帶例子,在該例子中個計算了圓周率π的值,區別腳本1這里指定了每個executor內核數據,以下為執行腳本:

      $cd /app/hadoop/spark-1.1.0/bin

      $./spark-submit --master spark://hadoop1:7077 --class org.apache.spark.examples.SparkPi --executor-memory 512m --total-executor-cores 2 ../lib/spark-examples-1.1.0-hadoop2.2.0.jar 200

      參數說明(詳細可以參考上面的參數說明):

      l  --master Master所在地址,可以有MesosSparkYARNLocal四種,在這里為Spark Standalone集群,地址為spark://hadoop1:7077

      l  --class應用程序調用的類名,這里為org.apache.spark.examples.SparkPi

      l  --executor-memory 每個executor所分配的內存大小,這里為512M

      l  --total-executor-cores 2 每個executor分配的內核數

      l  執行jar這里是../lib/spark-examples-1.1.0-hadoop2.2.0.jar

      l  分片數目 這里數目為200

       

      3.2.4 觀察運行情況

      通過觀察Spark集群有3Worker節點和正在運行的1個應用程序,每個Worker節點為1內核/512M內存。由于指定應用程序所占內核數目為2,則該應用程序使用該集群所有2個內核。

      clip_image118

      clip_image120

      posted @ 2015-08-12 08:36  shishanyuan  閱讀(27977)  評論(60)    收藏  舉報
      主站蜘蛛池模板: 欧美乱妇高清无乱码免费| 国产精品白浆无码流出| 40岁大乳的熟妇在线观看| 在线观看成人永久免费网站| 久久久这里只有精品10| caoporn成人免费公开| 国产一区精品综亚洲av| 亚洲欧美日韩愉拍自拍美利坚| 丁香五月亚洲综合在线| 精品日韩人妻中文字幕| 人妻一区二区三区三区| 亚洲av成人无网码天堂| 亚洲第一区二区国产精品| 色综合久久久久综合体桃花网| 亚洲AV日韩AV综合在线观看| 国产综合久久久久鬼色| 精品亚洲欧美中文字幕在线看| 日本特黄特黄刺激大片| 日本欧美大码a在线观看| 黄又色又污又爽又高潮 | 午夜福利国产盗摄久久性| 亚洲综合激情五月色一区| 国产精品天干天干综合网| 熟女人妻aⅴ一区二区三区电影 | 欧美一区二区三区性视频| 日韩精品福利一二三专区| 4399理论片午午伦夜理片| 在线日韩日本国产亚洲| 大尺度国产一区二区视频 | 国产一区二区三区黄色片| 东方四虎av在线观看| 天堂√最新版中文在线地址| 欧美一区二区三区久久综合| 青草精品国产福利在线视频| 美女午夜福利视频一区二区| 免费看成人欧美片爱潮app| 亲子乱aⅴ一区二区三区| 国产中文字幕精品免费| 狠狠色丁香婷婷久久综合五月| 视频一区二区三区四区五区| 国产片AV国语在线观看手机版|