hdfs - Hadoop/HDFS 3.1.1(在 Java 11 上)加载文件资源管理器时 Web UI 崩溃?
问题描述
之后start-dfs.sh
,我可以导航到http://localhost:9870
。NameNode 似乎运行得很好。
然后我点击“Utilities -> Browse the file system”,我在网络浏览器中得到这个提示:
Failed to retrieve data from /webhdfs/v1/?op=LISTSTATUS: Server Error
挖掘日志文件($HADOOP_HOME/logs/hadoop-xxx-namenode-xxx.log
),我发现:
2018-11-30 16:47:25,097 WARN org.eclipse.jetty.servlet.ServletHandler: Error for /webhdfs/v1/
java.lang.NoClassDefFoundError: javax/activation/DataSource
at com.sun.xml.bind.v2.model.impl.RuntimeBuiltinLeafInfoImpl.(RuntimeBuiltinLeafInfoImpl.java:457)
at com.sun.xml.bind.v2.model.impl.RuntimeTypeInfoSetImpl.(RuntimeTypeInfoSetImpl.java:65)
at com.sun.xml.bind.v2.model.impl.RuntimeModelBuilder.createTypeInfoSet(RuntimeModelBuilder.java:133)
所以缺少一个类。为什么会这样,我该如何解决这个问题?
解决方案
Java 9 弃用了该java.activation
模块。Java 11完全删除了它。
Java 9 和 Java 10用户可以将该模块重新添加到 Hadoop 的类路径中。将其放入$HADOOP_CONF_DIR/hadoop-env.sh
(未测试):
export HADOOP_OPTS="${HADOOP_OPTS} --add-modules java.activation "
Java 11用户必须首先下载 jar 依赖项并使其在类路径中可用。但它去了吗?
我发现将 jar 放在这些位置中的任何一个位置都会使 Hadoop 自动拾取它,效果是在线文件浏览器开始工作:
$HADOOP_HOME/share/hadoop/common
$HADOOP_HOME/share/hadoop/common/lib
$HADOOP_HOME/share/hadoop/mapreduce
$HADOOP_HOME/share/hadoop/mapreduce/lib
不确定将文件放在一个或另一个文件夹中的确切后果。但是,我喜欢尽可能地限制我的 hack,因为我已经有一个单独的配置目录(即 not $HADOOP_HOME/etc/hadoop
),所以我想把它放在那里。将 jar 文件放在任何其他位置也需要我们将此路径添加到HADOOP_CLASSPATH
变量中。
所以,复制粘贴到你的终端:
URL=https://jcenter.bintray.com/javax/activation/javax.activation-api/1.2.0/javax.activation-api-1.2.0.jar
wget $URL -P $HADOOP_CONF_DIR/lib
echo 'export HADOOP_CLASSPATH+=" $HADOOP_CONF_DIR/lib/*.jar"' >> $HADOOP_CONF_DIR/hadoop-env.sh
最后一点,我认为可以肯定地说,除了真正的旧 Java 版本之外,不能指望 Hadoop 在任何东西上都能很好地工作。谷歌搜索显示Java 9、10 和 11仍然存在未处理的票证。所以本质上,这是一个 Hadoop 问题。话虽如此,虽然我们解决了让在线文件浏览器工作的一个问题,但肯定会有许多其他问题。
推荐阅读
- node.js - 如何处理节点/快递中未知数量的参数
- aframe - 如何在附加到 gltf 元素的自定义组件内引用多种材料
- html - 如何将中间项目居中在列表中
- r - 删除为反应性数据框创建的 R 闪亮应用程序中的标记
- linux - java本机内存泄漏故障排除
- python - 为什么我不能将关键字参数传递给 list.index() 方法?
- python - UnicodeWarning: Unicode 相等比较失败
- informix - IBM Informix MacOS v-ids.12.10.FC9DE - 无法识别的选项
- javascript - 我无法设置按钮的背景颜色
- c++ - 如何检查指针后面的对象是否有效或被删除?