zeppelin-0.5.6+Hadoop-2.5.2+Hive-1.2.1环境构筑及测试

原创 2016年06月01日 14:48:11

背景

没有用什么高大上的BI工具,一直在控制台操作,遂想看看作为分析师以及用户的话,什么样的结果展现形式比较明了。选了之前接触过的zeppelin.


角色分工

+------------------------------------------+------------------+-------------------+
|       hadoop(hostname/IP:roler)          |     hive         |    zeppelin       |
+------------------------------------------+------------------+-------------------+
| sv000/172.29.6.100:master              |      server      |      server       |
+------------------------------------------+------------------+-------------------+
| sv001/172.29.6.101:slave               |      --------    |    --------       |
+------------------------------------------+------------------+-------------------+
| sv002/172.29.6.102:slave               |      --------    |    --------       |
+------------------------------------------+------------------+-------------------+
| sv003/172.29.6.103:slave               |      --------    |    --------       |
+------------------------------------------+------------------+-------------------+


事前准备

  1. Hadoop-2.5.2
  2. Hive-1.2.1
  3. zeppelin-0.5.6


环境搭建

 Hadoop和Hive的环境这里就不在累述了,之前的博文中都已经写过了。这里只写一些注意点:

zeppelin中要连接hive数据库,就必须使用远程连接,这样的话,就需要在hive这边设置用户名和密码,否则在zeppelin的web端去连接的时候,就直接报错了。

$HIVE_HOME/conf/hive-site.xml中追加:

<property>
        <name>javax.jdo.option.ConnectionUserName</name>
        <value>root</value>
        <description>ername to use against metastoredatabase</description>
</property>
<property>
        <name>javax.jdo.option.ConnectionPassword</name>
        <value>123456</value>
        <description>password to use against metastoredatabase</description>
</property>

启动hive

 ./bin/hive --service metastore &
 ./bin/hiveserver2 &

--add by 2016/09/09

实际上,我们只需要启动hiveserver2即可,只要beeline可以远程模式链接数据库即可。

即./bin/hiveserver2


搭建zeppelin

1.zeppelin-0.5.6-bin.tar.gz下载
2.解压

  tar -zxvf zeppelin-0.5.6-bin.tar.gz


3.conf/zeppelin-env.sh中配置参数
 export JAVA_HOME=/usr/java/jdk1.8.0_66
 export HADOOP_CONF_DIR=/etc/hadoop


4.conf/zeppelin-site.xml修改参数
<property>
  <name>zeppelin.server.addr</name>
  <value>172.29.6.100</value>
  <description>Server address</description>
</property>
<property>
  <name>zeppelin.server.port</name>
  <value>8888</value>
  <description>Server port.</description>
</property>
#修改默认端口号8080,以防跟其他端口共用。

5.启动

./bin/zeppelin-daemon.sh start

6.web端查看确认

http://172.29.6.100:8888



问题

1.连接hive时,报java.lang.NoSuchMethodError: org.apache.hadoop.hive.shims.HadoopShims.isSecurityEnabled()Z

具体堆栈信息如下:

#zepplin/log/zeppelin-interpreter-hive-root-sv000.log

ERROR [2016-05-25 19:03:47,332] ({pool-2-thread-2} Job.java[run]:182) - Job failed
java.lang.NoSuchMethodError: org.apache.hadoop.hive.shims.HadoopShims.isSecurityEnabled()Z
         at org.apache.hive.service.cli.CLIService.init(CLIService.java:82)
        at org.apache.hive.service.cli.thrift.EmbeddedThriftBinaryCLIService.init(EmbeddedThriftBinaryCLIService.java:40)
        at org.apache.hive.jdbc.HiveConnection.<init>(HiveConnection.java:148)
        at org.apache.hive.jdbc.HiveDriver.connect(HiveDriver.java:105)
        at java.sql.DriverManager.getConnection(DriverManager.java:664)
        at java.sql.DriverManager.getConnection(DriverManager.java:247)
        at org.apache.zeppelin.hive.HiveInterpreter.getConnection(HiveInterpreter.java:189)
        at org.apache.zeppelin.hive.HiveInterpreter.getStatement(HiveInterpreter.java:204)
        at org.apache.zeppelin.hive.HiveInterpreter.executeSql(HiveInterpreter.java:233)
        at org.apache.zeppelin.hive.HiveInterpreter.interpret(HiveInterpreter.java:328)
        at org.apache.zeppelin.interpreter.ClassloaderInterpreter.interpret(ClassloaderInterpreter.java:57)
        at org.apache.zeppelin.interpreter.LazyOpenInterpreter.interpret(LazyOpenInterpreter.java:93)
        at org.apache.zeppelin.interpreter.remote.RemoteInterpreterServer$InterpretJob.jobRun(RemoteInterpreterServer.java:300)
        at org.apache.zeppelin.scheduler.Job.run(Job.java:169)
        at org.apache.zeppelin.scheduler.ParallelScheduler$JobRunner.run(ParallelScheduler.java:157)
        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)

