傻瓜教程之docker搭建hadoop伪分布式


安装hadoop镜像

  1. 在docker中查找hadoop 镜像
    docker search hadoop
    在这里插入图片描述

  2. 我们选择star数量最多的镜像拉取
    docker pull docker.io/sequenceiq/hadoop-docker
    在这里插入图片描述

  3. 查看镜像
    docker images
    在这里插入图片描述

  4. 创建master节点
    docker run --name hadoop1 -d -h master docker.io/sequenceiq/hadoop-docker
    在这里插入图片描述
    参数说明:
    --name :设置容器的名称 -d:在后台运行 -h:为容器设置主机名

  5. 以此方法创建slave1和slave2节点
    docker run --name hadoop2 -d -h slave1 docker.io/sequenceiq/hadoop-docker
    在这里插入图片描述
    docker run --name hadoop3 -d -h slave2 docker.io/sequenceiq/hadoop-docker
    在这里插入图片描述

  6. 查看容器
    docker ps -s
    在这里插入图片描述

  7. 进入容器查看jdk
    docker exec -it hadoop1 bash
    在这里插入图片描述

  8. 配置ssh生成秘钥,所有的节点都要配置
    进入容器后,启动ssh
    /etc/init.d/sshd start
    在这里插入图片描述

  9. 生成秘钥
    ssh-keygen -t rsa
    在这里插入图片描述

  10. 进入/root/.ssh/目录
    cd /root/.ssh/
    在这里插入图片描述

  11. 复制公钥到authorized_keys中
    cat id_rsa.pub > authorized_keys
    在这里插入图片描述

  12. 查看authorized_keys
    cat authorized_keys
    在这里插入图片描述

  13. 其他节点(hadoop2、hadoop3)循环执行7~12步骤(过程省略,只附图)
    在这里插入图片描述
    在这里插入图片描述

  14. 将容器中的公钥向其余节点进行复制,三个节点的公钥应该都一样,且里面都有三个。
    在这里插入图片描述

  15. 查看ip地址
    使用ifconfig命令查看每个容器ip地址
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

  16. 为每个容器设置地址vi /etc/hosts
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

  17. 测试一下:(记得登录后要用exit退出才能回到根节点)
    ssh master
    在这里插入图片描述
    ssh slave1
    在这里插入图片描述
    ssh slave2
    在这里插入图片描述


配置hadoop(在master节点上)

  1. 进入容器查找 hadoop-env.sh存放位置
    find / -name hadoop-env.sh
    在这里插入图片描述
    配置文件的目录一般都在/usr/local/hadoop-2.7.0/etc/hadoop下面

  2. 进入/usr/local/hadoop-2.7.0/etc/hadoop目录下
    cd /usr/local/hadoop-2.7.0/etc/hadoop
    在这里插入图片描述

  3. 查看 hadoop-env.sh文件(已经帮我们配置好了)
    vi hadoop-env.sh
    在这里插入图片描述


  1. 查找core-site.xml
    find / -name core-site.xml
    在这里插入图片描述
  2. 进入/usr/local/hadoop-2.7.0/etc/hadoop/目录下
    cd /usr/local/hadoop-2.7.0/etc/hadoop/
    在这里插入图片描述
  3. 查看并编辑core-site.xml文件
    vi core-site.xml
    在这里插入图片描述
  4. 添加如下配置:
    <property>
     	 <name>hadoop.tmp.dir</name>
      	<value>/hadoop/tmp</value>
    </property>
    
    在这里插入图片描述

  1. 查找hdfs-site.xml
    find / -name hdfs-site.xml
    在这里插入图片描述
  2. 进入/usr/local/hadoop-2.7.0/etc/hadoop/目录下
    cd /usr/local/hadoop-2.7.0/etc/hadoop/
    在这里插入图片描述
  3. 配置hdfs-site.xml
    vi hdfs-site.xml
    在这里插入图片描述
    slave数量要大于等于备份的数量,否则会报错,当前是2个slave,所以满足条件。

  1. 查找mapred-site.xml
    find / -name mapred-site.xml
    在这里插入图片描述
  2. 进入/usr/local/hadoop-2.7.0/etc/hadoop/目录下
    cd /usr/local/hadoop-2.7.0/etc/hadoop/
    在这里插入图片描述
  3. 配置mapred-site.xml(已经帮我们配置好了)
    vi mapred-site.xml
    在这里插入图片描述

  1. 查找yarn-site.xml
    find / -name yarn-site.xml
    在这里插入图片描述

  2. 进入/usr/local/hadoop-2.7.0/etc/hadoop/目录下
    cd /usr/local/hadoop-2.7.0/etc/hadoop/
    在这里插入图片描述

  3. 配置yarn-site.xml
    vi yarn-site.xml
    在这里插入图片描述

  4. 增加以下配置

    <property>
            <name>yarn.resourcemanager.address</name>
            <value>master:8032</value>
    </property>
    
    <property>
            <name>yarn.nodemanager.aux-services</name>
            <value>mapreduce_shuffle</value>
    </property>
    
    <property>
            <name>yarn.nodemanager.aux-services.mapreduce.shuffle.class</name>
            <value>org.apache.hadoop.mapred.ShuffleHandler</value>
    </property>
    
    <property>
            <name>yarn.resourcemanager.scheduler.address</name>
            <value>master:8030</value>
    </property>
    
    <property>
            <name>yarn.resourcemanager.resource-tracker.address</name>
            <value>master:8031</value>
    </property>
    
    <property>
            <name>yarn.resourcemanager.admin.address</name>
            <value>master:8033</value>
    </property>
    
    <property>
            <name>yarn.resourcemanager.webapp.address</name>
            <value>master:8089</value>
    </property>
    

    在这里插入图片描述


将这些参数发送到其它节点(slave1/slave2)

scp /usr/local/hadoop-2.7.0/etc/hadoop/yarn-site.xml slave1:/usr/local/hadoop-2.7.0/etc/hadoop/
scp /usr/local/hadoop-2.7.0/etc/hadoop/yarn-site.xml slave2:/usr/local/hadoop-2.7.0/etc/hadoop/
在这里插入图片描述


运行hadoop

  1. 查找hadoop
    find / -name hadoop
    在这里插入图片描述
  2. 进入/usr/local/hadoop-2.7.0/bin/目录
    cd /usr/local/hadoop-2.7.0/bin/
    在这里插入图片描述
  3. 在master上格式化namenode
    ./hadoop namenode -format
    如果出现以下问题:
    在这里插入图片描述
    请注意:
    如果在日志信息中能看到这一行,则说明 namenode格式化成功:common Storage: Storage directory /data/hadoop repo/dfs/name has been successfully formatted,大家可以把日志信息粘贴出来,Ctrl+F查找一下关键字,看是否有这句话,如果有,代表格式化namenode成功。
  4. 在master上启动集群
    cd /usr/local/hadoop-2.7.0/sbin/
    ./start-all.sh
    如果报错告诉端口被占用,那么就先停止,然后再启动:
    ./stop-all.sh
    ./start-all.sh
    5.jps查看进程,查看到,说明已启动
    在这里插入图片描述

版权声明:本文为qq_38129062原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。