原文链接:http://www.infocool.net/kb/Spark/201611/224780.html
livy安装测试
一、R安装
如果未安装R,可以先安装R,用于支持SparkR,如果yum源中没有R语言的安装包,可以从官网下载相应版本进行手动编译安装。
- 1
安装rJava
下载地址:
https://cran.r-project.org/web/packages/rJava/index.html
将下载好的软件包上传至/data/soft目录下
执行以下代码:
- 1
二、livy编译安装
1、安装说明
livy是一个提供restful风格,可以通过http方式访问spark,从而启动spark-submit或spark-shell来提交任务的框架。
安装运行livy需要以下软件环境:
可以联网的Centos环境用于maven下载相关jar包
mvn (from maven package or maven3 tarball)
java-1.7.0-openjdk (or Oracle Java7 jdk)
Python 2.6+
R 3.x
运行livy需要python的以下依赖库:
cloudpickle
requests
flake8
flaky
pytest
2、livy下载解压
1)、下载
或者使用该命令直接下载:
由于hue-3.11.0版本以后,将livy移出hue项目,独立成为一个项目,所以需独立下载。而hue-3.10.0版本之前,livy项目源码在/hue-3.10.0/apps/spark/java该目录下,如果使用hue-3.10.0版本或之前的版本直接到/hue-3.10.0/apps/spark/java该目录下编译就好。
2)、解压
将软件包移动至/home/hadoop/soft目录下,然后进行解压:
- 1
- 2
3、编译
- 1
- 2
注: export MAVEN_OPTS=”-Xmx2g -XX:ReservedCodeCacheSize=512m -XX:MaxPermSize=512M”,编译过程中需要大量的内存。如果maven设置的内存不足,将导致导内存溢出异常。
编译时,一定要增加-Dmaven.test.skip这句话,忽略Junit测试类的编译,否则,导致编译失败。主要因为部分Junit测试类存在问题,比如编译TestSparkClient过程中会去绑定localhost/192.157.208.178:0,而192.157.208.178属于美国的一个ip地址,导致绑定失败,无法进行后续编译。
编译过程中会下载大量的依赖jar包,中途可能因为网络原因,导致jar包下载失败,从而也会导致编译失败。出现该情况可以使用该命令进行重新编译:
- 1
最终看到所有模块都success,就表示成功了。
4、无法联网环境编译livy
先在可联网的linux环境下编译成功livy,然后将maven仓库中的jar包传输至无法联网的linux环境下,进行覆盖,执行编译命令前,先执行:
- 1
将mvn本地仓库的_remote.repositories文件删除,这样就可以阻止mvn联网去更新jar包的pom文件。然后执行编译命令:
- 1
当然在联网的linux环境下编译的livy包,上传至其他linux环境也是可以使用的。
5、配置livy
1)、更改livy-0.2.0目录名称:
- 1
- 2
2)、环境变量配置
- 1
添加如下内容:
- 1
- 2
由于livy启动需要知道Spark的安装路径以及hadoop配置文件的路径。
livy默认会从SPARK_HOME/conf下读取spark的配置文件,如果要个性化覆盖默认的spark配置文件,可以配置SPARK_CONF_DIR来额外指定相关配置。
当然也可以在LIVY_HOME/conf/livy-env.sh进行相关的配置,而无需更改/etc/profile文件
注:livy-0.2.0将对spark的配置直接使用了SPARK_HOME/conf中的配置,之前版本并不是。
由于HADOOP_CONF_DIR在搭建spark on yarn中已经添加,此处无需重复添加。
3)、spark on yarn-cluster启动模式配置
由于livy强烈推荐使用yarn-cluster模式进行配置spark,如果多用户操作的时候,可以减轻driver端的压力,防止过载,因此需在SPARK_HOME/conf配置spark-submit的默认启动方式为yarn-cluster模式:
- 1
添加内容如下:
- 1
- 2
spark所有配置如下:
4)、livy的spark黑名单配置
- 1
该文件列出的项表示自livy启动后,无法更改spark的启动模式和spark的相关配置。比如,如果不配置spark的启动模式,livy默认使用client模式启动spark,那么后续要更改为cluster启动模式,如果不注释掉spark.submit.deployMode该项,则无法启动spark。这边说的可能有点绕,后续会有测试例子证明,就容易明白了。
4)、日志目录配置
- 1
添加内容如下
- 1
6、使用pip安装python相关依赖库
1)、安装pip
可联网的环境可以使用pip安装python库。查看是否安装pip可以使用如下命令查看。
- 1
则会出现安装的pip版本,如下:
pip 8.1.2 from /usr/lib/python2.7/site-packages (python 2.7)
如未安装则执行以下命令进行安装:
- 1
- 2
先从网上下载get-pip.py文件,然后运行python get-pip.py便会自动下载相关python库进行安装。
2)、更改pip源
安装成功以后,如果使用默认的pip源,可能会有点慢,毕竟访问的是国外的网站,而且该源还被墙过,很不稳定。则可以修改为国内的pip源,豆瓣的就不错:
- 1
/etc目录下并不存在pip.cof文件,须手动添加,然后加入以下内容
- 1
- 2
- 3
保存退出即可。由于访问豆瓣源使用的是https协议,所以需要添加信任,如果不加trusted-host = pypi.douban.com这句话,则无法成功访问。
3)、使用pip安装python软件包
- 1
- 2
- 3
- 4
- 5
7、手动安装python依赖库
如果你的集群环境无法联网,很不幸,那么只能手动安装相关python包了。
1)、安装setuptools:
- 1
该工具包用于安装第三方python软件包,如果yum源有,那直接使用yum进行安装,如果没有,那只能下载相关的包进行安装了。
2)、安装requests
下载地址:https://pypi.python.org/pypi/requests#downloads
将下载好的软件包上传至bigdata1:/data/soft目录下,解压:
- 1
- 2
- 3
- 4
- 5
验证:
- 1
- 2
不报错便安装成功了。
3)、安装cloudpickle
下载地址:https://github.com/cloudpipe/cloudpickle/releases
将下载好的软件包上传至bigdata1:/data/soft目录下,解压:
- 1
- 2
- 3
- 4
- 5
验证:
- 1
- 2
不报错便安装成功了。
4)、安装pytest
下载地址:https://pypi.python.org/pypi/pytest/#downloads
将下载好的软件包上传至bigdata1:/data/soft目录下,解压:
- 1
- 2
- 3
- 4
- 5
安装过程中出错:
需要安装py。
下载地址:https://pypi.python.org/simple/py/
将下载好的软件包上传至bigdata1:/data/soft目录下,解压:
- 1
- 2
- 3
- 4
- 5
重新安装pytest。
验证:
- 1
- 2
不报错便安装成功了。
5)、安装flaky
下载地址:https://github.com/box/flaky/releases
将下载好的软件包上传至bigdata1:/data/soft目录下,解压:
- 1
- 2
- 3
- 4
- 5
验证:
- 1
- 2
不报错便安装成功了。
6)、安装flake8
去yum源查询是否具有该软件包。
- 1
- 2
验证:
- 1
- 2
不报错便安装成功了。
8、livy测试
1)、启动livy
- 1
2)、测试livy之spark-shell
参考网址:http://gethue.com/how-to-use-the-livy-spark-rest-job-server-for-interactive-spark-2-2/
- 查看当前存在的会话
- 1
返回:{“from”:0,”total”:0,”sessions”:[]}
表示当前并没有会话存在。
- 创建pyspark会话
- 1
返回:{“id”:0,”state”:”starting”,”kind”:”pyspark”,”log”:[]}
表明该会话已经启动,并生成会话id为0,之后便可以通过该会话提交我们的任务。
- 查看当前会话状态
- 1
返回:
state为idle表示该会话存活,已经准备就绪,可以向该会话提交任务了。| python -m json.tool这是管道命令,把返回的结果格式化显示。
- 提交任务
- 1
返回:{“id”:0,”state”:”running”,”output”:null}
表示该任务正在运行中,并生成了一个statement,id为0,我们便可以查看该statement的运行状态及结果。
- 查看任务结果
- 1
如果返回:
则表示任务成功完成。
如果返回:
则表示任务失败,主要原因是由于json4s版本兼容问题导致的,如果spark在编译前中未做如下修改将会出现以上错误:
修改:$SPARK_HOME目录下的pom.xml文件
- 1
- 2
将该jar包的版本更改为3.2.10便不会报该异常。
- 继续提交任务
执行:
- 1
- 2
返回:{“id”:1,”state”:”running”,”output”:null}
为0的session中创建新的statements,id为1
执行:
- 1
返回:{“id”:2,”state”:”running”,”output”:null}
创建新的statements,为2,并执行a+1操作
执行:
- 1
返回:{“id”:2,”state”:”available”,”output”:{“status”:”ok”,”execution_count”:2,”data”:{“text/plain”:”11”}}}
查询session为0,statement为2的结果
- 删除会话
执行:
- 1
返回:{“msg”:”deleted”}
- 创建会话,并携带spark配置
执行:
- 1
返回:{“id”:3,”owner”:null,”proxyUser”:null,”state”:”starting”,”kind”:”pyspark”,”log”:[]}
3)、测试livy-batch之spark submit jar
- 查询当前存在的会话
- 1
- 创建livy-batch会话
创建一个会话用于提交jar包,由于集群部署在spark on yarn上,所以需要将jar包提交到hdfs集群中,放置在根目录下,并且通过file指定hdfs中jar包的在hdfs中的路径,此时会返回一个id,这样我们可以根据id进行查询日志和运行结果:
执行:
- 1
返回:{“id”:0,”state”:”running”,”log”:[]}
- 查看任务执行日志
执行:
- 1
如果返回
主要因为在$SPARK_HOME/conf并未配置spark-submit的默认启动方式为yarn-cluster模式,livy-batch默认采用client模式启动spark-submit,而当spark-submit采用yarn-client模式提交,是无法读取hdfs上的内容,所以需要更改spark-submit启动模式为yarn-cluster,才能从hdfs中读取jar包。
解决方案:
方案一:
可执行:
- 1
如果返回:
“Blacklisted configuration values in session config: spark.master, spark.submit.deployMode”
注:这个须配置livy的spark-blacklist.conf文件,该文件中定义的属性表示客户端提交任务至spark不可修改spark的启动模式,按livy默认的启动模式client启动。如果我们提交jar包须使用cluster,则须修改该文件的内容,放开权限。
- 1
修改如下,将这两行使用#注释掉:
- 1
- 2
注释掉,保存退出,重启livy。
执行:
- 1
返回:
{“id”:3,”state”:”running”,”log”:[]}
方案二:
修改spark-submit的默认启动模式为yarn-cluster具体的修改上文已经提及,及修改$SPARK_HOME/conf/spark-defaults.conf文件的启动模式为yarn-cluster。
注:
推荐采用方案二修改spark-submit启动模式,当hue与livy、spark整合时就是采用方案二来指定spark-submit的集群模式。
- 查看任务结果
- 1
看到success就表示成功了。
4)、测试livy-batch之 spark submit python
pi.py脚本所在位置
- 1
将脚本上传至hdfs中
- 1
- 提交任务
- 1
返回:{“id”:5,”state”:”running”,”log”:[]}
- 查看日志
- 1
- 查看结果
- 1
最终返回:
看到success就表示成功了。
至此livy整合spark就成功了,下一章将整合hue livy spark
本文详细介绍Livy的安装步骤及如何与Spark进行整合。包括R语言安装、livy编译安装过程、配置方法以及Python依赖库安装等内容。此外,还提供了详细的livy测试案例,涵盖spark-shell和spark-submit的各种应用场景。
565

被折叠的 条评论
为什么被折叠?



