Spark standalone 实践

2018-05-27  本文已影响0人  金刚_30bf
  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

上述配置的问题

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 , 为何没起作用呢?)

上一篇 下一篇

猜你喜欢

热点阅读