基于docker虚拟化创建hadoop集群
最近想用hadoop做一个测试,与性能无关的测试,但是可与屌丝的命,手头没有太多机器,也租不起云主机。这里使用docker进行虚拟化,并搭建hadoop集群,在这里将过程记录如下。
首先安装docker,这里不作详细介绍,sudo apt-get install docker;安装完成之后,我们可以发现在ifconfig中多处了一项docker0,其实这就是docker基于linux的namespace创建的一个虚拟网桥,用于承接我们虚拟机到主机之间的网络。
第一: 我们还是应该明白一些基础的知识,否则只是简单的操作的话,似乎没什么太大的意思了。首先介绍两个概念,镜像,容器。什么是镜像,其实和大家装系统的时候使用的镜像是一个意思,就是经过打包的系统文件。docker有专门的仓库来存储这些镜像,我们可以通过docker search <key>来查询我们所需要的镜像文件。例如: docker search ubuntu。什么是容器,顾名思义,容易就是用来承载东西的,我们就讲我们下载的镜像放到容器中进行执行的。
第二: 下载镜像文件,如第一中说的,我们下载原生的ubuntu,这里我们可以发现原生的ubuntu就130M。
第三: 我们使用命令docker run 来将系统运行起来,这个过程其实就是从镜像到容器的过程,这里有几个参数我们需要注意一下,
-h: 指定容器的hostname,给容器指定的hostname是相当合理的一个操作,否则ssh的时候你就要每次去找一长串hostname了。
-u: 指定运行的user,但是初始的时候应该只有root,现在可以忽略。
-w: 指定user的work path ,同上,现在可忽略。
--name: 指定容器的名字,这里也挺便捷的,否则我们就只能使用容器id来运行了。
但是进去之后我们发现,集成的命令少之又少,就连vi都没有。没办法装吧,vim,sudo,ssh......好多。装完之后我们需要为系统创建用户useradd --help,各位好好看看吧。然后在user path下创建hadoop文件夹并下载hadoop到文件夹。
第四: 以上操作都完成了,想必大家现在不想再讲1-3的操作再重复一遍了吧?那么我们就需要了解另一个知识点,打包: 这里的含义是将我们的容器打包为镜像,命令伪docker commit <容器id> <镜像name> 。完成之后我们发现docker ps -a命令下多出了一项,3.0G!!!!!!!
第五: 使用我们自己的镜像文件创建容器,这一步我们就可以使用第三中使用到的命令了。给出一个完整的例子:docker run -it -h hadoop_namenode -u libo -w /home/libo --name hadoop_namenode hadoop_ubuntu。这样我们就依赖hadoop_ubuntu创建了一个名为hadoop_namenode的虚拟机。至于需要几个虚拟机,有你自己决定。
第五: 本来这一点不打算做介绍的,但是这里还是说一下,就是在ssh传递公钥文件的时候总是出现connection refused!这个错误,当时就觉得应该是ssh服务的问题,然后ps -aux|grep "ssh" ,果真没有。我们需要启动ssh服务: sudo /etc/init.d/ssh start来启动。
第六: 接下来的操作就是对hadoop的配置了,这一节我们会抽时间再写一篇进行记录。