调查了一下,开始以为是缺少某个架包导致的,找了0.13.1的,这个问题没出现,但随后又出现新的问题了,如下

ERROR [2016-05-26 16:39:37,401] ({pool-2-thread-2} Job.java[run]:182) - Job failed
java.lang.AbstractMethodError: org.apache.hadoop.hive.shims.Hadoop23Shims.isSecurityEnabled()Z
        at org.apache.hive.service.cli.CLIService.init(CLIService.java:82)
        at org.apache.hive.service.cli.thrift.EmbeddedThriftBinaryCLIService.init(EmbeddedThriftBinaryCLIService.java:40)
        at org.apache.hive.jdbc.HiveConnection.<init>(HiveConnection.java:148)
        at org.apache.hive.jdbc.HiveDriver.connect(HiveDriver.java:105)
        at java.sql.DriverManager.getConnection(DriverManager.java:664)
        at java.sql.DriverManager.getConnection(DriverManager.java:247)
        at org.apache.zeppelin.hive.HiveInterpreter.getConnection(HiveInterpreter.java:189)
        at org.apache.zeppelin.hive.HiveInterpreter.getStatement(HiveInterpreter.java:204)
        at org.apache.zeppelin.hive.HiveInterpreter.executeSql(HiveInterpreter.java:233)
        at org.apache.zeppelin.hive.HiveInterpreter.interpret(HiveInterpreter.java:328)
        at org.apache.zeppelin.interpreter.ClassloaderInterpreter.interpret(ClassloaderInterpreter.java:57)
        at org.apache.zeppelin.interpreter.LazyOpenInterpreter.interpret(LazyOpenInterpreter.java:93)
        at org.apache.zeppelin.interpreter.remote.RemoteInterpreterServer$InterpretJob.jobRun(RemoteInterpreterServer.java:300)
        at org.apache.zeppelin.scheduler.Job.run(Job.java:169)
        at org.apache.zeppelin.scheduler.ParallelScheduler$JobRunner.run(ParallelScheduler.java:157)
        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)
 INFO [2016-05-26 16:39:37,422] ({pool-2-thread-2} SchedulerFactory.java[jobFinished]:135) - Job remoteInterpretJob_1464248376371 finished by scheduler org.apache.zeppelin.hive.HiveInterpreter59906
7174

确认后,觉得这个应该没有找到问题的原因,且同时在网上看到了,在0.13.1之后,就已经在hive的源码里将isSecurityEnabled()这些dead code删除了,所以应该就是我在zeppelin的interpreter里配置的hive JDBC有问题。

嵌入式:jdbc:hive2://  

这个抛出了上面的问题。

修改成:jdbc:hive2://172.29.6.100:10000/default

事前需要在hive端使用beeline去测试,是否可行。只有beeline连接没问题的话,zeppelin这边才会没问题。

如果测试时出现下面的问题:

Error: Could not open client transport with JDBC Uri: jdbc:hive2://server:10000/;principal=<Server_Principal_of_HiveServer2> java.net.ConnectException: Connection refused (state=08S01,code=0)

请按照以下步骤进行修改确认,屡试不爽:

  1. Kill your hiveserver2 & metastore & Restart them again.
  2. check hiveserver2 & metastore are running using 'jps' command.
  3. Run "root@hostname~]# beeline -u jdbc:hive2://localhost:10000/" .
  4. if still getting this error then replace "localhost" with "hostname " of step 3

