像Hadoop这样的工具需要显式指定worker的名称(文档中的Slaves File部分),但是当与Docker Swarm一起部署时,它会自动分配容器名称,因此workers文件不再工作,因为其中的名称不存在。是否有任何方法可以避免此文件,或者至少为容器分配别名(独立于容器名称)以使其工作?
也许我不能使用docker-compose.yml
文件,我必须在集群上手动创建服务…对于这个问题,我将非常感激。
Hadoop文档烂透了…显然,如果您在core-site.xml
文件中设置主节点的别名,则可以省略workers
文件。以下是我执行的步骤:
- 定制
core-site.xml
文件(在我的docker-compose.yml
文件中,我将我的主服务命名为nodemaster)。这个文件必须在主节点和工作节点中:
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://nodemaster:9000</value>
</property>
<property>
<name>fs.default.name</name>
<value>hdfs://nodemaster:9000</value>
</property>
</configuration>
</configuration>
- 现在当你运行:
start-dfs.sh
start-yarn.sh
我将自动连接到主机