hadoop搭建以及问题

来源:互联网 发布:js正则判断正整数 编辑:程序博客网 时间:2024/06/16 17:12

这周主要是搭建了hadoop的学习环境

  1. mac本地docker + hadoop 1 master 2slave 伪分布式集群

  2. mac本地docker hadoop 单机

  3. virtualbox centos7.2 搭建的hadoop单机

在搭建过程中遇到了很多问题所幸网上答案很多在这里先总结一下

问题

1. 无法上传

在搭建mac docker hadoop单机的时候暴露了容器的50010,50070,9000,8088,22端口,我用java去调用hdfs API的时候,如果是对文件夹的操作,没有问题。但是如果是上传下载文件,那么会出现访问不到的问题,经过分析,发现是namenode将本地的ip地址加50010端口返回给了我,所以我的请求地址是:

172.21.1.5:50010

这样会出问题,因为mac中不能去直接访问docker容器的IP, 你可以尝试 ping一下,是ping不通的。
查看了一下容器中的 hosts文件,发现我的主机名对应的ip地址为docker给容器分配的地址。 如果你在容器中暴露了50010端口,那么访问127.0.0.1:50010是可以访问的,这个时候可以通过修改容器中的
hostname : ip 来进行解决这个问题。 需要注意的是,如果是多结点的情况,该方案行不通。

解决方案: 修改容器中的 hosts 配置。

2 .虚拟机中端口暴露问题

部署在虚拟中的hadoop出现了9000端口无法访问的情况。

    netstat -ntl 查看端口开启

发现9000 8080端口都是开启的,但是监听地址是本地

    127.0.0.1 9000    127.0.0.1 8088

解决方法就是 将hosts中对应的主机名的地址改为 0.0.0.0
或者将主机名地址改为 本机所在ip地址。
推荐改为ip地址,因为虚拟机中 单机hadoop 用了 0.0.0.0那么java调用api 也会默认去127.0.0.1:50010去操作datanode,这个时候会找不到datanode的。

ps 具体的Dockerfile 搭建过程,其实网上很多。
问题也都是差不多
总结一下我遇到的问题

  1. ssh无法访问,查看一下宿主机有没有ssh,查看远程机器有没有sshd服务,查看防火墙是否关闭。
  2. datanode开启不了,查看namenode 和datanode的集群id是否一样。
  3. start-all.sh启动不了,查看dfs文件夹,tmp文件夹的权限是否是root,可以曾经用root用户跑过hadoop,但是现在不是root用户
  4. 无法上传文件, 查看调用的ip是否能ping通。