美文网首页
Spark standalone 实践

Spark standalone 实践

作者: 金刚_30bf | 来源:发表于2018-05-27 13:29 被阅读0次
  1. 配置 spark-env.sh
JAVA_HOME=/usr/java/jdk1.8.0_172
HADOOP_CONF_DIR=/usr/lib/hadoop/
SPARK_MASTER_HOST=node202.hmbank.com
SPARK_EXECUTOR_CORES=1
SPARK_EXECUTOR_MEMORY=1g
  1. 配置 slaves
  2. 配置 spark-default.sh
spark.master                     spark://node202.hmbank.com:7077
spark.eventLog.enabled           true
spark.eventLog.dir               hdfs://hmcluster/user/spark/eventLog
spark.serializer                 org.apache.spark.serializer.KryoSerializer
spark.driver.memory              1g

上述配置的问题

  • env中的配置参数 SPARK_WORKER_CORES 、SPARK_WORKER_MEMORY 指的是一个application可以使用的总共的资源, 默认是全部资源。 当未配置时, 启动pyspark 或spark-shell 会占用完所有的资源, 导致新的application无法分配资源从而无法执行任务。
  • spark.executor.cores 参数: 在yarn上默认是1个, 在其他模式默认是worker可用的所有的核,这时一个worker只会启动一个executor,并行度下降。若指定该参数后, 若worker上的资源(核和内存)满足多个executor时,会启动多个executor 。
  • standalone模式目前只支持FIFO调度 。 但是为了支持多用户并发访问,可以控制每个应用可使用的最大资源。默认情况下,它会认为一次只其一个应用,会获取所有的资源。 可以在SparkConf中指定spark.cores.max参数来限制 。 示例如下:
val conf = new SparkConf()
  .setMaster(...)
  .setAppName(...)
  .set("spark.cores.max", "10")
val sc = new SparkContext(conf)

另外,若应用程序没有设置spark.cores.max , 可以在spark-env.sh中设置master进程的参数来限制cores的数量:

export SPARK_MASTER_OPTS="-Dspark.deploy.defaultCores=<value>"

出现的问题

我的hdfs使用的是namenode ha , 整合spark 访问hdfs时总是报nameserviceid找不到:

scala> r1.count()
java.lang.IllegalArgumentException: java.net.UnknownHostException: hmcluster
  at org.apache.hadoop.security.SecurityUtil.buildTokenService(SecurityUtil.java:374)
  at org.apache.hadoop.hdfs.NameNodeProxies.createNonHAProxy(NameNodeProxies.java:310)
  at org.apache.hadoop.hdfs.NameNodeProxies.createProxy(NameNodeProxies.java:176)
  at org.apache.hadoop.hdfs.DFSClient.<init>(DFSClient.java:668)
  at org.apache.hadoop.hdfs.DFSClient.<init>(DFSClient.java:604)
  at org.apache.hadoop.hdfs.DistributedFileSystem.initialize(DistributedFileSystem.java:148)
  at org.apache.hadoop.fs.FileSystem.createFileSystem(FileSystem.java:2598)

后将core-site.xml 和 hdfs-site.xml 两个配置文件拷贝到 spark conf目录下就好了。
(我在spark-env.sh中配置了HADOOP_CONF_DIR , 为何没起作用呢?)

相关文章

网友评论

      本文标题:Spark standalone 实践

      本文链接:https://www.haomeiwen.com/subject/vaebjftx.html