spark on yarn

2019獨角獸企業重金招聘Python工程師標準>>> hot3.png

spark on yarn

軟件安裝

當前環境

hadoop環境搭建參考:hadoop集群安裝

  • hadoop2.6
  • spark-2.2.0-bin-hadoop2.6.tgz
  • scala-2.11.12

安裝scala

tar -zxvf scala-2.11.12.tgz

vi /etc/profile

添加以下內容

export SCALA_HOME=/home/hadoop/app/scala
export PATH=$PATH:$SCALA_HOME/bin

使配置生效

source /etc/profile

查看scala版本號

scala -version

注意: 用root賬戶修改完變量后,需要重新打開ssh鏈接,配置才能生效

安裝spark

tar -zvf spark-2.2.0-bin-without-hadoop.tgz

vi /etc/profile

添加以下內容

export SPARK_HOME=/home/hadoop/app/spark2.2.0
export PATH=$PATH:$SPARK_HOME/bin

修改spark環境變量

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

vi conf/spark-evn.sh

添加以下內容

SPARK_DRIVER_MEMORY=512m
SPARK_DIST_CLASSPATH=$(/home/hadoop/app/hadoop-2.6.0/bin/hadoop classpath)
SPARK_LOCAL_DIRS=/home/hadoop/app/spark2.2.0
export SPARK_MASTER_IP=192.168.10.125export JAVA_HOME=/home/app/jdk8
export SCALA_HOME=/home/hadoop/app/scala
export HADOOP_HOME=/home/hadoop/app/hadoop
export HADOOP_CONF_DIR=/home/hadoop/app/hadoop/etc/hadoop
export PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$SCALA_HOME/bin

使配置變量生效

source /etc/profile

配置slaves

vi slaves

node3
node4

將配置文件下發到從節點

scp slaves hadoop@node3:/home/hadoop/app/spark2.2.0/conf
scp slaves hadoop@node4:/home/hadoop/app/spark2.2.0/conf
scp spark-env.sh hadoop@node3:/home/hadoop/app/spark2.2.0/conf
scp spark-env.sh hadoop@node4:/home/hadoop/app/spark2.2.0/conf

啟動

# 啟動zookeeper,可能存在選舉延遲,可多執行幾次./zkServer.sh status查看啟動結果
./runRemoteCmd.sh "/home/hadoop/app/zookeeper/bin/zkServer.sh start" zookeeper
# 在node2節點上執行,啟動HDFS
sbin/start-dfs.sh
# 在node2節點上執行,啟動YARN
sbin/start-yarn.sh 
# 在node4節點上面執行,啟動resourcemanager
sbin/yarn-daemon.sh start resourcemanager
# 在node2上啟動spark
sbin/start-all.sh

關閉

# 關閉spark
sbin/stop-all.sh
# 在node4上執行
sbin/yarn-daemon.sh stop resourcemanager
# 在node2上執行
sbin/stop-yarn.sh 
# 在node2上執行
sbin/stop-dfs.sh
# 關閉zookeeper
runRemoteCmd.sh "/home/hadoop/app/zookeeper/bin/zkServer.sh stop" zookeeper

查看啟動情況

jps

# hdfs進程
1661 NameNode
1934 SecondaryNameNode
1750 DataNode# yarn進程
8395 ResourceManager
7725 NameNode# namenode HA
8256 DFSZKFailoverController
7985 JournalNode# zookeeper進程
1286 QuorumPeerMain# spark進程
2551 Master
2641 Worker

管理界面

hadoop:  http://node2:8088/
nameNode: http://node2:50070/
nodeManager:  http://node2:8042/
spark master:  http://node2:8080/
spark worker:  http://node2:8081/
spark jobs:  http://node2:4040/

運行示例

Spark-shell

