基于docker的zeppelin

这两天老家有个亲戚要卖房子,问我现在买房怎么样?房子的问题实在是不懂,就想到抓取点网上公开的数据帮他简单分析下(历史成交套数,历史成交均价等等简单交叉分析)。

抓数据和导入数据都比较顺利,抓数据,使用colly还是比较方便的,开发效率比较高。最后决定将数据导入mysql数据源做分析,这时,问题出现了,应该使用什么图形化工具了?简单尝试了一些plot库,工作量有点大,放弃;也尝试了很好用的监控图形工具grafana,貌似grafana从设计上就将自己定位在了时间序列数据的图形展示工具上,而且自己平时都是用它来查询时序数据库(influxdb和prometheus),用sql感觉不好用,放弃;最后,想到了前几年玩过的zeppelin,当时体验还不错,就是它了。

自己大概是2016年底用过zeppelin,没想到几年过去了,它的版本还在0.8.1(实际上有0.8.3了,只是官网没有挂出来)。感觉zeppelin应该用的人比较多吧,没想到竟然没有官方镜像。。。

Dockerfile

下面是自己撸的一个,亲测用好:

FROM ubuntu:16.04

ENV ZEPPELIN_PORT 8080
ENV ZEPPELIN_HOME /usr/local/zeppelin

EXPOSE $ZEPPELIN_PORT

#install java
RUN apt-get update && \
  apt-get install -y software-properties-common && \
  add-apt-repository ppa:openjdk-r/ppa && \
  apt-get update && \
  apt-get install -y openjdk-8-jdk

#install other
RUN apt-get install -y \
  npm \
  vim \
  wget

#install Zeppelin
RUN wget http://apache.cs.utah.edu/zeppelin/zeppelin-0.8.1/zeppelin-0.8.1-bin-all.tgz && \
  tar -zxf zeppelin-0.8.1-bin-all.tgz -C /usr/local/ && \
  mv /usr/local/zeppelin* $ZEPPELIN_HOME

WORKDIR $ZEPPELIN_HOME
CMD bin/zeppelin.sh

build

build命令如下:

docker build -t zeppelin:0.8.1 .

start.sh

启动脚本如下:

#!/bin/bash

docker run -p 8080:8080 -v /poolA/docker/apps/zeppelin/conf:/usr/local/zeppelin/conf -v /poolA/docker/apps/zeppelin/notebook:/usr/local/zeppelin/notebook  -d zeppelin:0.8.1

需要说明下,启动脚本中挂在的卷,需要第一次启动docker后,将对应的文件拷贝到host上后,再使用-v,重新启动docker才有效。否则,辛苦添加的interpretor和notebook在docker重启后就会丢失了。。。拷贝时,可以使用docker cp命令。

mysql jdbc interpretor

加入mysql的interpretor, 这一步可以参考下官方文档: default.driver com.mysql.jdbc.Driver default.password xxx default.url jdbc:mysql://192.168.123.80:3306/spider default.user xxx

依赖: artifact: mysql:mysql-connector-java:5.1.38

感觉zeppelin在sql场景下比grafana好用…

grafana在监控场景下很好用,但是为什么写复杂sql这么别扭了,需要再学习下。。。