Apache Zeppelin-0.9.0安装配置Spark-2.3.3

什么是Apache Zeppelin

在这里插入图片描述

图1 Apache Zeppelin的功能
   直接上官网图,Apache Zeppelin是一个支持20+种语言的多功能后端,说白了就是一个支持多种语言的开发集成环境,如你写spark一般用linux的spark-shell或者spark-sql,你写python你可能用pycharm,你写flink你可能用flink-shell等,等等,现在好了,有一款可以集成这些所有语言的即时查询环境,你觉得棒不棒?配置好了,用起来确实很香,物极必反,包含的多,坑也多,所以耐心对待哈,主要功能如下:
  • 数据抽取(定时调度的慎用,建议用专业的ETL和调度工具)
  • 数据挖掘
  • 数据转换 (定时调度的慎用,建议用专业的ETL和调度工具)
  • 数据分析
  • 数据即时查询及可视化

  官网:http://zeppelin.apache.org/
  讲解版本:0.9.0
  下载地址:传送门

安装Zeppelin

下载及解压

  其实博主主要时用来写spark,spark-sql以及flink的,因为我忍那个黑框很久了,所以一般我就下载在安装了spark,flink及hdfs的节点上,以下操作以Linux为背景;

#切换到我的软件安装目录tools目录下
cd /data/tools/

#创建zeppelin,并进入
mkdir zeppelin
cd zeppelin

#下载apache zeppelin 0.9.0,没网的集群可以下载好上传上来也一样
wget https://mirror.bit.edu.cn/apache/zeppelin/zeppelin-0.9.0/zeppelin-0.9.0-bin-all.tgz

#解呀apache zeppelin tar包
tar -zxvf zeppelin-0.9.0-bin-all.tgz

#解压后该目录下会有folder zeppelin-0.9.0-bin-all
#设置一个软链,方便以后访问及版本升级,,配置环境变量及其它地方引用都用软链路径,以后版本升级只要切换软链即可
ln -sf /data/tools/zeppelin/zeppelin-0.9.0-bin-all current

配置zeppelin-site.xml

  zeppelin的配置文件包含在/data/tools/zeppelin/zeppelin-0.9.0-bin-all current/conf/下,先配置zeppelin-site.xml;

#不难发现zeppelin-site.xml没有,需要cp出来
cp zeppelin-site.xml.template zeppelin-site.xml

#修改zeppelin-site.xml
vim zeppelin-site.xml

#将以下属性做修改
   #zeppelin.server.addr改成该节点的ip或者hostname,因为你可能不在本机器访问zeppelin
<property>
  <name>zeppelin.server.addr</name>
  <value>10.250.19.28</value>
  <description>Server binding address</description>
</property>

  #默认的8080端口比较常用,改成一个不常用同的且不会和你集群冲突的
<property>
  <name>zeppelin.server.port</name>
  <value>18080</value>
  <description>Server port.</description>
</property>

#限制输出数据大小的byte单位,改大点,改到1G吧
<property>
  <name>zeppelin.interpreter.output.limit</name>
  <value>1024000000</value>
  <description>Output message from interpreter exceeding the limit will be truncated</description>
</property>




#wq! 保存退出编辑

配置zeppelin-env.sh

  zeppelin-env.sh主要交代一些你需要使用的语言即时查询的HOME路径,这里以配置Spark为例,前提,需要你集群的spark-shell,spark-sql,本身是没问题的,不然能成功才怪!
  这里采用spark yarn client模式,其它模式只要更换SPARK_SUBMIT_OPTIONS参数即可,参数规格可以参考官网Spark Interpreter for Apache Zeppelin或者国人整理的Zeppelin中文文档网;

#zeppelin-env.sh 也是默认不存在的,建议cp出来
cp zeppelin-env.sh.template zeppelin-env.sh

#vim zeppelin-env.sh,然后在最后面添加以下组件的home路径
#根据自己的组件路劲来填写,不要乱搞哈,坑死人不偿命!
#根据自己的组件路劲来填写,不要乱搞哈,坑死人不偿命!
#根据自己的组件路劲来填写,不要乱搞哈,坑死人不偿命!

