【问题标题】:How to mount HDFS in a Docker container如何在 Docker 容器中挂载 HDFS
【发布时间】:2016-06-09 20:59:42
【问题描述】:

我在 Docker 容器中制作了一个 Dockerized 应用程序。我打算让应用程序能够从我们的 HDFS 访问文件。 Docker 映像将部署在我们通过 Marathon-Mesos 安装 HDFS 的同一集群上。

下面是 POST 到 Marathon 的 json。看来我的应用程序能够在 HDFS 中读取和写入文件。有人可以评论一下这个的安全性吗?我的应用程序更改的文件是否也会在 HDFS 中正确更改?我用谷歌搜索并没有找到任何类似的方法......

{
  "id": "/ipython-test",
  "cmd": null,
  "cpus": 1,
  "mem": 1024,
  "disk": 0,
  "instances": 1,
  "container": {
    "type": "DOCKER",
    "volumes": [
      {
        "containerPath": "/home",
        "hostPath": "/hadoop/hdfs-mount",
        "mode": "RW"
      }
    ],
    "docker": {
      "image": "my/image",
      "network": "BRIDGE",
      "portMappings": [
        {
          "containerPort": 8888,
          "hostPort": 0,
          "servicePort": 10061,
          "protocol": "tcp",
        }
      ],
      "privileged": false,
      "parameters": [],
      "forcePullImage": true
    }
  },
  "portDefinitions": [
    {
      "port": 10061,
      "protocol": "tcp",
      "labels": {}
    }
  ]
}

【问题讨论】:

    标签: hadoop docker hdfs mesos marathon


    【解决方案1】:

    您可以查看Docker volume docs

    基本上,app.json 中的volumes 定义将触发带有标志-v /hadoop/hdfs-mount:/home:RW 的Docker 映像的启动,这意味着主机路径以/home 以读写模式映射到Docker 容器.

    如果您通过 SSH 连接到运行应用程序的节点并执行docker inspect <containerId>,您应该能够验证这一点。

    另见

    【讨论】:

    • 如果我的 Docker 镜像没有配置为在 HDFS 中写入文件(没有安装 hadoop 客户端),文件仍然可以正确写入 HDFS 吗?
    猜你喜欢
    • 1970-01-01
    • 2016-08-01
    • 2020-01-02
    • 1970-01-01
    • 1970-01-01
    • 2017-07-21
    • 2017-08-14
    • 2014-06-19
    • 1970-01-01
    相关资源
    最近更新 更多