vi test.text# 在文件中添加 hello spark
hdfs dfs -mkdir /test # 創建文件夾
hdfs dfs -put test.txt /test # 上傳文件到hdfs
hdfs dfs -ls /test # 查看是否上傳成功
./bin/spark-shell
sc.textFile("hdfs://node2:9000/test/test.txt") # 從hdfs上獲取文件
sc.first() # 獲取文件的第一行數據

Run application locally(Local模式)

./bin/spark-submit --class org.apache.spark.examples.SparkPi --master local[4] /home/hadoop/app/spark2.2.0/examples/jars/spark-examples_2.11-2.2.0.jar

Run on a Spark standalone cluster(Standalone模式,使用Spark自帶的簡單集群管理器)

./bin/spark-submit
--class org.apache.spark.examples.SparkPi
--master spark://node2:7077
--executor-memory 512m
--total-executor-cores 4
/home/hadoop/app/spark2.2.0/examples/jars/spark-examples_2.11-2.2.0.jar 10

Run on yarn(YARN模式,使用YARN作為集群管理器)

./bin/spark-submit --class org.apache.spark.examples.SparkPi --master yarn --deploy-mode client examples/jars/spark-examples*.jar 10

注意事項

HADOOP_CONF_DIR=/home/hadoop/app/hadoop/etc/hadoop

確保 HADOOP_CONF_DIR 或者 YARN_CONF_DIR 指向包含 Hadoop 集群的(客戶端)配置文件的目錄。這些配置被用于寫入 HDFS 并連接到 YARN ResourceManager 。此目錄中包含的配置將被分發到 YARN 集群,以便 application(應用程序)使用的所有的所有 containers(容器)都使用相同的配置。如果配置引用了 Java 系統屬性或者未由 YARN 管理的環境變量,則還應在 Spark 應用程序的配置(driver(驅動程序),executors(執行器),和在客戶端模式下運行時的 AM )。

SPARK_DIST_CLASSPATH=$(/home/hadoop/app/hadoop-2.6.0/bin/hadoop classpath)

Pre-build with user-provided Hadoop: 屬于“Hadoop free”版,不包含hadoop的jar等,這樣,下載到的Spark,可應用到任意Hadoop 版本。但是需要在spark的spar-evn.sh中指定配置hadoop的安裝路徑。

spark-submit

如果用戶的應用程序被打包好了,它可以使用 bin/spark-submit 腳本來啟動。這個腳本負責設置 Spark 和它的依賴的 classpath,并且可以支持 Spark 所支持的不同的 Cluster Manager 以及 deploy mode(部署模式):

./bin/spark-submit \--class <main-class> \--master <master-url> \--deploy-mode <deploy-mode> \--conf <key>=<value> \... # other options<application-jar> \[application-arguments]

一些常用的 options(選項)有 :

  • --class: 您的應用程序的入口點(例如。 org.apache.spark.examples.SparkPi)
  • --master: standalone模式下是集群的 master URL,on yarn模式下值是yarn
  • --deploy-mode: 是在 worker 節點(cluster) 上還是在本地作為一個外部的客戶端(client) 部署您的 driver(默認: client)
  • --conf: 按照 key=value 格式任意的 Spark 配置屬性。對于包含空格的 value(值)使用引號包 “key=value” 起來。
  • application-jar: 包括您的應用以及所有依賴的一個打包的 Jar 的路徑。該 URL 在您的集群上必須是全局可見的,例如,一個 hdfs:// path 或者一個 file:// 在所有節點是可見的。
  • application-arguments: 傳遞到您的 main class 的 main 方法的參數,如果有的話。

異常處理

執行腳本

./bin/spark-submit --class org.apache.spark.examples.SparkPi --master yarn --deploy-mode client /home/hadoop/app/spark2.2.0/examples/jars/spark-examples_2.11-2.2.0.jar

報錯信息一