export JAVA_HOME=/data/tools/java/jdk1.8.0_211
export SPARK_HOME=/data/tools/spark/current
export HADOOP_HOME=/data/tools/hadoop/current
export HADOOP_CONF_DIR=/data/tools/hadoop/current/etc/hadoop
export SPARK_SUBMIT_OPTIONS="--master yarn --deploy-mode client --executor-memory 8G --executor-cores 5 --num-executors 4 --queue etl"

  注意:1.在zeppelin上的每一种语言都有一个自己的Interpreter(你可以称呼它为解释器,解析器,理解就行),每种解释器的配置都不同,对于解释器的配置,可以写在zeppelin-env.sh,如上配置,也可以配置在等下启动的zeppelin网页上的Interpreter,如图2;点击然后切换到图3去配置相关属性;区别:写在zeppelin-env.sh,则全局生效;配置在网页的Interpreter。只有运行代码的时候根据你选择的Interpreter来选择配置,换句话说如果你有两个spark集群,两个spark集群版本还不一样,那你可以在web端配置Interpreter属性,你可以加两个spark的Interpreter出来,不要重名即可,然后代码运行的时候选择你想要的Interpreter;那我这里没有两个spark集群,我就直接写在zeppelin-env.sh,其它Interpreter也有这个原理,个人建议,如果没有特殊需求,最好配置在zeppelin-env.sh;坑少!

在这里插入图片描述

图2 Interpreter菜单栏

  注意:2.Interpreter 的spark模块,新加一个zeppelin.spark.maxResult=1000000设置导出的行数为100万吧,这个和之前zeppelin-site.xmlzeppelin.interpreter.output.limit属性相互呼应的,也就是说如果zeppelin.interpreter.output.limit太小,则会截断输出内容,同理,如果输出行数zeppelin.spark.maxResult太小,也会截断输出内容,只会输出这些行数前的;

在这里插入图片描述

图3 配置Interpreter的属性

  注意:3.如果zeppelin支持的编程语言的home folder被你设置了环境变量,则zeppelin是会默认使用环境变量的;如图4,因为我python用了环境变量;

在这里插入图片描述

图4 python运行效果

  而为什么我的Java根目录要重设呢,因为zeppelin-0.9.0有个需要Apache Zeppelin requires either Java 8 update 151 or newer,如下shell代码,什么意思呢,其实要求jdk 8,并且8里面的小版本也也要求,不能低于151,所以你看我的重新定义的路径是/data/tools/java/jdk1.8.0_211,是211小版本;注意哈,大坑来了,改了这里还不够,你要找到/data/tools/zeppelin/current/bin/common.sh,改掉shell的java根目录,具体代码如图5,请写成自己的满足zeppelin版本的java根目录,当然如果你卸载你jdk,重新装高版本,然后再配置成环境变量,也是没问题的,因为我的是再生产环境有这个瑕疵,我不敢改,怕殃及池鱼;

org.apache.zeppelin.interpreter.InterpreterException: java.io.IOException: Fail to launch interpreter process:
Apache Zeppelin requires either Java 8 update 151 or newer
  at org.apache.zeppelin.interpreter.remote.RemoteInterpreter.open(RemoteInterpreter.java:134)
  at org.apache.zeppelin.interpreter.remote.RemoteInterpreter.getFormType(RemoteInterpreter.java:298)
  at org.apache.zeppelin.notebook.Paragraph.jobRun(Paragraph.java:433)
  at org.apache.zeppelin.notebook.Paragraph.jobRun(Paragraph.java:75)
  at org.apache.zeppelin.scheduler.Job.run(Job.java:172)
  at org.apache.zeppelin.scheduler.AbstractScheduler.runJob(AbstractScheduler.java:130)
  at org.apache.zeppelin.scheduler.RemoteScheduler$JobRunner.run(RemoteScheduler.java:159)
  at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
  at java.util.concurrent.FutureTask.run(FutureTask.java:266)
  at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$201(ScheduledThreadPoolExecutor.java:180)
  at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:293)
  at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
  at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
  at java.lang.Thread.run(Thread.java:745)
Caused by: java.io.IOException: Fail to launch interpreter process:
Apache Zeppelin requires either Java 8 update 151 or newer

在这里插入图片描述

图5 重修改common.sh的java环境变量

  如果你不在乎权限,就可以启动Zeppelin了,启动命令如下;

# 切换到zeppelin根目录
cd /data/tools/zeppelin/current

# 启动
bin/zeppelin-daemon.sh start

# 停止
bin/zeppelin-daemon.sh stop

