./zeppelin-daemon.sh start 启动成功,但是无法通过浏览器访问Web界面

本文详细解析了在Ubuntu环境下部署Zeppelin过程中遇到的问题及解决方案,包括防火墙设置、端口冲突处理、自定义访问端口及启用用户认证的具体步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

实验环境

VMware15;Ubuntu16;zeppelin-0.8.1-bin-all.tgz

问题描述

成功解压文件,当执行 ./zeppelin-daemon.sh start时显示OK ,但是当打开浏览器不能访问web界面。

原因分析及解决

1 防火墙屏蔽了

关闭防火墙,如下所示:

(base) hadoop@ubuntu:~/zeppelin/bin$ sudo ufw disable
[sudo] password for hadoop: 
Firewall stopped and disabled on system startup

笔者未能解决问题,在看法二。

2 端口占用

排除各种问题后,猜想是否默认的端口被占用?查看此时端口使用情况:

(base) hadoop@ubuntu:~/zeppelin/bin$ lsof -i:8080
COMMAND   PID   USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
java    10914 hadoop  237u  IPv6  59582      0t0  TCP *:http-alt (LISTEN)

可以看到,果然有进程占用 zeppelin默认端口。现在我们尝试关掉该进程:

(base) hadoop@ubuntu:~/zeppelin/bin$ lsof -i:8080

现在重新启动 ./zeppelin-daemon.sh start ,在去浏览器界面查看:
在这里插入图片描述
上图中,笔者已经将默认端口改为 9090 了,这个待成功跑通后可以自行修改。下面给出修改方法,及参考文档:

自定义访问端口

进入conf目录下,复制zeppelin-site.xml.template模板文件为zeppelin-site.xml,使用vim命令修改以下配置。将 <value>8080</value> 改为你要设定的端口。

<property>
  <name>zeppelin.server.addr</name>
  <value>0.0.0.0</value>
  <description>Server address</description>
</property>
<property>
  <name>zeppelin.server.port</name>
  <value>8080</value>
  <description>Server port.</description>
</property>

此外,我们还可以启动Zeppelin的用户认证。

启动Zeppelin的用户认证

Zeppelin默认运行匿名用户访问,即没有用户权限要求,如要实现用户权限限制,则需修改zeppelin-site.xml和shiro配置文件。
修改zeppelin-site.xml配置文件,将以下配置项中的true改成false

<property>
  <name>zeppelin.anonymous.allowed</name>
  <value>false</value>
  <description>Anonymous user allowed by default</description>
</property>

复制conf目录下的shiro.ini.template 为 shiro.ini , 将shiro.ini 的[user]块中的内容修改为以下内容:

[users]
#admin = admin, admin
user1 = password2, role1, role2
user2 = password3, role3
user3 = password4, role2

注意:等号前面为用户名,等号后面为密码

笔者此前还在windows环境下部署过 Zeppelin 。曾遇到过在命令行中输入启动命令 zeppelin.cmd 没反应,这里也贴出参考文档

谈风月之余谈技术,欢迎关注我的微信公众号
在这里插入图片描述

### Zeppelin 中 `java.lang.NoClassDefFoundError` 错误分析与解决方案 在 Apache Zeppelin 运行过程中,如果出现 `java.lang.NoClassDefFoundError: org/apache/hadoop/conf/Configuration` 的错误,通常表明当前环境中缺失必要的 Hadoop 配置文件或相关依赖 jar 包。以下是详细的分析和解决方法: #### 1. **问题原因** 该错误的根本原因是 Java 虚拟机无法找到指定的类 `org.apache.hadoop.conf.Configuration`。这可能是由于以下原因之一引起的: - 当前环境中的 Hadoop 相关 jar 文件版本不兼容。 - 缺少必要的 Hadoop jar 文件。 - 类路径配置不当,导致 JVM 未能加载所需的库。 此情况可以通过调整 Zeppelin 的依赖项以及重新配置其运行时环境来解决[^1]。 --- #### 2. **解决步骤** ##### (1) 检查并替换 Hadoop Jar 文件 进入 Zeppelin 安装目录下的 `lib` 子目录,确认是否存在旧版或冲突的 Hadoop jar 文件。如果有,请删除这些文件,并从 Spark 或其他组件中复制最新的 Hadoop jar 文件到 Zeppelin 的 `lib` 目录下。例如: ```bash cd zeppelin-0.7.2-bin-all/lib rm hadoop-* # 删除所有可能引起冲突的 Hadoop jar 文件 cp ../spark/jars/hadoop-common*.jar ./ cp ../spark/jars/hadoop-hdfs*.jar ./ ``` 确保所使用的 Hadoop jar 文件版本与集群上的 Hadoop 版本一致[^1]。 --- ##### (2) 修改 Classpath 设置 验证 Zeppelin 是否能够正确识别 Hadoop 的 classpath。可以在启动脚本中显式设置 HADOOP_CONF_DIR 和 HADOOP_HOME 环境变量。编辑 Zeppelin 启动脚本(通常是 `bin/zeppelin-env.sh`),添加如下内容: ```bash export HADOOP_CONF_DIR=/path/to/hadoop/etc/hadoop export HADOOP_HOME=/path/to/hadoop ``` 其中 `/path/to/hadoop` 是实际安装 Hadoop 的根目录位置。 --- ##### (3) 更新 Maven 依赖(适用于自定义构建) 如果通过源码编译部署 Zeppelin,则需确保 pom.xml 文件中包含正确的 Hadoop 依赖声明。例如: ```xml <dependency> <groupId>org.apache.hadoop</groupId> <artifactId>hadoop-common</artifactId> <version>2.7.3</version> <!-- 替换为您的 Hadoop 实际版本 --> </dependency> ``` 完成修改后重新执行 mvn clean install 构建命令以更新依赖关系。 --- ##### (4) 清理缓存并重启服务 清理临时数据可以有效避免残留文件干扰新配置生效。停止正在运行的服务实例后再继续操作: ```bash ./bin/zeppelin-daemon.sh stop rm -rf /tmp/zeppelin/* # 移除工作区内的历史记录 ./bin/zeppelin-daemon.sh start ``` --- #### 3. **代码示例:验证 Configuration 加载成功与否** 为了进一步排查问题所在,可编写一段简单的测试代码尝试手动初始化 `Configuration` 对象: ```scala import org.apache.hadoop.conf.Configuration object TestHadoopConfig { def main(args: Array[String]): Unit = { val conf = new Configuration() println(s"Hadoop configuration loaded successfully! ${conf.toString}") } } ``` 将上述 Scala 程序保存至合适的位置并通过 spark-shell 执行它;如果没有抛出异常则证明基础环境已修复完毕。 --- ### 总结 通过对 Zeppelin 的依赖管理优化及其关联参数设定调整,基本能消除因缺少特定类而引发的 NoClassDefFoundError 异常状况。务必保持各个子模块间版本号的一致性以免再次遭遇类似困境。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值