专栏首页Hadoop数据仓库CDH 6.3.1整合Zeppelin 0.8.2

CDH 6.3.1整合Zeppelin 0.8.2

Zeppelin是一个基于Web的笔记本,可以直接在浏览器中编写代码,对数据进行查询分析并生成报表或图表,做出数据驱动的、交互、协作的文档,并且可以共享笔记。Zeppelin提供了内置的Apache Spark集成,提供的功能有:

  • 自动引入SparkContext 和 SQLContext
  • 从本地文件系统或maven库载入运行时依赖的jar包。
  • 可取消Spark作业和展示作业进度。

在数据可视化方面,Zeppelin已经包含一些基本的图表,如柱状图、饼图、线形图、散点图等。可视化并不只限于Spark查询,任何支持的后端语言输出都可以被图形化表示。

Zeppelin中最核心的概念是解释器,它是一个插件式的体系结构,允许任何语言或后端数据处理程序以插件的形式添加到Zeppelin中。解释器允许用户使用一个指定的语言或数据处理器。每一个解释器都属于换一个解释器组,同一个解释器组中的解释器可以相互引用,例如SparkSql解释器可以引用Spark解释器以获取Spark上下文,因为它们属于同一个解释器组。当前的Zeppelin已经支持很多解释器,如cassandra、file、hbase、kylin、phoenix、elasticsearch、flink、hive、jdbc、psql等等。插件式架构允许用户在Zeppelin中使用自己熟悉的程序语言处理数据。例如,通过使用%spark解释器,可以在Zeppelin中使用Scala语言代码。

一、安装Zeppelin

CDH中没有集成Zeppelin服务,因此需要手工安装。下面是在CDH 6.3.1中安装Zeppelin 0.8.2的主要步骤。

1. 下载Zeppelin安装包 Zeppelin提供源码和二进制两种安装包,源码需要用户自己进行编译,二进制包解压后即可直接运行。为简单起见选择安装二进制包。

下载地址: http://www.apache.org/dyn/closer.cgi/zeppelin/zeppelin-0.8.2/zeppelin-0.8.2-bin-all.tgz 安装指南: http://zeppelin.apache.org/docs/0.8.2/quickstart/install.html https://datacouch.io/install-apache-zeppelin-on-cdh/

2. 解压缩Zeppelin安装包

mkdir /opt/zeppelin
tar -xvf zeppelin-0.8.2-bin-all.tgz -C /opt/zeppelin

3. 配置Zeppelin 在Zeppelin配置文件目录中,创建名为zeppelin-env.sh的环境文件,在其中配置Hadoop配置目录、hive的配置文件的classpath目录、Zeppelin服务器的IP地址和端口号。

cd /opt/zeppelin/zeppelin-0.8.2-bin-all/conf
vi zeppelin-env.sh

export HADOOP_CONF_DIR=/etc/hadoop/conf
export ZEPPELIN_INTP_CLASSPATH_OVERRIDES=/etc/hive/conf
export ZEPPELIN_ADDR=172.16.1.126
export ZEPPELIN_PORT=9091

4. 修改权限 将Zeppelin安装目录的权限设置为777。

chmod -R 777 /opt/zeppelin

5. 启动Zeppelin

cd /opt/zeppelin/zeppelin-0.8.2-bin-all
./bin/zeppelin-daemon.sh start

至此已经完成Zeppelin在CDH上的安装,从浏览器可以打开Zeppelin:http://172.16.1.126:9091

二、配置Zeppelin的用户名密码

缺省Zeppelin使用匿名用户访问,不需要用户名密码,但可以通过简单的配置为Zeppelin增加鉴权功能。shiro.ini文件用来多用户登录和权限管理,可以编辑此文件,根据自己的需要设置登录zeppelin的用户名和密码。