# 重启 本质是先stop再start,该命令不管zeppelin是否在运行都可以使用,不在运行会报 zeppelin is not running
bin/zeppelin-daemon.sh restart
# 出现以下字样,则说明ok,有问题则cd /data/tools/zeppelin/current/logs 查看异常原因
Zeppelin stop                                              [  OK  ]
Zeppelin start                                             [  OK  ]

  打开浏览器,输入在zeppelin-site.xml配置的网页端口10.250.19.28:18080,即可出现如图6界面
在这里插入图片描述

图6 zeppelin网页无权限界面

配置权限管理shiro.ini

  zeppelin-0.9.0不用其它操作,直接编辑shiro.ini文件;

官网参考文档:Apache Shiro authentication for Apache Zeppelin

# 切换到/data/tools/zeppelin/current/conf
cd /data/tools/zeppelin/current/conf/

# cp 出来shiro.ini
cp shiro.ini.template shiro.ini

#编辑shiro.ini
vim shiro.ini

# 把文件内的shiro.ini的admin打开
#等号前面的是user,等号后面的是密码。可以按你的意愿来修改,建议改改吧,不然只要懂zeppelin的就能猜到你的账号和密码,不好吧


[users]
# List of users with their password allowed to access Zeppelin.
# To use a different strategy (LDAP / Database / ...) check the shiro doc at http://shiro.apache.org/configuration.html#Configuration-INISections
# To enable admin user, uncomment the following line and set an appropriate password.
admin = password1, admin
user1 = password2, role1, role2
user2 = password3, role3
user3 = password4, role2

  权限解析:主要是shiro.ini内的如下数据/api/version表是查看api的version,这里的api其实就是呼应网页上右上角小倒立三角形展开的内容的权限,如图7,anon表示所有人都能看,即不需要权限;/api/cluster/address表示集群地址;authc表示需要用户名密码权限,就是你上面编辑的,roles[admin]表示需要admin角色才可以操作,/**代表所有操作,其它的自己以此类推;

[urls]
# This section is used for url-based security. For details see the shiro.ini documentation.
#
# You can secure interpreter, configuration and credential information by urls.
# Comment or uncomment the below urls that you want to hide:
# anon means the access is anonymous.
# authc means form based auth Security.
#
# IMPORTANT: Order matters: URL path expressions are evaluated against an incoming request
# in the order they are defined and the FIRST MATCH WINS.
#
# To allow anonymous access to all but the stated urls,
# uncomment the line second last line (/** = anon) and comment the last line (/** = authc)
#
/api/version = anon
/api/cluster/address = anon
# Allow all authenticated users to restart interpreters on a notebook page.
# Comment out the following line if you would like to authorize only admin users to restart interpreters.
/api/interpreter/setting/restart/** = authc
/api/interpreter/** = authc, roles[admin]
/api/notebook-repositories/** = authc, roles[admin]
/api/configurations/** = authc, roles[admin]
/api/credential/** = authc, roles[admin]
/api/admin/** = authc, roles[admin]
#/** = anon
/** = authc

在这里插入图片描述

图7 权限配置含义

  更多的权限配置请参考官网的权限页,还有其它类型的权限认证,这里就不一一解释了;

启动Zeppelin

  启动指令如下;

# 切换到zeppelin根目录
cd /data/tools/zeppelin/current

# 启动
bin/zeppelin-daemon.sh start

# 停止
bin/zeppelin-daemon.sh stop

# 重启 本质是先stop再start,该命令不管zeppelin是否在运行都可以使用,不在运行会报 zeppelin is not running
bin/zeppelin-daemon.sh restart
# 出现以下字样,则说明ok,有问题则cd /data/tools/zeppelin/current/logs 查看异常原因
Zeppelin stop                                              [  OK  ]
Zeppelin start                                             [  OK  ]

# jps一下守护进程,如下
jps
12956 ZeppelinServer




  配置好权限认证的zeppelin网页如下图8;之前的右上角anonymous任何人能登录变成了Login,点击Login弹出账号密码界面图9,根据你配置的账号密码输入后进入开始使用;
在这里插入图片描述

图8 权限认证后的zeppelin网页首页

在这里插入图片描述

图9 账号权限登录

  Apache Zeppelin-0.9.0安装配置Spark-2.3.3到此为止,下一篇讲述spark和sparksql及python在Apache Zeppelin的基本使用Apache Zeppelin支持Spark,python的小试牛刀

  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

╭⌒若隐_RowYet——大数据

谢谢小哥哥,小姐姐的巨款

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值