Spark学习2:Spark 配置以及repl运行和IDE运行

Spark 运行

本文针对Standalone模式下的Spark


Spark配置

安装Spark之后,首先保证Spark的配置项目正确。Spark的配置文件存储在$Spark_HOME/conf/目录下

spark-env.sh.template

slaves

spark-defaults.conf.template


spark-env.sh.template

#!/usr/bin/env bash

# This file is sourced when running various Spark programs.
# Copy it as spark-env.sh and edit that to configure Spark for your site.

# Options read when launching programs locally with 
# ./bin/run-example or ./bin/spark-submit
# - HADOOP_CONF_DIR, to point Spark towards Hadoop configuration files
# - SPARK_LOCAL_IP, to set the IP address Spark binds to on this node
# - SPARK_PUBLIC_DNS, to set the public dns name of the driver program
# - SPARK_CLASSPATH, default classpath entries to append

# Options read by executors and drivers running inside the cluster
# - SPARK_LOCAL_IP, to set the IP address Spark binds to on this node
# - SPARK_PUBLIC_DNS, to set the public DNS name of the driver program
# - SPARK_CLASSPATH, default classpath entries to append
# - SPARK_LOCAL_DIRS, storage directories to use on this node for shuffle and RDD data
# - MESOS_NATIVE_LIBRARY, to point to your libmesos.so if you use Mesos

# Options read in YARN client mode
# - HADOOP_CONF_DIR, to point Spark towards Hadoop configuration files
# - SPARK_EXECUTOR_INSTANCES, Number of workers to start (Default: 2)
# - SPARK_EXECUTOR_CORES, Number of cores for the workers (Default: 1).
# - SPARK_EXECUTOR_MEMORY, Memory per Worker (e.g. 1000M, 2G) (Default: 1G)
# - SPARK_DRIVER_MEMORY, Memory for Master (e.g. 1000M, 2G) (Default: 512 Mb)
# - SPARK_YARN_APP_NAME, The name of your application (Default: Spark)
# - SPARK_YARN_QUEUE, The hadoop queue to use for allocation requests (Default: ‘default’)
# - SPARK_YARN_DIST_FILES, Comma separated list of files to be distributed with the job.
# - SPARK_YARN_DIST_ARCHIVES, Comma separated list of archives to be distributed with the job.

# Options for the daemons used in the standalone deploy mode:
# - SPARK_MASTER_IP, to bind the master to a different IP address or hostname
# - SPARK_MASTER_PORT / SPARK_MASTER_WEBUI_PORT, to use non-default ports for the master
# - SPARK_MASTER_OPTS, to set config properties only for the master (e.g. "-Dx=y")
# - SPARK_WORKER_CORES, to set the number of cores to use on this machine
# - SPARK_WORKER_MEMORY, to set how much total memory workers have to give executors (e.g. 1000m, 2g)
# - SPARK_WORKER_PORT / SPARK_WORKER_WEBUI_PORT, to use non-default ports for the worker
# - SPARK_WORKER_INSTANCES, to set the number of worker processes per node
# - SPARK_WORKER_DIR, to set the working directory of worker processes
# - SPARK_WORKER_OPTS, to set config properties only for the worker (e.g. "-Dx=y")
# - SPARK_HISTORY_OPTS, to set config properties only for the history server (e.g. "-Dx=y")
# - SPARK_DAEMON_JAVA_OPTS, to set config properties for all daemons (e.g. "-Dx=y")
# - SPARK_PUBLIC_DNS, to set the public dns name of the master or workers

按照注释的提示,把上面的template文件拷贝重命名,去掉template后缀,并修改内容如下

spark-env.sh

export JAVA_HOME=/xxxxxxx
export SPARK_MASTER_IP=masterip or hostname
export SPARK_WORKER_CORE=1
export SPARK_WORKER_INSTANCE=1

export SPARK_WORKER_MEMORY=512M #每个worker最多可以使用多少内存
export SPARK_MASTER_PORT=8888

export SPARK_JAVA_OPTS="-verbose:gc -XX:PrintGCDetails -XX:+PrintGCTimesStamps -XX:+UseCompressedOops"


这里的最后一项SPARK_JAVA_OPTS,在新版本中有修改,不需要增加最后一项


slaves

# A Spark Worker will be started on each of the machines listed below.
localhost


这里填写各个slave的ip地址或者hostname


启动Spark


在Spark运行之前,首先需要让Spark集群启动,如果需要用到hadoop的HDFS的话,也需要把HDFS启动起来。

启动master

./sbin/start-master.sh
注册worker,同一台机器可以注册若干个worker

./bin/spark-class org.apache.spark.deploy.worker.Worker spark://masterip:7077 &


检查Spark的运行情况

查看master进程

ps -ef | grep -i spark
或者

jps

或者打开页面查看

http://masterip:8080/


其他相关命令

 在SPARK_HOME/sbin目录:

  • sbin/start-master.sh-在机器上执行脚本,启动 master .
  • sbin/start-slaves.sh- 启动conf/slaves中指定的每一个slave .
  • sbin/start-all.sh- 同时启动master 以及 上面所说文件中指定的slave
  • sbin/stop-master.sh- 停止通过bin/start-master.sh脚本启动的master
  • sbin/stop-slaves.sh- 停止通过bin/start-slaves.sh启动的slave .
  • sbin/stop-all.sh- 停止上述的两种启动脚本启动的master和slave

DFS

启动DFS就可以了,不需要启动整个hadoop

./start-dfs.sh



REPL 运行

$Spark_HOME/bin/MASTER=local[4] ADD_JARS code.jar ./spark-shell
#MASTER=spark://host:port
#export SPARK_MEM=xxg,指的是这个application在每个node上可以使用的内存


注意

在最新版本1.1.0中SparkContext.scala中增加了下面的内容

  private def warnSparkMem(value: String): String = {
    logWarning("Using SPARK_MEM to set amount of memory to use per executor process is " +
      "deprecated, please use spark.executor.memory instead.")
    value
  }


  private[spark] val executorMemory = conf.getOption("spark.executor.memory")
    .orElse(Option(System.getenv("SPARK_EXECUTOR_MEMORY")))
    .orElse(Option(System.getenv("SPARK_MEM")).map(warnSparkMem))
    .map(Utils.memoryStringToMb)
    .getOrElse(512)

可以看出Spark最新的机制,建议使用新的spark.executor.memory取代SPARK_EXECUTOR_MEMORY,并且系统默认支持512M内存,其中Utils.memoryStringToMb方法可以把G转换成M。



或者直接运行

$./spark-shell


如果以standalone方式启动的话,最好把master的内容写全。可以把export SPARK_MEM=xxg写入到./spark-shell中,方便起见。如果只是启动spark shell的话ADD_JARS可以不写

IDE运行
这里的IDE运行指的是,在IDE中编译打包好自己的程序后,然后以普通java包的形式运行。与Spark shell相对,就是说要自己声称自己新的Spark context。

比如在命令行下执行如下命令

java -jar ./chinahadoop.jar ./chinahadoop.jar hdfs://server1:9000/labs/a.txt hdfs://server1:9000/labs/output/
上面的jar包要指定main函数。

具体项目参考下面的github链接
https://github.com/suxingfate/spark101/blob/master/src/main/scala/cn/chinahadoop/spark/Analysis.scala
以及pom中的配置依赖和打包方式
https://github.com/suxingfate/spark101/blob/master/pom.xml


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值