spark+hadoop (yarn模式)
最近畢設需要用到 Spark 叢集,所以就記錄下了部署的過程。我們知道 Spark 官方提供了三種叢集部署方案: Standalone, Mesos, YARN。其中 Standalone 最為方便,本文主要講述結合 YARN 的部署方案。
軟體環境:
Ubuntu 14.04.1 LTS (GNU/Linux 3.13.0-32-generic x86_64)
Hadoop: 2.6.0
Spark: 1.3.0
0 寫在前面
本例中的演示均為非 root 許可權,所以有些命令列需要加 sudo,如果你是 root 身份執行,請忽略 sudo。下載安裝的軟體建議都放在 home 目錄之上,比如~/workspace
1. 環境準備
修改主機名
我們將搭建1個master,2個slave的叢集方案。首先修改主機名vi /etc/hostname
,在master上修改為master
,其中一個slave上修改為slave1
,另一個同理。
配置hosts
在每臺主機上修改host檔案
vi /etc/hosts 10.1.1.107 master 10.1.1.108 slave1 10.1.1.109 slave2 |
配置之後ping一下使用者名稱看是否生效
ping slave1 ping slave2 |
2.SSH 免密碼登入 , 若是scp命令許可權否認可以通過拷貝來操作 , 下面紅色部分有記載
安裝Openssh server
sudo apt-get install openssh-server
|
在所有機器上都生成私鑰和公鑰
ssh-keygen -t rsa #一路回車
|
需要讓機器間都能相互訪問,就把每個機子上的id_rsa.pub
發給master節點,傳輸公鑰可以用scp來傳輸。
scp ~/.ssh/id_rsa.pub [email protected]:~/.ssh/id_rsa.pub.slave1
|
在master上,將所有公鑰加到用於認證的公鑰檔案authorized_keys
中
cat ~/.ssh/id_rsa.pub*
|
將公鑰檔案authorized_keys
分發給每臺slave
scp ~/.ssh/authorized_keys spark@slave1:~/.ssh/
|
在每臺機子上驗證SSH無密碼通訊
ssh master ssh slave1 ssh slave2 |
如果登陸測試不成功,則可能需要修改檔案authorized_keys的許可權(許可權的設定非常重要,因為不安全的設定安全設定,會讓你不能使用RSA功能 )
chmod 600 ~/.ssh/authorized_keys
|
3.安裝 Java
從官網下載最新版
Java 就可以,Spark官方說明 Java 只要是6以上的版本都可以,我下的是 jdk-7u75-linux-x64.gz
在~/workspace
目錄下直接解壓
tar -zxvf jdk-7u75-linux-x64.gz
|
修改環境變數sudo vi /etc/profile
,新增下列內容,注意將home路徑替換成你的:
export WORK_SPACE=/home/spark/workspace/ export JAVA_HOME=$WORK_SPACE/jdk1.7.0_75 export JRE_HOME=/home/spark/work/jdk1.7.0_75/jre export PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH export CLASSPATH=$CLASSPATH:.:$JAVA_HOME/lib:$JAVA_HOME/jre/lib |
然後使環境變數生效,並驗證 Java 是否安裝成功
$ source /etc/profile #生效環境變數 $ java -version #如果打印出如下版本資訊,則說明安裝成功 java version "1.7.0_75" Java(TM) SE Runtime Environment (build 1.7.0_75-b13) Java HotSpot(TM) 64-Bit Server VM (build 24.75-b04, mixed mode) |
4.安裝 Scala
Spark官方要求 Scala 版本為 2.10.x,注意不要下錯版本,我這裡下了 2.10.4,官方下載地址(可惡的天朝大區域網下載 Scala 龜速一般)。
同樣我們在~/workspace
中解壓
tar -zxvf scala-2.10.4.tgz
|
再次修改環境變數sudo vi /etc/profile
,新增以下內容:
export SCALA_HOME=$WORK_SPACE/scala-2.10.4 export PATH=$PATH:$SCALA_HOME/bin |
同樣的方法使環境變數生效,並驗證 scala 是否安裝成功
$ source /etc/profile #生效環境變數 $ scala -version #如果打印出如下版本資訊,則說明安裝成功 Scala code runner version 2.10.4 -- Copyright 2002-2013, LAMP/EPFL |
5.安裝配置 Hadoop YARN
下載解壓
從官網下載 hadoop2.6.0 版本,這裡給個我們學校的映象下載地址。
同樣我們在~/workspace
中解壓
tar -zxvf hadoop-2.6.0.tar.gz
|
配置 Hadoop
cd ~/workspace/hadoop-2.6.0/etc/hadoop
進入hadoop配置目錄,需要配置有以下7個檔案:hadoop-env.sh
,yarn-env.sh
,slaves
,core-site.xml
,hdfs-site.xml
,maprd-site.xml
,yarn-site.xml
-
在
hadoop-env.sh
中配置JAVA_HOMEexport JAVA_HOME=/home/spark/workspace/jdk1.7.0_75
-
在
yarn-env.sh
中配置JAVA_HOMEexport JAVA_HOME=/home/spark/workspace/jdk1.7.0_75
-
在
slaves
中配置slave節點的ip或者host,slave1 slave2
-
修改
core-site.xml
<configuration> <property> <name>fs.defaultFS</name> <value>hdfs://master:9000/</value> </property> <property> <name>hadoop.tmp.dir</name> <value>file: spark hadoop-2.6.0/tmp</value> </property> </configuration>
-
修改
hdfs-site.xml
<configuration> <property> <name>dfs.namenode.secondary.http-address</name> <value>master:9001</value> </property> <property> <name>dfs.namenode.name.dir</name> <value>file: spark hadoop-2.6.0 name</value> </property> <property> <name>dfs.datanode.data.dir</name> <value>file: spark hadoop-2.6.0 data</value> </property> <property> <name>dfs.replication</name> <value>3</value> </property> </configuration>
-
修改
mapred-site.xml
<configuration> <property> <name>mapreduce.framework.name</name> <value>yarn</value> </property> </configuration>
-
修改
yarn-site.xml
<configuration> <property> <name>yarn.nodemanager.aux-services</name> <value>mapreduce_shuffle</value> </property> <property> <name>yarn.nodemanager.aux-services.mapreduce.shuffle.class</name> <value>org.apache.hadoop.mapred.ShuffleHandler</value> </property> <property> <name>yarn.resourcemanager.address</name> <value>master:8032</value> </property> <property> <name>yarn.resourcemanager.scheduler.address</name> <value>master:8030</value> </property> <property> <name>yarn.resourcemanager.resource-tracker.address</name> <value>master:8035</value> </property> <property> <name>yarn.resourcemanager.admin.address</name> <value>master:8033</value> </property> <property> <name>yarn.resourcemanager.webapp.address</name> <value>master:8088</value> </property> </configuration>
將配置好的hadoop-2.6.0
資料夾分發給所有slaves吧
scp -r ~/workspace/hadoop-2.6.0 spark@slave1:~/workspace/
|
啟動 Hadoop
在 master 上執行以下操作,就可以啟動 hadoop 了。
cd ~/workspace/hadoop-2.6.0 #進入hadoop目錄bin/hadoop namenode -format #格式化namenode停在這一步咯 , 因為在上面的ssh配置時許可權還是不能通過 , 不能與slave1和slave2 ssh通訊 這一步已經解決 , 只需將master上的公鑰檔案id_rsa.pub拷貝到slave1和slave2上並重新命名為 authorized_keys即可 , 這是在虛擬機器下出現的問題 , 但是真實環境中還需要試驗scp命令來拷貝公鑰檔案 sbin/start-dfs.sh #啟動dfs 這裡會出現permission denied問題 , 但是卻在slave1和slave2中成功啟動了DataNode和NodeManager sbin/start-yarn.sh #啟動yarn |
驗證 Hadoop 是否安裝成功
可以通過jps
命令檢視各個節點啟動的程序是否正常。在 master 上應該有以下幾個程序:
$ jps #run on master 3407 SecondaryNameNode 3218 NameNode 上面兩個沒有成功顯示出來 , 由於在上面紅色部分的問題 , 但是通過http://master:8088成功顯示介面 3552 ResourceManager 3910 Jps |
在每個slave上應該有以下幾個程序:
$ jps #run on slaves 2072 NodeManager 2213 Jps 1962 DataNode |
或者在瀏覽器中輸入 http://master:8088 ,應該有 hadoop 的管理介面出來了,並能看到 slave1 和 slave2 節點。
6.Spark安裝
下載解壓
在~/workspace
目錄下解壓
tar -zxvf spark-1.3.0-bin-hadoop2.4.tgz mv spark-1.3.0-bin-hadoop2.4 spark-1.3.0 #原來的檔名太長了,修改下 |
配置 Spark
cd ~/workspace/spark-1.3.0/conf #進入spark配置目錄 cp spark-env.sh.template spark-env.sh #從配置模板複製 vi spark-env.sh #新增配置內容 |
在spark-env.sh
末尾新增以下內容(這是我的配置,你可以自行修改):
export SCALA_HOME=-2.10.4 spark scalaexport JAVA_HOME=.7.0_75 spark jdk1export HADOOP_HOME=-2.6.0 spark hadoopexport HADOOP_CONF_DIR=$HADOOP_HOME hadoopSPARK_MASTER_IP=master SPARK_LOCAL_DIRS=-1.3.0 spark sparkSPARK_DRIVER_MEMORY=1G |
注:在設定Worker程序的CPU個數和記憶體大小,要注意機器的實際硬體條件,如果配置的超過當前Worker節點的硬體條件,Worker程序會啟動失敗。
vi slaves
在slaves檔案下填上slave主機名:
slave1 slave2 |
將配置好的spark-1.3.0
資料夾分發給所有slaves吧
scp -r ~/workspace/spark-1.3.0 spark@slave1:~/workspace/
|
啟動Spark
在spark安裝目錄下執行下面命令才行 , 目前的master安裝目錄在/opt/spark-2.0.0-bin-hadoop2.7/
sbin/start-all.sh
|
驗證 Spark 是否安裝成功
用jps
檢查,在 master 上應該有以下幾個程序:
$ jps 7949 Jps 7328 SecondaryNameNode 7805 Master 7137 NameNode 7475 ResourceManager |
在 slave 上應該有以下幾個程序:
$jps 3132 DataNode 3759 Worker 3858 Jps 3231 NodeManager |
執行示例
#本地模式兩執行緒執行 ./bin/run-example SparkPi 10 --master local[2] #Spark Standalone 叢集模式執行 ./bin/spark-submit \ --class org.apache.spark.examples.SparkPi \ --master spark://master:7077 \ lib/spark-examples-1.3.0-hadoop2.4.0.jar \ 100 #Spark on YARN 叢集上 yarn-cluster 模式執行 ./bin/spark-submit \ --class org.apache.spark.examples.SparkPi \ --master yarn-cluster \ # can also be `yarn-client` lib/spark-examples*.jar \ 10 |
注意 Spark on YARN 支援兩種執行模式,分別為yarn-cluster
和yarn-client
,具體的區別可以看這篇博文,從廣義上講,yarn-cluster適用於生產環境;而yarn-client適用於互動和除錯,也就是希望快速地看到application的輸出。
相關推薦
spark+hadoop (yarn模式)
最近畢設需要用到 Spark 叢集,所以就記錄下了部署的過程。我們知道 Spark 官方提供了三種叢集部署方案: Standalone, Mesos, YARN。其中 Standalone 最為方便,本文主要講述結合 YARN 的部署方案。 軟體環境: Ubuntu
Spark on YARN模式的安裝(spark-1.6.1-bin-hadoop2.6.tgz + hadoop-2.6.0.tar.gz)(master、slave1和slave2)(博主推薦)
說白了 Spark on YARN模式的安裝,它是非常的簡單,只需要下載編譯好Spark安裝包,在一臺帶有Hadoop YARN客戶端的的機器上執行即可。 Spark on YARN分為兩種: YARN cluster(YARN standalone,0.9版本以前)和 YA
【Spark】篇---Spark中yarn模式兩種提交任務方式
方式 div -s and clas client 命令 yarn 模式 一、前述 Spark可以和Yarn整合,將Application提交到Yarn上運行,和StandAlone提交模式一樣,Yarn也有兩種提交任務的方式。 二、具體 1、yarn
spark on yarn模式下內存資源管理(筆記2)
warn 計算 nta 堆內存 註意 layout led -o exc 1.spark 2.2內存占用計算公式 https://blog.csdn.net/lingbo229/article/details/80914283 2.spark on yarn內存分配*
spark跑YARN模式或Client模式提交任務不成功(application state: ACCEPTED)
應該是yarn的記憶體資源不夠 cd $HADOOP_HOME/bin 然後檢視yarn程序 yarn application -list 然後殺死任務 yarn application -kill application_1437456051228_1725
spark應用yarn模式提交多個應用,一個Running,其它處於accepted狀態
這篇文章解決我們的問題:https://blog.csdn.net/dandykang/article/details/48160927 以前只是開發,現在到了一家大資料剛起步公司,需要提交spark應用到yarn,每次只能執行一個,處於Running狀態,其它處於Accepted狀
Spark中yarn模式兩種提交任務方式
轉自:https://www.cnblogs.com/LHWorldBlog/p/8414342.html 一、前述 Spark可以和Yarn整合,將Application提交到Yarn上執行,和StandAlone提交模式一樣,Yarn也有兩種提交任務的方式。 二、具體  
【Spark篇】---Spark中yarn模式兩種提交任務方式
一、前述Spark可以和Yarn整合,將Application提交到Yarn上執行,和StandAlone提交模式一樣,Yarn也有兩種提交任務的方式。二、具體 1、yarn-client提交任務方式配置 在client節點配置中spark
大資料之Spark(八)--- Spark閉包處理,Spark的應用的部署模式,Spark叢集的模式,啟動Spark On Yarn模式,Spark的高可用配置
一、Spark閉包處理 ------------------------------------------------------------ RDD,resilient distributed dataset,彈性(容錯)分散式資料集。 分割槽列表,fun
Spark中yarn模式兩種提交任務方式(yarn-client與yarn-cluster)
Spark可以和Yarn整合,將Application提交到Yarn上執行,和StandAlone提交模式一樣,Yarn也有兩種提交任務的方式。 1.yarn-client提交任務方式 配置 在client節點配置中spark-en
超圖大資料產品spark on yarn模式使用
本文介紹超圖大資料產品spark元件,iServer產品中的分散式分析服務,如何在部署好的spark叢集,hadoop叢集中採用spark on yarn模式提交任務進行空間大資料相關的分析。 一、環境 1. Ubuntu server 16,三個節點的hadoop叢集和spar
Spark on yarn模式的引數設定即調優
1 啟動方式 執行命令./spark-shell --master yarn預設執行的是client模式。 執行./spark-shell --master yarn-client或者./spark-shell --master yarn --deploy-m
spark on yarn模式裡需要有時手工釋放linux記憶體
歡迎您的加入! 微信公眾號平臺: 大資料躺過的坑 微信公眾號平臺: 人工智慧躺過的坑 大資料和人工智慧躺過的坑(總群): 161156071 更多QQ技術分群,詳情請見:http://www.cnblogs.com/zls
spark on yarn模式下掃描帶有kerberos的hbase
我上一篇寫了關於如何在spark中直接訪問有kerberos的hbase,現在我們需要對hbase進行全表的分散式掃描,在無kerberos的情況下通過sparkcontext的newApiHadoopRDD就可以達到目的,但有了kerberos的限制,這個方法就不行了,
關於spark的yarn模式的測試
額。。。本人菜雞一隻,強行記錄點東西,分享一下,也怕自己腦子不好使,忘記了~如果有說錯的,還請大家指出批評!!前言:spark的執行模式有很多,通過--master這樣的引數來設定的,現在spark已經有2.3.0的版本了,執行模式有mesos,yarn,local,更好的是
自己的HADOOP平臺(三):Mysql+hive遠端模式+Spark on Yarn
Spark和hive配置較為簡單,為了方便Spark對資料的使用與測試,因此在搭建Spark on Yarn模式的同時,也把Mysql + Hive一起搭建完成,並且配置Hive對Spark的支援,讓Spark也能像Hive一樣操作資料。 前期準備
spark-yarn 模式 jar包優化
spark 大數據 hadoop yarn在yarn模式下,會上傳jar包到yarn來執行spark程序,如果每次都上傳,很耗時間,而且如果是阿裏雲的機器,上傳很慢,180m的jar要上傳十幾分鐘,所以要提前上傳到hdfs中去。spark支持如下幾個參數spark.yarn.jars:只能指定具體jar包,在
Spark on yarn的兩種模式 yarn-cluster 和 yarn-client
然而 技術 負責 blog 作業 mage 申請 .com contain 從深層次的含義講,yarn-cluster和yarn-client模式的區別其實就是Application Master進程的區別,yarn-cluster模式下,driver運行在AM(Appli
Spark運行模式_基於YARN的Resource Manager的Client模式(集群)
發的 資源 使用 由於 ack 生成 clust 均衡 ont 現在越來越多的場景,都是Spark跑在Hadoop集群中,所以為了做到資源能夠均衡調度,會使用YARN來做為Spark的Cluster Manager,來為Spark的應用程序分配資源。 在執行Spark應
Spark的分散式執行模式 Local,Standalone, Spark on Mesos, Spark on Yarn, Kubernetes
Spark的分散式執行模式 Local,Standalone, Spark on Mesos, Spark on Yarn, Kubernetes Local模式 Standalone模式 Spark on Mesos模式 Spark on Yarn