黑猴子的家:Hue 与 Spark 集成 +livy
1、先决条件
安装hue、hadoop
2、spark on yarn 安装
(1)环境变量
##JAVA_HOME
export JAVA_HOME=/opt/module/jdk1.8.0_144
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export PATH=$PATH:$JAVA_HOME/bin
##SCALA_HOME
export SCALA_HOME=/opt/module/scala-2.11.8
export PATH=$PATH:$SCALA_HOME/bin
##HADOOP_HOME
export HADOOP_HOME=/opt/module/hadoop-2.8.2
export PATH=$PATH:$HADOOP_HOME/bin
export PATH=$PATH:$HADOOP_HOME/sbin
##SPARK_HOME
export SPARK_HOME=/opt/module/spark
export PATH=$PATH:$SPARK_HOME/bin
export PATH=$PATH:$SPARK_HOME/sbin
(2) 编辑 spark-env.sh
[victor@node1 spark]$ vim conf/spark-env.sh
HADOOP_CONF_DIR=/opt/module/hadoop-2.8.2/etc/hadoop
YARN_CONF_DIR=/opt/module/hadoop-2.8.2/etc/hadoop
#服务器域名
SPARK_LOCAL_IP=hadoop102
#master 地址
SPARK_MASTER_HOST=hadoop102
#master 端口
SPARK_MASTER_PORT=7077
#spark ui 端口
SPARK_MASTER_WEBUI_PORT=8080
<!-- 尖叫提示:让Spark能够发现Hadoop配置文件,,不分发,
在yarn模式中spark只是一个客户端,只需要部署一台机器,可以删除另外两个节点
master 不用注释掉,因为不是HA高可用,有没有都行-->
(3) 配置spark编辑spark-defaults.conf
spark 依赖的jar包
[victor@node1 spark]$ vim conf/spark-defaults.conf
spark.yarn.jars=hdfs://hadoop102:9000/user/sparkJars/jars/*
3、hdfs://node7:9010/user/sparkJars/jars/*该路径的由来
(1) 找到spark程序目录的jars目录,如下图
image(2)将该路径的jars包上传到hdfs的目录 (本例子中的hdfs路径是:/user/sparkJars/jars)
注:如果不配置该路径,那么每次提交spark 程序时就会上传jars包,这样会影响提交程序的效率,同时会占用hdfs的磁盘空间。
4、测试部署
使用spark-shell打开scala客户端。
[victor@node1 spark]$ bin/spark-shell --master yarn --deploy-mode client
如果yarn 后台上面出现下图的记录,则表示部署成功。
5、安装livy
(1) 下载livy 安装包
下载地址
http://livy.incubator.apache.org/download/
(2) 设置环境变量
[root@node1 spark]# vim /etc/profile
#spark程序目录
export SPARK_HOME=/opt/module/spark
#hadoop 配置目录
export HADOOP_CONF_DIR=/opt/module/hadoop/etc/hadoop/
[root@node1 spark]# source /etc/profile
(3) 解压zip包
[victor@node1 software]$ unzip livy-0.5.0-incubating-bin.zip
[victor@node1 software]$ mv livy-0.5.0-incubating-bin.zip livy-0.5.0
(4) 配置livy
[victor@node1 livy]$ vim conf/livy.conf
#livy服务端口
livy.server.port = 8998
#spark程序部署使用yarn集群
livy.spark.master = yarn
#spark 程序使用客户端模式
livy.spark.deploy-mode =client
6、配置Hue
修改hue.ini配置
文件位置:/opt/module/cdh/hue-3.7.0-cdh5.3.6/desktop/conf/hue.ini
找到[[spark] ]标签,涉及修改如下
[root@node1 conf]$ vim hue.ini
[spark]
# livy 服务器域名
livy_server_host=hadoop102
# livy 服务器端口
## livy_server_port=8998
# Configure Livy to start in local 'process' mode, or 'yarn' workers.
livy_server_session_kind=yarn
7、验证配置是否正确
登录hue后台,打开scala编辑页,执行以下scala代码
var counter = 0
val data = Array(1, 2, 3, 4, 5)
var rdd = sc.parallelize(data)
// Wrong: Don't do this!!
rdd.map(x=>x+1).collect()
出现如下结果,则证明集成成功
8、可能出现的问题
- 在执行spark on yarn部署阶段,执行“spark-shell --master yarn --deploy-mode client” 命令,出现异常:spark on yarn Another instance of Derby may have already booted the database
则执行ps -ef |grep spark-shell ,找到进程号,执行 命令:“kill -9 进程号”,杀死spark-shell进程,再次执行“spark-shell --master yarn --deploy-mode client” 就解决了。
2.再执行spark on yarn部署阶段,执行“spark-shell --master yarn --deploy-mode client” 命令,出现:Spark on yarn Container beyond virtual memory limits
解决方法:修改hadoop 的yarn-site.xml ,新增如下配置
<property>
<name>yarn.nodemanager.vmem-check-enabled</name>
<value>false</value>
</property>