之前困扰了自己好久的问题终于解决了。

--add @2016/09/09

实质的原因可以参考之前的博文:hive问题集


下图中出现的%hive(default)中的default,并不是hive默认的数据库,而是在interpreters中设置的prefix而已。

即:default.driver.url


1.初次启动zeppelin Web UI界面显示信息:



2.hive+hadoop数据查询结果显示:折线图对比饼图



3.hive+hadoop数据查询结果显示:饼图和柱状图


看到网上有人使用R语言做出的数据统计图片,以及地图的相关图片,特别的炫。还是挺有视觉冲击力的 ,现阶段只能摆弄一下简单的图表了。


---over----







Zeppelin 安装部署实验

一、实验目的 1. 使用Zeppelin运行SparkSQL访问Hive表 2. 动态表单SQL 二、实验环境: 12个节点的Spark集群,以standalone方式部署,各个节点运行的进程如表1...
  • wzy0623
  • wzy0623
  • 2016年04月20日 16:02
  • 4844

Apache Zeppelin 中 Hive 解释器

重要的提醒 Hive Interpreter将被弃用并合并到JDBC Interpreter中。您可以使用具有相同功能的JDBC解释器使用Hive Interpreter。请参阅下面的设置和依赖关系...

Apache Zeppelin 中 JDBC通用 解释器

概述 JDBC解释器允许您无缝地创建到任何数据源的JDBC连接。 在运行每个语句后,将立即应用插入,更新和升级。 到目前为止,已经通过以下测试: Postgresql - JDB...

近实时运算的利器---presto在公司实践

1.起因 公司Hadoop集群里的datanonde和tasktracker节点负载主要集中于晚上到凌晨,平日工作时间负载不是很高。但在工作时间内,公司业务人员有实时查询需求,现在主要 借助于hi...
  • zoubf
  • zoubf
  • 2016年08月02日 16:19
  • 2186

Zeppelin安装成功后,安装Hive之后启动Zeppelin异常

Zeppelin安装参见:http://blog.csdn.net/dax1n/article/details/57079534 异常信如下:  WARN [2017-03-01 19:27:25...
  • Dax1n
  • Dax1n
  • 2017年02月28日 19:44
  • 1482

如何使用zeppelin实现大数据可视化

Zeppelin是基于spark的数据可视化方案。支持scala语言,任何在spark上运行的job都可以在此平台上运行,此外支持对表数据的可视化。对数据源的可视化可以通过interpreter进行扩...
  • lulynn
  • lulynn
  • 2016年05月25日 15:28
  • 2651

zeppelin的安装以及使用

zeppelin两个版本区别: zeppelin版本有两种分别是:zeppelin-0.7.0-bin-netinst.tgz和zeppelin-0.7.0-bin-all.tgz。主要区别是:ne...
  • Dax1n
  • Dax1n
  • 2017年02月25日 13:42
  • 963

Apache Zeppelin安装及介绍

背景Apache Zeppelin提供了web版的类似ipython的notebook,用于做数据分析和可视化。背后可以接入不同的数据处理引擎,包括spark, hive, tajo等,原生支持sca...

presto-0.147+postgresql-9.5.3+msql-5.0.7+hadoop-2.5.2+hive-1.2.1环境构筑以及测试

背景 每个支持SQL的数据库,都有一个强大的SQL引擎。 而对于SQL引擎,基本都是大同小异的,负责SQL文法解析,语意分析,指定查询树,优化查询树,再到最终的执行,客户端返回结果。 而presto的...

hadoop-2.5.2+Oozie-4.1.0环境构筑和简单测试

背景 对于Oozie的理解,我现在也是停留在它是一个job调度系统。至于在有Oozie的情况下,相比之下hadoop的性能是否会有很大的提升,官网中没有给出数据对比,无法直观的看到差异。但相比较没有...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:zeppelin-0.5.6+Hadoop-2.5.2+Hive-1.2.1环境构筑及测试
举报原因:
原因补充:

(最多只允许输入30个字)