Zeppelin Notebook集成Tdengine 的探索与实践
背景
大多数互联网企业都提供有类似Notebook类的产品,采用交互式的方式进行数据分析、数据建模及数据可视化。主要实现大多都是基于jupyter 、Zeppelin进行定制化开发,重点会打通大数据计算、存储及底层资源管理,支持常见的大数据计算引擎、机器学习和深度学习计算框架。
TDengine是一个高效的存储、查询、分析的时序大数据存储引擎,专为物联网、车联网、工业互联网、运维监测等优化而设计。 在时序空间大数据处理上,有着自己独到的优势,Zeppelin支持标准jdbc规范的数据源接入,可以在zeppelin notebook中去执行标准的数据库语句,进行增删改以及数据分析和结果可视化,TDengine 提供了jdbc 连接方式,按道理通过配置就能够支持TDengine的使用。
文章主要分几个方面进行介绍,先对Zeppelin、TDengine 进行介绍,接着会讲下Zeppelin 的配置TDengine的实践,包括在本机上如何启动zeppelin 、配置TDengine interpreter 、TdEngine的使用案例,以及在这过程中遇到的问题。
TDengine 简介
TDengine是涛思数据专为物联网、车联网、工业互联网、IT运维等设计和优化的大数据平台。除核心的快10倍以上的时序数据库功能外,还提供缓存、数据订阅、流式计算等功能,大程度减少研发和运维的复杂度,且核心代码,包括集群功能全部开源(开源协议,AGPL v3.0)。
Zeppelin介绍
Apache Zeppelin是一款大数据分析和可视化工具,可以让数据分析师在一个基于Web页面的笔记本中,使用不同的语言,对不同数据源中的数据进行交互式分析,并对分析结果进行可视化的工具。可以承担数据接入、数据分析、数据可视化、以及大数据建模的全流程,前端提供丰富的可视化图形库,后端支持Spark、HBase、Flink 等大数据系统,并支持Spark、Python、JDBC、Markdown、Shell 、ES等各种常用Interpreter,这使得开发者可以方便地使用SQL 在 Zeppelin 中做数据开发,同时还能够定制自己的解释器。
TDengine集成实践
tdengine安装
这里采用docker快速安装部署,只不过要注意的需要通过端口映射(-p),将容器内部开放的网络端口映射到宿主机的指定端口上。通过挂载本地目录(-v),可以实现宿主机与容器内部的数据同步,防止容器删除后,数据丢失。
容器启动指令如下: 启动一个运行了 TDengine 的 docker 容器,并且将容器的 6030-6041 范围端口映射到宿主机的 6030-6041 端口上。
docker run -d -v /etc/taos:/etc/taos -p 6030-6041:6030-6041 --name=td tdengine/tdengine
复制代码
通过 RESTful 接口访问 TDengine,这时连接的是本机的 6041 端口可以连接连接成功。
curl -u root:taosdata -d 'show databases' 127.0.0.1:6041/rest/sql
{"status":"succ","head":["name","created_time","ntables","vgroups","replica","quorum","days","keep0,keep1,keep(D)","cache(MB)","blocks","minrows","maxrows","wallevel","fsync","comp","cachelast","precision","update","status"],"column_meta":[["name",8,32],["created_time",9,8],["ntables",4,4],["vgroups",4,4],["replica",3,2],["quorum",3,2],["days",3,2],["keep0,keep1,keep(D)",8,24],["cache(MB)",4,4],["blocks",4,4],["minrows",4,4],["maxrows",4,4],["wallevel",2,1],["fsync",4,4],["comp",2,1],["cachelast",2,1],["precision",8,3],["update",2,1],["status",8,10]],"data":[["log","2021-07-29 08:17:12.639",4,1,1,1,10,"30,30,30",1,3,100,4096,1,3000,2,0,"us",0,"ready"]],"rows":1}
复制代码
zeppelin安装和下载
Zeppelin 安装下载不做太多说明,下载到本地目录后直接sh bin/zeppelin-daemon.sh start就启动好了 tdengine包准备:taos-jdbcdriver-2.0.33.jar
Zeppelin解释器配置
新增解释器
配置tdengine解释器
这里主要是解释器名称和解释器组配置: 解释器名称:tdengine 解释器组选择 :jdbc default.url配置:jdbc:TAOS://127.0.0.1:6041/test?user=root&password=taosdata default.driver: com.taosdata.jdbc.TSDBDriver
之后在使用过程中会遇到 java.lang.UnsatisfiedLinkError: no taos in java.library.path问题,查了文档才发现如果使用jdbc-jni需要依赖本地函数库,使用 JDBC-RESTful 接口,不需要依赖本地函数库。
修正后的配置
使用 JDBC-RESTful 的 driver,建立了127.0.0.1: 6041,数据库名为 test 的连接。这个 URL 中指定用户名(user)为 root,密码(password)为 taosdata。
依赖包配置
这里会遇到一个问题如下所示:
java.lang.NoClassDefFoundError: org/apache/http/HttpRequest
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:756)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
at java.net.URLClassLoader.defineClass(URLClassLoader.java:468)
at java.net.URLClassLoader.access$100(URLClassLoader.java:74)
at java.net.URLClassLoader$1.run(URLClassLoader.java:369)
at java.net.URLClassLoader$1.run(URLClassLoader.java:363)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:362)
at java.lang.ClassLoader.loadClass(ClassLoader.java:418)
复制代码
官方提供的taos-jdbcdriver-2.0.33.jar包是不会包含httpclient这些依赖包的,因此后面通过修改pom.xml文件重新编译打包生成包含依赖的jar包
maven-assembly-plugin jar-with-dependencies终的依赖包配置如下:taos-jdbcdriver-2.0.34-jar-with-dependencies.jar
TDengine使用
创建一个note
查看数据库
新建数据库
查询数据
结果可视化
总结和展望
Zeppelin notebook可以满足数据开发、数据分析及产品运营报表分析以及大数据交互式建模,TDengine的集成可以丰富zeppelin的数据来源,通过notebook提供的可视化工具可以非常方便展示各种结果,企业如果有查询、分析可视化分析,可以非常方便的进行集成和显示,在实践过程中主要还是会遇到一些环境上的问题,基本上根据错误提示就能够很快进行定位,得益于tdengine 支持的jdbc标准的驱动器能够方便的进行开发和适配。
参考资料
zeppelin.apache.org/ github.com/taosdata/TD… www.taosdata.com/cn/document…
相关文章