一、概述
形成了安装有vim、jdk、ssh的centos镜像,现在我们在这个的基础上继续搭建haoop。
在正式开始前,了解一些docker容器的操作命令
docker ps:查看活动的容器
docker ps -a:查看所有的容器(包括终止状态的)
docker images:查看镜像
docker run:基于镜像新建一个容器
docker container start 容器id:启动已经终止的容器,但不会进入容器,容器在后台执行
docker container stop 容器id:终止容器
docker container rm 容器id:删除终止状态的容器
docker image rm 镜像id:删除镜像
进入容器有两个命令:attach和exec
docker attach 容器id:进入容器,使用exit退出时,容器会终止
docker exec -it 容器id bash:进入容器,使用exit退出时,容器不会终止(推荐)
二、安装Hadoop
以之前保存的centos_basic 镜像新建一个名为hadoop1的容器,容器中是centos系统,主机名为 hadoop1。
[docker@bigdata ~]$ docker run -it -v /home/docker/build:/root/build --privileged -h hadoop1 --name hadoop1 centos_basic /bin/bash
打开一个新的终端输入命令docker ps查看开启的名为hadoop1的容器
开启系统之后,我们把下载下来的Hadoop安装文件放到共享目录/home/hadoop/build下面,然后在Docker内部centos系统的/root/build目录即可获取到Hadoop安装文件;在Docker内部的CentOS系统安装Hadoop和本地安装一样
放好Hadoop的安装文件后,进入Docker内部centos系统的/root/build目录,解压压缩包
[root@hadoop1 build]# tar -zxvf hadoop-2.7.5.tar.gz -C /root/apps/
具体的安装可以参考http://www.cnblogs.com/qingyunzong/p/8634335.html
三、保存镜像
基于已有的docker容器,做一新的dokcer image.
$ docker commit <container_id> <image_name>
另开一个窗口
举例:
四、搭建基于docker的hadoop集群
开启三个新的终端。然后基于centos/zk_hadoop镜像,创建三个容器,容器名分别为spark1、spark2和spark3
[docker@bigdata ~]$ docker run -it -v /home/docker/build:/root/build --privileged -h spark1 --name spark1 centos/zk_hadoop /bin/bash
[docker@bigdata ~]$ docker run -it -v /home/docker/build:/root/build --privileged -h spark1 --name spark1 centos/zk_hadoop /bin/bash
[docker@bigdata ~]$ docker run -it -v /home/docker/build:/root/build --privileged -h spark3 --name spark3 centos/zk_hadoop /bin/bash
在每个容器主机中开启ssh服务
用ssh localhost 查看ssh服务是否开启成功
/etc/hosts修改本机的ip和主机名信息
[root@spark3 ~]# vi /etc/hosts
可以用如下命令来检测下是否spark1是否可以连上spark2和spark3
修改zookeeper的变化spark2和spark3修改为2和3
[root@spark1 ~]# vi data/zkdata/myid
创建hadoop的数据目录
[root@spark3 ~]# mkdir -p /root/data/hadoopdata/dfs/name [root@spark3 ~]# mkdir -p /root/data/hadoopdata/dfs/data
启动zookeeper
在你配置的各个journalnode节点启动该进程
格式化namenode
[root@spark1 ~]# hadoop namenode -format