天天看点

涛思数据 TDengine 征稿—Zeppelin 集成TDengine 的探索与实践背景TDengine 简介Zeppelin介绍TDengine集成实践TDengine使用总结和展望

本文正在参与 “拥抱开源 | 涛思数据 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 征稿—Zeppelin 集成TDengine 的探索与实践背景TDengine 简介Zeppelin介绍TDengine集成实践TDengine使用总结和展望

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}

           
涛思数据 TDengine 征稿—Zeppelin 集成TDengine 的探索与实践背景TDengine 简介Zeppelin介绍TDengine集成实践TDengine使用总结和展望

zeppelin安装和下载

Zeppelin 安装下载不做太多说明,下载到本地目录后直接sh bin/zeppelin-daemon.sh start就启动好了

tdengine包准备:taos-jdbcdriver-2.0.33.jar

Zeppelin解释器配置

新增解释器

涛思数据 TDengine 征稿—Zeppelin 集成TDengine 的探索与实践背景TDengine 简介Zeppelin介绍TDengine集成实践TDengine使用总结和展望

配置tdengine解释器

涛思数据 TDengine 征稿—Zeppelin 集成TDengine 的探索与实践背景TDengine 简介Zeppelin介绍TDengine集成实践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 接口,不需要依赖本地函数库。

修正后的配置

涛思数据 TDengine 征稿—Zeppelin 集成TDengine 的探索与实践背景TDengine 简介Zeppelin介绍TDengine集成实践TDengine使用总结和展望

使用 JDBC-RESTful 的 driver,建立了127.0.0.1: 6041,数据库名为 test 的连接。这个 URL 中指定用户名(user)为 root,密码(password)为 taosdata。

依赖包配置

涛思数据 TDengine 征稿—Zeppelin 集成TDengine 的探索与实践背景TDengine 简介Zeppelin介绍TDengine集成实践TDengine使用总结和展望

这里会遇到一个问题如下所示:

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 征稿—Zeppelin 集成TDengine 的探索与实践背景TDengine 简介Zeppelin介绍TDengine集成实践TDengine使用总结和展望

TDengine使用

创建一个note

涛思数据 TDengine 征稿—Zeppelin 集成TDengine 的探索与实践背景TDengine 简介Zeppelin介绍TDengine集成实践TDengine使用总结和展望

查看数据库

涛思数据 TDengine 征稿—Zeppelin 集成TDengine 的探索与实践背景TDengine 简介Zeppelin介绍TDengine集成实践TDengine使用总结和展望

新建数据库

涛思数据 TDengine 征稿—Zeppelin 集成TDengine 的探索与实践背景TDengine 简介Zeppelin介绍TDengine集成实践TDengine使用总结和展望

查询数据

涛思数据 TDengine 征稿—Zeppelin 集成TDengine 的探索与实践背景TDengine 简介Zeppelin介绍TDengine集成实践TDengine使用总结和展望

结果可视化

涛思数据 TDengine 征稿—Zeppelin 集成TDengine 的探索与实践背景TDengine 简介Zeppelin介绍TDengine集成实践TDengine使用总结和展望
涛思数据 TDengine 征稿—Zeppelin 集成TDengine 的探索与实践背景TDengine 简介Zeppelin介绍TDengine集成实践TDengine使用总结和展望

总结和展望

Zeppelin notebook可以满足数据开发、数据分析及产品运营报表分析以及大数据交互式建模,TDengine的集成可以丰富zeppelin的数据来源,通过notebook提供的可视化工具可以非常方便展示各种结果,企业如果有查询、分析可视化分析,可以非常方便的进行集成和显示,在实践过程中主要还是会遇到一些环境上的问题,基本上根据错误提示就能够很快进行定位,得益于tdengine 支持的jdbc标准的驱动器能够方便的进行开发和适配。

参考资料

https://zeppelin.apache.org/

https://github.com/taosdata/TDengine

https://www.taosdata.com/cn/documentation/connector/java

本文正在参与 “拥抱开源 | 涛思数据 TDengine有奖征稿,活动传送门

继续阅读