- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我无法在 docker swarm 中使我的 HDFS 设置工作。
为了理解这个问题,我将我的设置减少到最低限度:
version: '3'
services:
namenode:
image: uhopper/hadoop-namenode
hostname: namenode
ports:
- "50070:50070"
- "8020:8020"
volumes:
- /userdata/namenode:/hadoop/dfs/name
environment:
- CLUSTER_NAME=hadoop-cluster
datanode:
image: uhopper/hadoop-datanode
depends_on:
- namenode
volumes:
- /userdata/datanode:/hadoop/dfs/data
environment:
- CORE_CONF_fs_defaultFS=hdfs://namenode:8020
<configuration>
<property><name>fs.defaultFS</name><value>hdfs://0.0.0.0:8020</value></property>
</configuration>
hdfs dfs -put test.txt /test.txt
docker swarm init
docker stack deploy --compose-file docker-compose.yml hadoop
INFO hdfs.DataStreamer: Exception in createBlockOutputStream
org.apache.hadoop.net.ConnectTimeoutException: 60000 millis timeout while waiting for channel to be ready for connect. ch : java.nio.channels.SocketChannel[connection-pending remote=/x.x.x.x:50010]
at org.apache.hadoop.net.NetUtils.connect(NetUtils.java:534)
at org.apache.hadoop.hdfs.DataStreamer.createSocketForPipeline(DataStreamer.java:259)
at org.apache.hadoop.hdfs.DataStreamer.createBlockOutputStream(DataStreamer.java:1692)
at org.apache.hadoop.hdfs.DataStreamer.nextBlockOutputStream(DataStreamer.java:1648)
at org.apache.hadoop.hdfs.DataStreamer.run(DataStreamer.java:704)
18/06/14 17:29:41 WARN hdfs.DataStreamer: Abandoning BP-1801474405-10.0.0.4-1528990089179:blk_1073741825_1001
18/06/14 17:29:41 WARN hdfs.DataStreamer: Excluding datanode DatanodeInfoWithStorage[10.0.0.6:50010,DS-d7d71735-7099-4aa9-8394-c9eccc325806,DISK]
18/06/14 17:29:41 WARN hdfs.DataStreamer: DataStreamer Exception
org.apache.hadoop.ipc.RemoteException(java.io.IOException): File /test.txt._COPYING_ could only be replicated to 0 nodes instead of minReplication (=1). There are 1 datanode(s) running and 1 node(s) are excluded in this operation.
最佳答案
整个困惑源于使用覆盖网络的 docker swarm 之间的交互以及 HDFS 名称节点如何跟踪其数据节点。 namenode 根据 datanode 的覆盖网络 IPs 记录 datanode IPs/hostnames。当 HDFS 客户端直接在数据节点上请求读/写操作时,名称节点会根据覆盖网络报告数据节点的 IP/主机名。由于外部客户端无法访问覆盖网络,因此任何 rw 操作都将失败。
我使用的最终解决方案(经过大量努力使覆盖网络正常工作)是让 HDFS 服务使用主机网络。这是撰写文件中的一个片段:
version: '3.7'
x-deploy_default: &deploy_default
mode: replicated
replicas: 1
placement:
constraints:
- node.role == manager
restart_policy:
condition: any
delay: 5s
services:
hdfs_namenode:
deploy:
<<: *deploy_default
networks:
hostnet: {}
volumes:
- hdfs_namenode:/hadoop-3.2.0/var/name_node
command:
namenode -fs hdfs://${PRIMARY_HOST}:9000
image: hadoop:3.2.0
hdfs_datanode:
deploy:
mode: global
networks:
hostnet: {}
volumes:
- hdfs_datanode:/hadoop-3.2.0/var/data_node
command:
datanode -fs hdfs://${PRIMARY_HOST}:9000
image: hadoop:3.2.0
volumes:
hdfs_namenode:
hdfs_datanode:
networks:
hostnet:
external: true
name: host
关于docker - 如何使 HDFS 在 docker swarm 中工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50861281/
当我将新节点加入现有节点时,docker swarm 抛出错误“swarm already part of swarm” 我在我的本地机器上运行 docker swarm 并尝试初始化 swarm 并
我经常遇到问题,因为我在具有多个节点的 docker swarm 上部署的服务无法启动,并且没有生成可以使用 docker service logs {serviceName} 查看的日志。 服务无法
我在同一个子网中有 4 个虚拟机,它们是 docker-swarm 的一部分。现在我想连接另一个位于不同国家(不同子网)的节点(虚拟机)。我是一个 IP 菜鸟,我很难在 docker 中设置一个能够处
我想将堆栈部署到 Docker 群,我希望每个节点都运行给定的服务。 我查看了 deploy.placement 配置,我发现的最接近的选项是放置首选项 spread=node.label.abc ,
初始化集群模式: root@ip-172-31-44-207:/home/ubuntu# docker swarm init --advertise-addr 172.31.44.207 Swarm
这个命令的初始化群有什么区别: docker swarm init --advertise-addr docker -H swarm join --token 和这个: docker run s
我正在考虑构建一个 Docker Swarm 集群。为了让事情既简单又相对容错,我想简单地运行 3 个节点作为管理器。 不使用任何专用工作节点时有什么权衡?有什么我应该注意的可能不明显的吗? 我找到了
我最感兴趣的是我从docker node ls得到的信息. Docker 将加入的节点的信息存储在哪里? 最佳答案 docker 把加入的节点的信息存储在哪里? 资料来自docker node ls可
我想知道是否有人可以区分这两者。它们都有相似的命名。 最佳答案 Docker Swarm是一个单独的产品,您可以使用它来集群多个 Docker 主机。在 Docker 版本 1.12 之前,它是集群主
我有一个带有两个节点的 Swarm,我正在运行 cadvisor 作为全局服务。我得到指标,grafana/Promethues 可以抓取它们。但是我的数字是错误的。当我使用 docker 命令行工具
我正在尝试连接到 docker 事件总线以监听 swarm 上发生的各种事件,例如节点离开和加入集群、创建的服务等。 问题。 是否有可能在群体级别获得此类信息? 如果是这样,是否dockerpy库可用
我正在使用最新的 mac 版 docker (17.09.0-ce),当我运行 docker-machine create --help 时它说... --swarm-master Configur
我创建了一个 docker swarm 集群,其中包含 4 个节点 2 是 swarm manager(swarm 支持多个管理器)我知道如果当前管理器节点关闭,然后第二个管理器扮演成为集群管理器的角
为了测试我们的托管构建,我正在尝试建立一个与主机和外部世界隔离的 docker 网络。 我有以下 docker-compose.yml (灵感来自 this forum post ): version
在创建 docker swarm 集群时,我遇到了以下两个命令: docker run swarm create docker 群初始化 两者都用于初始化 Docker swarm 集群。任何人都可以
问题陈述:我需要通过 JMX 连接到 docker swarm 服务中的特定容器。服务未在任何端口上公开,因此我无法通过直接点击公开端口上的 docker 基板来访问 JMX。 另外,如果服务被暴露,
目前我可以看到Spring Cloud Data Flow有这些服务器:Local、YARN、Cloud Foundry、Mesos和Kubernetes;是否有支持 Swarm 的计划? 最佳答案
我看到与 described here 相同的问题和 here .我已经尝试了在这两种情况下有效的所有方法,但都无济于事——我仍然看到相同的行为。有人可以提供我可以尝试的替代方案吗? 我的设置: 我正
在一个 swarm 中拥有多个 docker 机器(一个管理器和许多节点)与在一个 swarm 中拥有多个 docker 服务副本之间到底有什么区别? 最佳答案 好吧,由于没有人回答这个问题,我继续在
当在多台机器的 Docker Swarm 集群中运行时,Traefik 不会创建前端或后端。 我按照以下教程在我的 MacBook(操作系统版本:10.14.2 (18C54))上创建了一个 Dock
我是一名优秀的程序员,十分优秀!