Application application_1537990303043_0001 failed 2 times due to AM Container for appattempt_1537990303043_0001_000002 exited with  exitCode: -103
Diagnostics: 
Container [pid=2344,containerID=container_1537990303043_0001_02_000001] is running beyond virtual memory limits. 
Current usage: 74.0 MB of 1 GB physical memory used; 
2.2 GB of 2.1 GB virtual memory used. Killing container.

問題原因

虛擬機物理內存設置的是1G,則對應虛擬內存最大為1*2.1=2.1GB,實際使用了2.2[此處疑問:為什么就使用了2.2,單個任務默認分配1024M,加上一個任務的Container默認1024M導致嗎?],所以需要擴大虛擬內存的比例,或者限制container和task的大小,或者關閉掉對虛擬內存的檢測。

解決方法

修改yarn-site.xml文件,新增以下內容,詳情原因請參考:YARN 內存參數詳解

  <property><name>yarn.nodemanager.vmem-pmem-ratio</name><value>3</value><description>虛擬內存和物理內存比率,默認為2.1</description></property><property><name>yarn.nodemanager.vmem-check-enabled</name><value>false</value><description>不檢查虛擬內存,默認為true</description></property>

報錯二

Exception in thread "main" org.apache.spark.SparkException: Yarn application has already ended! It might have been killed or unable to launch application master.at org.apache.spark.scheduler.cluster.YarnClientSchedulerBackend.waitForApplication(YarnClientSchedulerBackend.scala:85)at org.apache.spark.scheduler.cluster.YarnClientSchedulerBackend.start(YarnClientSchedulerBackend.scala:62)at org.apache.spark.scheduler.TaskSchedulerImpl.start(TaskSchedulerImpl.scala:173)at org.apache.spark.SparkContext.<init>(SparkContext.scala:509)at org.apache.spark.SparkContext$.getOrCreate(SparkContext.scala:2509)at org.apache.spark.sql.SparkSession$Builder$$anonfun$6.apply(SparkSession.scala:909)at org.apache.spark.sql.SparkSession$Builder$$anonfun$6.apply(SparkSession.scala:901)at scala.Option.getOrElse(Option.scala:121)at org.apache.spark.sql.SparkSession$Builder.getOrCreate(SparkSession.scala:901)at org.apache.spark.examples.SparkPi$.main(SparkPi.scala:31)at org.apache.spark.examples.SparkPi.main(SparkPi.scala)at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)at java.lang.reflect.Method.invoke(Method.java:498)at org.apache.spark.deploy.SparkSubmit$.org$apache$spark$deploy$SparkSubmit$$runMain(SparkSubmit.scala:755)at org.apache.spark.deploy.SparkSubmit$.doRunMain$1(SparkSubmit.scala:180)at org.apache.spark.deploy.SparkSubmit$.submit(SparkSubmit.scala:205)at org.apache.spark.deploy.SparkSubmit$.main(SparkSubmit.scala:119)at org.apache.spark.deploy.SparkSubmit.main(SparkSubmit.scala)
18/09/04 17:01:43 INFO util.ShutdownHookManager: Shutdown hook called

問題原因

以上報錯是在偽集群上運行時報錯信息,具體報錯原因未知,在切換到真正的集群環境后無此報錯

配置鏈接

hadoop

  • core-site.xml

  • hdfs-site.xml

  • mapred-site.xml

  • yarn-site.xml

  • hadoop-env.sh

  • masters

  • slaves

zookeeper

  • zoo.cfg

spark

  • spark-env.sh
  • slaves

env

  • hosts
  • profile

tools

  • deploy.conf
  • deploy.sh
  • runRemoteCmd.sh

轉載于:https://my.oschina.net/freelili/blog/2218794

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/537790.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/537790.shtml
英文地址,請注明出處:http://en.pswp.cn/news/537790.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

如何查看SQL Server2000執行過的SQL語句

