先看解決方案,再看嘮嗑,嘮嗑可以忽略。
解決方案:
使用start yarn.sh啟動yarn就可以了。
嘮嗑:
今天學習Spark基於Yarn部署。然后總以為Yarn是讓Spark啟動的,提交程序的時候Yarn就會啟動~!於是乎我就只開啟了Spark程序,沒開啟Yarn,然后執行提交
./spark-submit --class org.apache.spark.examples.JavaSparkPi \ --master yarn \ --deploy-mode cluster \ --driver-memory 4g \ --executor-memory 2g \ --executor-cores 1 \ --queue thequeue \ /opt/spark/spark-2.4.5-bin-hadoop2.7/examples/jars/spark-examples*.jar \ 10
報錯了:
ava.net.ConnectException: Call From tuge1/192.168.40.100 to tuge1:8032 failed on connection exception: java.net.ConnectException: Connection refused; For more details see: http://wiki.apache.org/hadoop/ConnectionRefused at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62) at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) at java.lang.reflect.Constructor.newInstance(Constructor.java:423) at org.apache.hadoop.net.NetUtils.wrapWithMessage(NetUtils.java:792) at org.apache.hadoop.net.NetUtils.wrapException(NetUtils.java:732) at org.apache.hadoop.ipc.Client.call(Client.java:1479) at org.apache.hadoop.ipc.Client.call(Client.java:1412) at org.apache.hadoop.ipc.ProtobufRpcEngine$Invoker.invoke(ProtobufRpcEngine.java:229) at com.sun.proxy.$Proxy13.getClusterMetrics(Unknown Source) at org.apache.hadoop.yarn.api.impl.pb.client.ApplicationClientProtocolPBClientImpl.getClusterMetrics(ApplicationClientProtocolPBClientImpl.java:206)
從上面日志可以看出訪問不了8032端口造成的,但是8032端口是 What,左思右想想不到,然后就嘗試重啟虛擬機等一些無用操作。最后又看了看官方文檔,看到一句話說會把 配置的日志寫入HDFS,然后想到要開啟HDFS,於是開啟了。開啟后重新執行還是報同樣錯誤,納了悶了。到底啥端口,為啥要訪問這個端口。於是最后只能問了問群里,有個熱心朋友回答了,說是Spark端口,然后這個時候我還以為Spark是靠其它應用啟動的 ,后來繼續問,才想起來了spark是單獨啟動的。最后回顧了下Spark是單獨啟動的,MapReduce是集成的。以后遇到問題,涉及到哪方面要及時翻看之前內容,及時自我質疑,方可養成獨立解決問題的能力~