用于连接到 HDP Virtualbox 上的 Hive 的 Apache Zeppelin 配置
Apache Zeppelin configuration for connect to Hive on HDP Virtualbox
一段时间以来,我一直在为 Apache Zeppelin notebook 0.10.0 版设置而苦恼。
这个想法是能够将它连接到远程 Hortonworks 2.6.5 服务器,该服务器在 Ubuntu 20.04 的 Virtualbox 上本地运行。
我正在使用从以下位置下载的图像:
https://www.cloudera.com/downloads/hortonworks-sandbox.html
当然,该映像已经预装了 Zeppelin,它在端口 9995 上运行良好,但这是一个旧的 0.7.3 版本,不支持我想使用的 Helium 插件。我知道HDP version 3.0.1已经更新了Zeppelin version 0.8 onboard,但由于我的硬件资源目前无法使用。另外,据我所知,启用Leaflet Map Plugin也有问题。
首先想到的是在服务器上更新notebook,但是根据Cloudera论坛上的说明更新后(不幸的是他们现在不工作,我无法提供link或查看任何其他解决方案)它无法正确启动。
现在在我看来,一个更简单的解决方案是将较新的笔记本版本连接到虚拟服务器,不幸的是,尽管这里的线程使用各种配置进行了许多尝试和解决方案,但我无法通过 JDBC 连接到 Hive。我也将 Zeppelin 与本地 Spark 3.0.3 一起使用,但我在 Hive 中有一些地理数据,我想以这种方式可视化。
除其他外,我使用了 Zeppelin 网站上的描述:
https://zeppelin.apache.org/docs/latest/interpreter/jdbc.html#apache-hive
这是我当前的 JDBC 解释器配置:
hive.driver org.apache.hive.jdbc.HiveDriver
hive.url jdbc:hive2://sandbox-hdp.hortonworks.com:2181/;serviceDiscoveryMode=zooKeeper;zooKeeperNamespace=hiveserver2
hive.user hive
Artifact org.apache.hive:hive-jdbc:3.1.2
根据驱动程序版本的不同,会出现不同的错误,但这次是在输入之后:
%jdbc(hive)
SELECT * FROM mydb.mytable;
我收到以下错误:
Could not open client transport for any of the Server URI's in
ZooKeeper: Could not establish connection to
jdbc:hive2://sandbox-hdp.hortonworks.com:10000/;serviceDiscoveryMode=zooKeeper;zooKeeperNamespace=hiveserver2;hive.server2.proxy.user=hive;?tez.application.tags=paragraph_1645270946147_194101954;mapreduce.job.tags=paragraph_1645270946147_194101954;:
Required field 'client_protocol' is unset!
Struct:TOpenSessionReq(client_protocol:null,
configuration:{set:hiveconf:mapreduce.job.tags=paragraph_1645270946147_194101954,
set:hiveconf:hive.server2.thrift.resultset.default.fetch.size=1000,
hive.server2.proxy.user=hive, use:database=default,
set:hiveconf:tez.application.tags=paragraph_1645270946147_194101954})
我将非常感谢大家的帮助。问候。
因此,经过许多小时和试验,这里有一个可行的解决方案。首先,最重要的是使用与您的 Hadoop 版本相关的驱动程序。需要在各自版本中像 'hive-jdbc-standalone' 和 'hadoop-common' 这样的 jar 文件,并且为了避免在 Zeppelin 中的 %jdbc 解释器的 'Artifact' 字段中添加所有这些文件,最好是使用一个包含所有必需依赖项的完整文件。
感谢 Tim Veil,它可以在下面的 Github 存储库中找到:
https://github.com/timveil/hive-jdbc-uber-jar/
这是我完整的 Zeppelin %jdbc 解释器设置:
default.url jdbc:postgresql://localhost:5432/
default.user gpadmin
default.password
default.driver org.postgresql.Driver
default.completer.ttlInSeconds 120
default.completer.schemaFilters
default.precode
default.statementPrecode
common.max_count 1000
zeppelin.jdbc.auth.type SIMPLE
zeppelin.jdbc.auth.kerberos.proxy.enable false
zeppelin.jdbc.concurrent.use true
zeppelin.jdbc.concurrent.max_connection 10
zeppelin.jdbc.keytab.location
zeppelin.jdbc.principal
zeppelin.jdbc.interpolation false
zeppelin.jdbc.maxConnLifetime -1
zeppelin.jdbc.maxRows 1000
zeppelin.jdbc.hive.timeout.threshold 60000
zeppelin.jdbc.hive.monitor.query_interval 1000
hive.driver org.apache.hive.jdbc.HiveDriver
hive.password
hive.proxy.user.property hive.server2.proxy.user
hive.splitQueries true
hive.url jdbc:hive2://sandbox-hdp.hortonworks.com:10000/default
hive.user hive
Dependencies
Artifact
/opt/zeppelin/interpreter/jdbc/hive-jdbc-uber-2.6.5.0-292.jar
下一步是转到 Ambari http://localhost:8080/ 并以管理员身份登录。为此,您必须首先通过 SSH 登录 Hadoop root 帐户:
ssh root@127.0.0.1 -p 2222
root@127.0.0.1's password: hadoop
成功登录后,系统会提示您立即更改密码,请执行此操作,然后使用以下命令设置 Ambari 管理员密码:
[root@sandbox-hdp ~]# ambari-admin-password-reset
之后您可以在 Ambari 中使用管理员帐户(登录并单击左侧面板中的 Hive link):
Ambari -> Hive -> 配置 -> 高级 -> 自定义 hive-site
单击添加 属性
在开头插入以下内容 window:
hive.security.authorization.sqlstd.confwhitelist.append=tez.application.tags
并保存后,重启Ambari中的所有Hive服务。如果您在 'zeppelin-env.sh' 中设置正确的 Java 路径并在 'zeppelin-site.xml' 中设置正确的端口(您必须复制并重命名 'zeppelin-env.sh.template' 和 'zeppelin-site.xml.template' 在 Zeppelin/config目录,请记住Ambari也使用8080端口!)。
就我而言,唯一剩下要做的就是添加或取消注释负责 Helium plug-in 存储库(在 'zeppelin-site.xml' 中)的片段:
<property>
<name>zeppelin.helium.registry</name>
<value>helium,https://s3.amazonaws.com/helium-package/helium.json</value>
<description>Enable helium packages</description>
</property>
现在您可以转到 Zeppelin sheet 右上角的 Helium 选项卡并安装您选择的插件,在我的例子中是 'zeppelin-leaflet' 可视化。瞧! Hive 中此 Kaggle 数据集的示例可视化:
https://www.kaggle.com/kartik2112/fraud-detection
祝你有愉快的一天!
一段时间以来,我一直在为 Apache Zeppelin notebook 0.10.0 版设置而苦恼。 这个想法是能够将它连接到远程 Hortonworks 2.6.5 服务器,该服务器在 Ubuntu 20.04 的 Virtualbox 上本地运行。 我正在使用从以下位置下载的图像:
https://www.cloudera.com/downloads/hortonworks-sandbox.html
当然,该映像已经预装了 Zeppelin,它在端口 9995 上运行良好,但这是一个旧的 0.7.3 版本,不支持我想使用的 Helium 插件。我知道HDP version 3.0.1已经更新了Zeppelin version 0.8 onboard,但由于我的硬件资源目前无法使用。另外,据我所知,启用Leaflet Map Plugin也有问题。
首先想到的是在服务器上更新notebook,但是根据Cloudera论坛上的说明更新后(不幸的是他们现在不工作,我无法提供link或查看任何其他解决方案)它无法正确启动。 现在在我看来,一个更简单的解决方案是将较新的笔记本版本连接到虚拟服务器,不幸的是,尽管这里的线程使用各种配置进行了许多尝试和解决方案,但我无法通过 JDBC 连接到 Hive。我也将 Zeppelin 与本地 Spark 3.0.3 一起使用,但我在 Hive 中有一些地理数据,我想以这种方式可视化。
除其他外,我使用了 Zeppelin 网站上的描述:
https://zeppelin.apache.org/docs/latest/interpreter/jdbc.html#apache-hive
这是我当前的 JDBC 解释器配置:
hive.driver org.apache.hive.jdbc.HiveDriver
hive.url jdbc:hive2://sandbox-hdp.hortonworks.com:2181/;serviceDiscoveryMode=zooKeeper;zooKeeperNamespace=hiveserver2
hive.user hive
Artifact org.apache.hive:hive-jdbc:3.1.2
根据驱动程序版本的不同,会出现不同的错误,但这次是在输入之后:
%jdbc(hive)
SELECT * FROM mydb.mytable;
我收到以下错误:
Could not open client transport for any of the Server URI's in ZooKeeper: Could not establish connection to jdbc:hive2://sandbox-hdp.hortonworks.com:10000/;serviceDiscoveryMode=zooKeeper;zooKeeperNamespace=hiveserver2;hive.server2.proxy.user=hive;?tez.application.tags=paragraph_1645270946147_194101954;mapreduce.job.tags=paragraph_1645270946147_194101954;: Required field 'client_protocol' is unset! Struct:TOpenSessionReq(client_protocol:null, configuration:{set:hiveconf:mapreduce.job.tags=paragraph_1645270946147_194101954, set:hiveconf:hive.server2.thrift.resultset.default.fetch.size=1000, hive.server2.proxy.user=hive, use:database=default, set:hiveconf:tez.application.tags=paragraph_1645270946147_194101954})
我将非常感谢大家的帮助。问候。
因此,经过许多小时和试验,这里有一个可行的解决方案。首先,最重要的是使用与您的 Hadoop 版本相关的驱动程序。需要在各自版本中像 'hive-jdbc-standalone' 和 'hadoop-common' 这样的 jar 文件,并且为了避免在 Zeppelin 中的 %jdbc 解释器的 'Artifact' 字段中添加所有这些文件,最好是使用一个包含所有必需依赖项的完整文件。 感谢 Tim Veil,它可以在下面的 Github 存储库中找到:
https://github.com/timveil/hive-jdbc-uber-jar/
这是我完整的 Zeppelin %jdbc 解释器设置:
default.url jdbc:postgresql://localhost:5432/
default.user gpadmin
default.password
default.driver org.postgresql.Driver
default.completer.ttlInSeconds 120
default.completer.schemaFilters
default.precode
default.statementPrecode
common.max_count 1000
zeppelin.jdbc.auth.type SIMPLE
zeppelin.jdbc.auth.kerberos.proxy.enable false
zeppelin.jdbc.concurrent.use true
zeppelin.jdbc.concurrent.max_connection 10
zeppelin.jdbc.keytab.location
zeppelin.jdbc.principal
zeppelin.jdbc.interpolation false
zeppelin.jdbc.maxConnLifetime -1
zeppelin.jdbc.maxRows 1000
zeppelin.jdbc.hive.timeout.threshold 60000
zeppelin.jdbc.hive.monitor.query_interval 1000
hive.driver org.apache.hive.jdbc.HiveDriver
hive.password
hive.proxy.user.property hive.server2.proxy.user
hive.splitQueries true
hive.url jdbc:hive2://sandbox-hdp.hortonworks.com:10000/default
hive.user hive
Dependencies
Artifact
/opt/zeppelin/interpreter/jdbc/hive-jdbc-uber-2.6.5.0-292.jar
下一步是转到 Ambari http://localhost:8080/ 并以管理员身份登录。为此,您必须首先通过 SSH 登录 Hadoop root 帐户:
ssh root@127.0.0.1 -p 2222
root@127.0.0.1's password: hadoop
成功登录后,系统会提示您立即更改密码,请执行此操作,然后使用以下命令设置 Ambari 管理员密码:
[root@sandbox-hdp ~]# ambari-admin-password-reset
之后您可以在 Ambari 中使用管理员帐户(登录并单击左侧面板中的 Hive link):
Ambari -> Hive -> 配置 -> 高级 -> 自定义 hive-site
单击添加 属性
在开头插入以下内容 window:
hive.security.authorization.sqlstd.confwhitelist.append=tez.application.tags
并保存后,重启Ambari中的所有Hive服务。如果您在 'zeppelin-env.sh' 中设置正确的 Java 路径并在 'zeppelin-site.xml' 中设置正确的端口(您必须复制并重命名 'zeppelin-env.sh.template' 和 'zeppelin-site.xml.template' 在 Zeppelin/config目录,请记住Ambari也使用8080端口!)。
就我而言,唯一剩下要做的就是添加或取消注释负责 Helium plug-in 存储库(在 'zeppelin-site.xml' 中)的片段:
<property>
<name>zeppelin.helium.registry</name>
<value>helium,https://s3.amazonaws.com/helium-package/helium.json</value>
<description>Enable helium packages</description>
</property>
现在您可以转到 Zeppelin sheet 右上角的 Helium 选项卡并安装您选择的插件,在我的例子中是 'zeppelin-leaflet' 可视化。瞧! Hive 中此 Kaggle 数据集的示例可视化:
https://www.kaggle.com/kartik2112/fraud-detection
祝你有愉快的一天!