【问题标题】:hdfsBuilderConnect error while using tfserving load model from hdfs使用来自 hdfs 的 tfserving 负载模型时出现 hdfsBuilderConnect 错误
【发布时间】:2021-01-07 09:50:27
【问题描述】:

有我的环境信息:

  • TensorFlow Serving 1.14 版
  • os mac10.15.7

我想使用 tfserving 从 hdfs 加载模块。

当我构建一个 tensorflow-serving:hadoop docker 镜像时,像这样:

FROM tensorflow/serving:2.2.0

RUN apt update && apt install -y openjdk-8-jre
RUN mkdir /opt/hadoop-2.8.2
COPY /hadoop-2.8.2 /opt/hadoop-2.8.2


ENV JAVA_HOME /usr/lib/jvm/java-8-openjdk-amd64
ENV HADOOP_HDFS_HOME /opt/hadoop-2.8.2
ENV HADOOP_HOME /opt/hadoop-2.8.2
ENV LD_LIBRARY_PATH 
${LD_LIBRARY_PATH}:${JAVA_HOME}/jre/lib/amd64/server
# ENV PATH $PATH:$HADOOP_HOME/sbin:$HADOOP_HOME/bin
RUN echo '#!/bin/bash \n\n\
CLASSPATH=(${HADOOP_HDFS_HOME}/bin/hadoop classpath --glob) 
tensorflow_model_server --port=8500 --rest_api_port=9000 \
--model_name=${MODEL_NAME} -- 
model_base_path=${MODEL_BASE_PATH}/${MODEL_NAME} \
"@"' > /usr/bin/tf_serving_entrypoint.sh \
&& chmod +x /usr/bin/tf_serving_entrypoint.sh

EXPOSE 8500
EXPOSE 9000
ENTRYPOINT ["/usr/bin/tf_serving_entrypoint.sh"]

然后运行:

docker run -p 9001:9000 --name tensorflow-serving-11 -e MODEL_NAME=tfrest -e MODEL_BASE_PATH=hdfs://ip:port/user/cess2_test/workspace/cess/models -t tensorflow_serving:1.14-hadoop-2.8.2

我遇到了这个问题。 ps:我已经修改了hadoop-2.8.2中的hadoop配置

hdfsBuilderConnect(forceNewInstance=0, nn=ip:port, port=0, kerbTicketCachePath=(NULL), userName=(NULL)) 
error:(unable to get stack trace for java.lang.NoClassDefFoundError exception: ExceptionUtils::getStackTrace error.)

有什么建议可以解决这个问题吗? 谢谢

【问题讨论】:

    标签: tensorflow machine-learning deep-learning tensorflow-serving


    【解决方案1】:

    我通过在类路径中添加 hadoop 绝对路径解决了这个问题。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-03-25
      • 2022-06-21
      • 1970-01-01
      • 2012-03-04
      • 1970-01-01
      • 1970-01-01
      • 2020-11-22
      相关资源
      最近更新 更多