1: Spark解释器:
Zeppelin 的日常使用中,使用最频繁的或者说目前最重要的解释器非Spark了,下面就说一下Spark解释器的配置。
Apache Spark是一种快速和通用的集群计算系统。它提供Java,Scala,Python和R中的高级API,以及支持一般执行图的优化引擎。Zeppelin支持Apache Spark,Spark解释器组由5个解释器组成。上图表格便是五个解释器的简单描述了。
(1)%spark:注意%spark在初始化时和spark-shell一样,已经在内部创建了SparkContex对象sc了,在使用的时候不必重新创建!
(2) %spark.pyspark 和%spark.r看名字就可以知道,主要是为了支持python和R语言。
(3)%spark.sql:在我们用到spark的sql的时候要用到这个解释器,添加使用是会自动创建sqlcontext对象
(4:%spark .dep :可以动态的添加下载依赖。使用必须在其他解释器之前使用;z是zeppelin初始化时内部创建的ZeppelinContext对象,用来调用zeppelin内部自己的函数和一些工具类,它可以联系scala和python两种环境,如果中间需要两个环境的
对象,可以通过ZeppelinContext进行转换等功能
下面是官网上几个dep的列子,可以了解一下。
%spark.dep
z.reset() // 清除以前添加的 artifact 和 repository
// 添加 maven repository
z.addRepo("RepoName").url("RepoURL")
// 添加 maven snapshot repository
z.addRepo("RepoName").url("RepoURL").snapshot()
// 添加 private maven repository身份验证
z.addRepo("RepoName").url("RepoURL").username("username").password("password")
// 从文件系统中添加 artifact
z.load("/path/to.jar")
// 从maven repository添加没有依赖的artifact
z.load("groupId:artifactId:version").excludeAll()
// add artifact recursively
z.load("groupId:artifactId:version")
// add artifact recursively except comma separated GroupID:ArtifactId list
z.load("groupId:artifactId:version").exclude("groupId:artifactId,groupId:artifactId, ...")
// exclude with pattern
z.load("groupId:artifactId:version").exclude(*)
z.load("groupId:artifactId:version").exclude("groupId:artifactId:*")
z.load("groupId:artifactId:version").exclude("groupId:*")
// local() skips adding artifact to spark clusters (skipping sc.addJar())
z.load("groupId:artifactId:version").local()
2: Spark 解释器的配置:
在我们下载的spark目录下,有个conf目录主要是对zeppelin进行各种配置的,在启动一个zeppelin执行任务时,也是从这个目录下读取其配置属性。下面我们主要说一下spark的配置属性,在 你的zeppelin目录下的conf/下,你首先需要将zeppelin-env.sh.template 这个示例文件cp成zeppelin-env.sh正式文件,然后在这里面进行我们随心所欲的修改配置参数,包括spark的属性也都可以在这里面进行配置。下面是spark的一些常用属性
Property | Default | Description |
---|---|---|
args | Spark commandline args | |
master | local[*] | Spark master uri. 例如:spark://masterhost:7077 |
spark.app.name | Zeppelin | Spark应用的名称。 |
spark.cores.max | 要使用的核心总数。 空值时使用所有可用的核心 | |
spark.executor.memory | 1g | 每个worker实例的执行程序内存。 ex)512m,32g |
zeppelin.dep.additionalRemoteRepository | spark-packages, http://dl.bintray.com/spark-packages/maven, false; | A list of id,remote-repository-URL,is-snapshot; for each remote repository. 每个远程库的list表 |
zeppelin.dep.localrepo | local-repo | 依赖加载器的本地存储库 |
zeppelin.pyspark.python | python | Python命令来运行pyspark |
zeppelin.spark.concurrentSQL | false | Execute multiple SQL concurrently if set true 如果设置为true,则同时执行多个SQL。. |
zeppelin.spark.maxResult | 1000 | Max number of Spark SQL result to display 要显示的Spark SQL结果的最大数量。. |
zeppelin.spark.printREPLOutput | true | Print REPL output |
zeppelin.spark.useHiveContext | true | Use HiveContext instead of SQLContext if it is true 如果设置为true,使用HiveContext而不是SQLContext。. |
zeppelin.spark.importImplicit | true | Import implicits, UDF collection, and sql if set true |
下面就是正经的用到spark解释器的关键设置项了。
Step1: 设置SPARK_HOME(必设)
export SPARK_HOME=/usr/lib/spark
Step2:有选择的设置,但是推荐还是都设置吧
# set hadoop conf dir
export HADOOP_CONF_DIR=/usr/lib/hadoop
# set options to pass spark-submit command
export SPARK_SUBMIT_OPTIONS="
--packages com.databricks:spark-csv_2.10:1.2.0 --jars /path/mylib1.jar,/path/mylib2.jar --files /path/mylib1.py,/path/mylib2.zip,/path/mylib3.egg
"
//你可可以在里面设置你spark submit启动时的参数,比如“--master yarn-client --num executors 10”
# extra classpath. e.g. set classpath for hive-site.xml
export ZEPPELIN_INTP_CLASSPATH_OVERRIDES=/etc/hive/conf
Step3: 设置master,这个决定你的任务是提交到哪里去具体执行,和spark submit --master local【4】 一个道理
export MASTER=yarn-client //将任务提交到yarn上
下面都是可选择的,设置具体根据你自己的需要和你集群实际情况选择
- local[*] //本地模式
- spark://master:7077 //spark standalone模式
- yarn-client //yarn模式
- mesos://host:5050 //mesos cluster模式