使用gethue/hue Docker镜像配置HDFS地址失效求助
解决Hue Docker镜像忽略HDFS配置的问题
我之前踩过这个坑,Hue的Docker镜像默认配置确实会硬绑localhost,完全忽略自定义的配置参数,给你几个亲测有效的解决办法:
方法一:启动时挂载自定义配置文件(推荐)
这种方式一劳永逸,不用每次进容器修改:
- 先在本地创建一个
hue.ini配置文件,把HDFS相关的地址改成你的容器名称(比如你的HDFS NameNode容器叫hdfs-namenode):[hadoop] fs_defaultfs = hdfs://hdfs-namenode:9000 webhdfs_url = http://hdfs-namenode:50070/webhdfs/v1 [hadoop_clusters] [[default]] fs_defaultfs = hdfs://hdfs-namenode:9000 webhdfs_url = http://hdfs-namenode:50070/webhdfs/v1 - 启动Hue容器时,把这个本地文件挂载到容器内的高优先级配置路径:
要是用Docker Compose的话,就在services里加volumes配置:docker run -d -p 8888:8888 -v ./hue.ini:/usr/share/hue/desktop/conf/z-hue.ini gethue/hueservices: hue: image: gethue/hue ports: - "8888:8888" volumes: - ./hue.ini:/usr/share/hue/desktop/conf/z-hue.ini networks: - 你的HDFS集群网络名称
方法二:进入容器修改配置后重启
如果已经启动了容器,临时修改可以这么做:
- 先进入容器的bash终端:
docker exec -it <你的Hue容器ID/名称> bash - 编辑
/usr/share/hue/desktop/conf/z-hue.ini(注意是z-hue.ini,不是默认的hue.ini,这个文件优先级更高),把所有指向localhost的HDFS地址替换成你的NameNode容器名称 - 修改完重启Hue服务:
别用systemctl,官方镜像用supervisor管理服务,用systemctl会报错。supervisorctl restart all
必看的关键注意事项
- 网络互通是前提:确保Hue容器和你的HDFS集群在同一个Docker网络里!用Docker Compose部署的话,只要把Hue加入HDFS集群所在的网络就行,不然就算配置对了也连不上。
- 确认HDFS的WebHDFS开启:BigDataEurope的HDFS镜像默认是开着WebHDFS的,但要确认50070端口没被防火墙挡住,而且NameNode容器的这个端口是对外开放的。
- 别改错配置文件:官方镜像里
z-hue.ini的配置优先级高于默认的hue.ini,改错文件等于白忙活。
内容的提问来源于stack exchange,提问作者laurent exsteens
相关产品推荐
相关产品推荐