cd /opt/zeppelin/zeppelin-0.8.2-bin-all/conf
cp shiro.ini.template shiro.ini
vi shiro.ini
...
[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
...

将admin这行的注释删掉。等号两边分别为用户名和密码,逗号后面设置的是权限,这里都设置为admin。保存配置后重启zeppelin:

/opt/zeppelin/zeppelin-0.8.2-bin-all/bin/zeppelin-daemon.sh start

然后重新登录zeppelin,首页会变成了欢迎页面,要想使用Zeppelin需要先登录,如图1所示。

图1

三、使用Zeppelin查询CDH的hive表

完成前面的步骤后,就可以新建note,执行SparkSQL查询hive表,不在需要任何额外配置,如图2所示。

图2

需要说明的一点是,我们安装的Zeppelin 0.8.2与CDH 6.3.1的Spark有版本兼容性问题。因此这里使用的spark是Zeppelin自带的,spark master为缺省的本地,如图3所示。

图3

四、定义Hive解释器

虽然不能直接使用CDH集群中的Spark直接查询hive表,但是可以自定义一个JDBC的hive解释器,将Zeppelin作为客户端连接到Hive服务器。只要将Hive的执行引擎配置为Spark,就可以间接使用CDH的Spark查询hive。顺便说一句,当CDH 6.3.1中同时启动了Hive和Spark服务,Hive的执行引擎就会自动配置为Spark。

在Interpreters页面点击“+Create”新建一个解释器,Interpreter Name输入hive,Interpreter group选择jdbc,必须修改的属性只有default.driver和default.url两项,如图4所示。

图4

然后是添加依赖包,如图5所示。

图5

我这里需要添加以下jar包,才能正常执行hive查询:

/opt/cloudera/parcels/CDH-6.3.1-1.cdh6.3.1.p0.1470567/lib/hive/lib/hive-jdbc-2.1.1-cdh6.3.1.jar
/opt/cloudera/parcels/CDH-6.3.1-1.cdh6.3.1.p0.1470567/lib/hadoop/hadoop-common-3.0.0-cdh6.3.1.jar
/opt/cloudera/parcels/CDH-6.3.1-1.cdh6.3.1.p0.1470567/lib/hive/lib/hive-service-2.1.1-cdh6.3.1.jar
/opt/cloudera/parcels/CDH-6.3.1-1.cdh6.3.1.p0.1470567/lib/hive/lib/hive-service-rpc-2.1.1-cdh6.3.1.jar
/opt/cloudera/parcels/CDH-6.3.1-1.cdh6.3.1.p0.1470567/lib/hive/lib/hive-common-2.1.1-cdh6.3.1.jar
/opt/cloudera/parcels/CDH-6.3.1-1.cdh6.3.1.p0.1470567/lib/hive/lib/hive-serde-2.1.1-cdh6.3.1.jar

所有修改完成后,点击save保存配置。下面就可以新建note执行hive查询了,如图6所示。

图6

五、定义MySQL解释器

数据可视化的需求很普遍,如果常用的如MySQL这样的关系数据库也能使用Zeppelin查询,并将结果图形化显示,那么就可以用一套统一的数据可视化方案处理大多数常用查询。Zeppelin本身不带MySQL翻译器,但它支持JDBC解释器组,通常只要有相应的JDBC驱动JAR包,就可以轻松创建一个新的解释器。

在Interpreters页面点击“+Create”新建一个解释器,Interpreter Name输入mysql,Interpreter group选择jdbc,然后配置相关属性。最简单情况下只需要设置default.driver、default.user、default.password、default.url四个属性值,分别表示驱动程序、连接MySQL的用户名、密码和URL,如图7所示。

图7

然后在依赖关系的artifact中输入MySQL连接器JAR包,格式为“mysql:驱动名称:版本号”,如图8所示。

图8

点击save保存配置。此时在interpreter页面中会看到mysql解释器。下面创建一个note,使用MySQL作为解释器,查询information_schema.tables表,如图9所示。

图9

如果解释器出现类似以下错误:

Cannot fetch dependencies for mysql:mysql-connector-java:5.1.38

可能是因为Zeppelin的repository中心库无法连接,有两种解决办法。一是在artifact中填写本地jar包路径,如:

/usr/share/java/mysql-connector-java.jar

第二个办法是在zeppelin-env.sh文件中设置ZEPPELIN_INTERPRETER_DEP_MVNREPO环境变量,添加一个可访问的repository地址,如:

export ZEPPELIN_INTERPRETER_DEP_MVNREPO=http://insecure.repo1.maven.org/maven2/

关于这一问题的说明参见:https://stackoverflow.com/questions/59964426/zepplin-mysql-interpreter-error-cannot-fetch-dependencies-for-mysqlmysql-conne

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Oracle中的三种 UPDATE FROM 的解决方案

    表的更新操作中,在很多情况下需要在表达式中引用要更新的表以外的数据。象sql server提供了update的from 子句,可以将要更新的表与其它的数据源连接...

    用户1148526
  • 基于Hadoop生态圈的数据仓库实践 —— 环境搭建(一)

    版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.n...

    用户1148526
  • Oracle 行列转置

    版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.n...

    用户1148526
  • 怀英漫谈9 - JS 数组

    所谓的数组,就是一些数据的集合,JS中没有集合的概念,所以集合也是数组的一种。如果你Java用的多,那么这个概念就有点儿难以理解,毕竟从Java的文意来说,集合...

    用户1335799
  • 当sqlmap跑不出数据怎么办

    你有没有遇到这样的场景,好不容易找到了一个SQL注入点,扔到SqlMap,爆错,怎么也跑不出数据。

    Bypass
  • Oracle 12.2以及版本计划

    在刚刚结束的Oracle 38周年大会上,12.2版本的发布日期被披露出来,预计12.2将在2016年上半年发布,而相应的,Oracle 11.2.0.3版本的...

    数据和云
  • EasyNVR RTSP转RTMP/HLS流媒体服务器前端构建之:内部搜索功能的实现

    通过filter()函数来对需要检索的原始数据进行筛选; filter用于筛选出与指定表达式匹配的元素集合。 这个方法用于缩小匹配的范围。用逗号分隔多个...

    EasyNVR
  • 零基础python教程—python数组

    在学习Python过程中数组是个逃不过去的一个关,既然逃不过去咱就勇敢面对它,学习一下python中数组如何使用。

    小小科
  • 八大排序算法总结与java实现

    因为健忘,加上对各种排序算法理解不深刻,过段时间面对排序就蒙了。所以决定对我们常见的这几种排序算法进行统一总结,强行学习。首先罗列一下常见的十大排序算法:

    林老师带你学编程
  • 什么是水塘抽样算法(Reservoir Sampling)

    给定一个数据流,数据流长度N很大,且N直到处理完所有数据之前都不可知,如何在只遍历一遍数据(O(N))的情况下,能够随机选取出这组数据的k个概率相等的均匀抽样。

    我是攻城师

扫码关注云+社区

领取腾讯云代金券