SQLServer事件探查器可以完整記錄SQL服務器執行過的SQL語句以及存儲過程等 下面是SQLServer事件探查器的使用方法&#xff1a; 1. 打開SQL Server 企業管理器。 2. 從“工具”菜單選擇“事件探查器”。 3. 當“事件探查器”主界面打開后&#xff0c;從“文件”菜單選擇“新跟蹤…

c語言鏈表不帶頭節點的排序,不帶頭結點的單向鏈表排序——插入排序(C語言)...

LinkList* LinkListInsertSort(LinkList* pHead){LinkList *pFirst (LinkList *)NULL; /* 原鏈表剩下未排序節點的頭指針 */LinkList *pCurrInsert (LinkList *)NULL; /* 無序鏈表中當前待插入節點 */LinkList *pPrev (LinkList *)NULL; /* 有序鏈表中插入位置的前一個節點 …

免費字體

若不想字體版權有問題&#xff0c;可以參考以下幾種完全免費的字體&#xff1a; 方正&#xff1a;方正黑體、方正書宋、方正仿宋、方正楷體 思源&#xff1a;思源黑體、思源柔黑體、思源宋體 站酷&#xff1a;站酷酷黑體、站酷高端黑體、站酷快樂體、站酷意大利體 。

【Python爬蟲學習筆記12】Ajax數據爬取簡介

有時候在我們設計利用requests抓取網頁數據的時候&#xff0c;會發現所獲得的結果可能與瀏覽器顯示給我們的不一樣&#xff1a;比如說有的信息我們通過瀏覽器可以顯示&#xff0c;但一旦用requests卻得不到想要的結果。這種現象是因為我們通過requests獲得的都是HTML源文檔&…

c語言的報告一,C語言實驗報告(一).doc

C語言實驗報告(一)C語言實驗報告(一)一、實驗目的掌握C語言中&#xff0c;基本的輸入輸出函數的使用方法。掌握printf中轉義字符’\t’&#xff0c;’\n’的用法。掌握賦值語句的用法。掌握算術表達式、賦值表達式的計算。掌握數學函數的使用。二、實驗內容從鍵盤輸入一個6位整…

數據挖掘——相似文章推薦

相似文章推薦&#xff1a;在用戶閱讀某篇文章時&#xff0c;為用戶推薦更多的與在讀文章內容相類似的文章 相關概念&#xff1a; 推薦(Recommended)&#xff1a;指介紹好的人或事物&#xff0c;希望被任用或接受。數據挖掘領域&#xff0c;推薦包括相似推薦和協同過濾推薦。 相…

win10投影無法正常使用:我們正在確認此功能 解決方法

鼠標移動到開始按鈕&#xff0c;右鍵----- windows powershell&#xff08;管理員&#xff09; 輸入命令&#xff1a; netsh winsock reset 然后重啟電腦&#xff0c;問題解決

青海師大c語言研究生專業課,2016年青海師范大學計算機應用技術C語言程序設計考研復試題庫...

一、選擇題1&#xff0e; 有如下程序:程序運行后的輸出結果是( )。答:C【解析】題目中判斷if 條件是否成立&#xff0c;后a 自增 得if 條件不成立執行else 函數體&#xff0c;輸出F 。最后執行語句故C 選項正確。 按照格式輸出2&#xff0e; 有如下程序&#xff1a;先取值為0, …

產品經理和項目經理的差別

原文地址&#xff1a;https://blog.csdn.net/verifocus/article/details/79219539 --------------------------------------------------------------------- 項目經理與產品經理的區別&#xff0c;用一句話概括就是&#xff1a;產品經理是做正確的事情&#xff0c;項目經理是…

c語言設計一個按時間片輪轉法實現處理器調度的程序,設計一個按時間片輪轉法實現處理器調度的程序...

實驗一處理器調度一、實習內容選擇一個調度算法&#xff0c;實現處理器調度。&#xff1b;二、實習目的在采用多道程序設計的系統中&#xff0c;往往有若干個進程同時處于就緒狀態。當就緒進程個數大于處理器數時&#xff0c;就必須依照某種策略來決定哪些進程優先占用處理器。…

Perl的淺拷貝和深度拷貝

首先是深、淺拷貝的概念&#xff1a; 淺拷貝&#xff1a;shallow copy&#xff0c;只拷貝第一層的數據。Perl中賦值操作就是淺拷貝深拷貝&#xff1a;deep copy&#xff0c;遞歸拷貝所有層次的數據&#xff0c;Perl中Clone模塊的clone方法&#xff0c;以及Storable的dclone()函…

程序員分析報告(2018)-總結篇

一、生活中的程序員 居住篇 在主要職業群體中&#xff0c;程序員更傾向于租房&#xff0c;20.9%的受訪程序員目前自己有房&#xff0c;此比例明顯低于其他職業。大概是因為程序員大部分還比較 年輕&#xff0c;傳說中的超高薪水并不能讓很多人擁有自己的房子而更長的工作…

linux lvm 查看,Linux LVM 詳解

邏輯卷管理LVM是一個多才多藝的硬盤系統工具。無論在Linux或者其他類似的系統&#xff0c;都是非常的好用。傳統分區使用固定大小分區&#xff0c;重新調整大小十分麻煩。但是&#xff0c;LVM可以創建和管理“邏輯”卷&#xff0c;而不是直接使用物理硬盤。可以讓管理員彈性的管…

cnblogs修改網站圖標icon

以下修改網絡地址即可 <script type"text/javascript" language"javascript">//Setting ico for cnblogsvar linkObject document.createElement(link);linkObject.rel "shortcut icon";linkObject.href "icon的網絡地址";do…

maven settings.xml國內倉庫配置

<?xml version"1.0" encoding"UTF-8"?> <settings xmlns"http://maven.apache.org/SETTINGS/1.0.0" xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation"http://maven.apache.org/SETTINGS/1.…

智慧園區-樓宇建模技巧之【建樓篇】

一、國際慣例先上圖 二、有什么用&#xff1f;用什么搞的&#xff1f;花了多久&#xff1f; 用途 室內定位(會議室、停車位查找等)安防監控(直接定位到某個樓道的攝像頭拉取視頻流)各種傳感器數據三維可視化請問哪里可以買到呢(含笑半步癲2333) 我這里正好有一個。https://iot.…

android meta工具,android ota 升級包制作分析 (5 工具)

工具1 mkbootfsmkbootfs的源代碼在system/core/cpio中。??mkbootfs -f boot_filesystem_config.txt targetfiles/BOOT/RAMDISK | minigzip > ramdisk.img2 mkbootimgmkbootimg的源代碼在system/core/mkbootimg中。mkbootimg --kernel kernel --ramdisk ramdisk.img --outp…

asp.net core輸出中文亂碼的問題

原文:asp.net core輸出中文亂碼的問題 摘要 在學習asp.net core的時候&#xff0c;嘗試在控制臺&#xff0c;或者頁面上輸出中文&#xff0c;會出現亂碼的問題。 問題重現 新建控制臺和站點 public class Program{public static void Main(string[] args){ Console.W…

android oom工具,Android OOM-Heap,MAT工具檢測內存泄露

概述在android的開發中&#xff0c;要時刻主要內存的分配和垃圾回收&#xff0c;因為系統為每一個dalvik虛擬機分配的內存是有限的&#xff0c;在google的G1中&#xff0c;分配的最大堆大小只有16M&#xff0c;后來的機器一般都為24M&#xff0c;實在是少的可憐。這樣就需要我們…

windows 端微信多開

假設微信安裝目錄為 "E:\Program Files\WeChat\WeChat.exe" 打開記事本&#xff0c;復制一下命令&#xff0c;保存為 bat 文件 echo off start /d "E:\Program Files\WeChat\" WeChat.exe start /d "E:\Program Files\WeChat\" WeChat.exe exi…