什么是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 newerat 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的小试牛刀;

Apache Zeppelin-0.9.0安装配置Spark-2.3.3相关推荐

  1. WSL 2.0+LAMP+WordPress 安装配置

    长流程WSL2.0+LAMP+WordPress 安装配置 不少小网站跑的WordPress,网上共享空间或者VPS又是Linux系统,所以自己在Windows上搭个仿真的坏境当练手十分好玩.笔者大感 ...

  2. mysql8.0.17压缩包安装教程_mysql 8.0.16 压缩包安装配置方法图文教程

    本文为大家分享了mysql 8.0.16 压缩包安装配置方法,供大家参考,具体内容如下 运行环境:windows 10 x64 1.下载zip安装包: mysql8.0 for windows zip ...

  3. 新版mysql的下载教程_Mysql最新版8.0.21下载安装配置教程详解

    一.下载 1.下载安装包 mysql下载路径:https://dev.mysql.com/downloads/file/?id=496745 2.解压压缩包 解压到安装的目录: 3.在此目录下新建my ...

  4. mysql 8.0.24版本安装配置方法图文教程

    文章来源: 学习通http://www.bdgxy.com/ 普学网http://www.boxinghulanban.cn/ 智学网http://www.jaxp.net/ 本文记录了mysql 8 ...

  5. mysql 8.0.28版本安装配置方法图文教程

    mysql 8.0.28版本安装配置方法图文教程 从 Mysql 官网下载 mysql 下载完成后直接双击进行安装,打开后的页面如下所示: 选择自定义custom,接着下一步 将MySQL Serve ...

  6. 最新版spark1.1.0集群安装配置

    和分布式文件系统和NoSQL数据库相比而言,spark集群的安装配置还算是比较简单的: 很多教程提到要安装java和scala,但我发现spark最新版本是包含scala的,JRE采用linux内嵌的 ...

  7. hadoop2.2.0 集群安装配置

    本集群由6台虚拟机组成,全部安装centos6.4的32位系统. 一.前期工作 1.修改Linux主机名 2.修改IP 3.修改主机名和IP的映射关系 4.关闭防火墙 5.ssh免登陆 6.安装JDK ...

  8. win8mysql安装教程zip_mysql 8.0.18.zip安装配置方法图文教程(windows 64位)

    关于卸载以前安装版的数据库,大家可以参考一下这篇文章. 卸载前记住一定要记得复制保留以前的数据,安装版的数据是在 mysql5.7所有安装版本卸载教程,建议:大家卸载完一定要重启一下. 目录 1.先去 ...

  9. Android Studio 1.0 苹果电脑安装配置

    前言 近日Google终于不负众望,发布了期待已久的Android Studio 1.0正式版.小编自己是Android开发者,之前使用过Eclipse,也试用过Android Studio 0.x版 ...

  10. OpenCV4.0+VS2017完整安装配置过程(详细!)

    刚步入研究生生活,老师要求安装OpenCV+VS,所以昨天捣鼓了下,成功''吃鸡''.所以今天写下昨天安装的过程,也便自己对此印象更加深刻. 一.下载安装VS2017 我安装的版本是目前最新的Visu ...

最新文章

  1. android将拦截短信通过邮箱发送,网易邮箱Android客户端推出 加速布局移动互联网...
  2. PP模块: 最简单的混合生产方式
  3. ESP32cam蓝牙模块与arduino uno通信实验
  4. Form表单中的元素 控件集
  5. mysql周报内容范文_Mysql各种表格查询含实例,日报,周报,月报,时间差自动计算...
  6. jzoj3348,bzoj3258-秘密任务【最短路,网络流最小割】
  7. 【贪心】【AOJ-02】Home Work
  8. 滴滴回应司机冲撞路人:将积极配合警方调查
  9. bilibili缓存文件在哪里_Android——bilibili缓存视频合并教程[2.1]
  10. 杨强教授团队权威专著《联邦学习》问世,展现数据孤岛和数据保护难题破解之法
  11. ubuntu18.04设置开机自启动的脚本
  12. 简单易懂的Android ROM定制与修改教程
  13. mysql5.7如何打开,mysql57怎么打开
  14. Atitit 文件存储标准化api 总结 目录 1. 操作系统,进行操作 1 1.1. FileUtils类的应用 1 1.2. 各大api 比较 2 2. Java。Io用apache的commo
  15. 华为轮值董事长郭平:美国在5G方面已落后
  16. eplan2.7在win10安装教程
  17. 3dmax局部渲染变黑原因及解决方法
  18. ESPRIT 2019初学到走心机编程视频教程
  19. 怎么给图片添加水印?教你一键添加水印
  20. 模拟电子电路(1)——概论

热门文章

  1. java assetmanager_Android学习--Assets资源文件读取及AssetManager介绍
  2. Python Console报错:Cannot start process, the working directory does not exist
  3. 关于NodeJs的npm、nrm、nvm
  4. 扫描识别系统能干些什么?
  5. 18关不了机 ubuntu_Ubuntu关机卡住无法关机如何解决?
  6. 天气预报接口,在自己的网页上加入天气预报吧
  7. React的ajax请求(简略版)
  8. uniapp苹果手机上传头像不显示,打开调试生效
  9. 苹果隐藏app_升级iOS14没?来教你一个隐藏功能
  10. scau 8616 汽车拉力比赛