Spark环境部署
Spark运行模式
* local:本地运行,在开发代码的时候,我们使用该模式进行测试是非常方便的
* standalone:Hadoop部署多个节点的,同理Spark可以部署多个节点 用的不多
* YARN:将Spark作业提交到Hadoop(YARN)集群中运行,Spark仅仅只是一个客户端而已
* Mesos
* K8S:2.3版本才正式稍微稳定 是未来比较好的一个方向
* 补充:运行模式和代码没有任何关系,同一份代码可以不做修改运行在不同的运行模式下
IDEA+Maven来构建我们的Spark应用
mvn archetype:generate -DarchetypeGroupId=net.alchim31.maven \
-DarchetypeArtifactId=scala-archetype-simple \
-DremoteRepositories=http://scala-tools.org/repo-releases \
-DarchetypeVersion=1.5 \
-DgroupId=com.imooc.bigdata \
-DartifactId=sparksql-train \
-Dversion=1.0
- 打开IDEA,把这个项目中的pom.xml打开即可
<properties>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
<encoding>UTF-8</encoding>
<scala.tools.version>2.11</scala.tools.version>
<scala.version>2.11.8</scala.version>
<spark.version>2.4.3</spark.version>
<hadoop.version>2.6.0-cdh5.15.1</hadoop.version>
</properties>
添加CDH的仓库
<repositories>
<repository>
<id>cloudera</id>
<url>https://repository.cloudera.com/artifactory/cloudera-repos</url>
</repository>
</repositories>
添加Spark SQL和Hadoop Client的依赖
<dependency>
<groupId>org.apache.spark</groupId>
<artifactId>spark-sql_2.11</artifactId>
<version>${spark.version}</version>
</dependency>
<dependency>
<groupId>org.apache.hadoop</groupId>
<artifactId>hadoop-client</artifactId>
<version>${hadoop.version}</version>
</dependency>
使用local模式运行spark-shell
./spark-shell --master local
打包我们的应用程序,让其运行在local模式下
编译 submit
cd /home/hadoop/app/spark-2.4.3-bin-2.6.0-cdh5.15.1/bin
./spark-submit \
--class com.imooc.bigdata.chapter02.SparkWordCountAppV2 \
--master local \
--name SparkWordCountAppV2 \
/home/hadoop/lib/sparksql-train-1.0.jar \
hdfs://hadoop000:8020/pk/wc.data hdfs://hadoop000:8020/pk/out
* yarn
./spark-submit \
--class com.imooc.bigdata.chapter02.SparkWordCountAppV2 \
--master yarn \
--name SparkWordCountAppV2 \
/home/hadoop/lib/sparksql-train-1.0.jar \
hdfs://hadoop000:8020/pk/wc.data hdfs://hadoop000:8020/pk/out
* 要将Spark应用程序运行在YARN上,一定要配置HADOOP_CONF_DIR或者YARN_CONF_DIR指向$HADOOP_HOME/etc/conf
-
Standalone
- 多个机器,那么你每个机器都需要部署spark(不推荐)
-
相关配置:
$SPARK_HOME/conf/slaves
hadoop000
$SPARK_HOME/conf/spark-env.sh
SPARK_MASTER_HOST=hadoop000
启动Spark集群
$SPARK_HOME/sbin/start-all.sh
jps
./spark-submit \
--class com.imooc.bigdata.chapter02.SparkWordCountAppV2 \
--master spark://hadoop000:7077 \
--name SparkWordCountAppV2 \
/home/hadoop/lib/sparksql-train-1.0.jar \
hdfs://hadoop000:8020/pk/wc.data hdfs://hadoop000:8020/pk/out2
不管什么运行模式,代码不用改变,只需要在spark-submit脚本提交时 通过–master xxx 来设置你的运行模式即可
|