使用docker部署hadoop集群的详细教程
最近要在公司里搭建一个hadoop测试集群,于是采用docker来快速部署hadoop集群。
0. 写在前面
网上也已经有很多教程了,但是其中都有不少坑,在此记录一下自己安装的过程。
目标:使用docker搭建一个一主两从三台机器的hadoop2.7.7版本的集群
准备:
首先要有一台内存8g以上的centos7机器,我用的是阿里云主机。
其次将jdk和hadoop包上传到服务器中。
我安装的是hadoop2.7.7。包给大家准备好了,链接:https://pan.baidu.com/s/15n_w-1rqod2cuzhfvbkh4g 提取码:vmzw。
1. 步骤
大致分以下几步:
- 安装docker
- 基础环境准备
- 配置网络,并启动docker容器
- 配置host及ssh免密登录
- 安装配置hadoop
1.1 安装docker
依次执行如下步骤安装docker。如果有docker环境的可以跳过。
1.2 基础环境准备
1.2.1 创建基础的centos7镜像拉取官方centos7镜像
通过build dockfile生成带ssh功能的centos镜像
创建dockerfile文件
将如下内容写入dockerfile
上述内容大概意思是:以centos镜像为基础,设置密码为wqe123,安装ssh服务并启动
构建dockerfile
将生成一个名为centos7-ssh
的镜像,可以通过docker images
查看
1.2.2 生成有hadoop和jdk环境的镜像
- 将准备好的包放在当前目录下。
hadoop-2.7.7.tar.gz
和jdk-8u202-linux-x64.tar.gz
- 通过build dockfile生成带hadoop和jdk环境的centos镜像
刚才已经创建了一个dockerfile了,先将他移开。mv dockerfile dockerfile.bak
创建dockerfile
将以下内容写入:
上述内容大概意思是:以上面生成的centos7-ssh为基础,将hadoop和jdk包放进去,然后配好环境变量。
构建dockerfile
将生成一个名为hadoop的镜像
1.3 配置网络,并启动docker容器
因为集群间必须要能网络连通,所以要先配置好网络。
创建网络
以上命令创建了一个名为hadoop-br
的bridge类型的网络
启动docker时指定网络
以上命令启动了3台机器,网络都指定为hadoop-br
,hadoop1还开启了端口映射。
查看网络情况
执行以上命令就可以看到对应的网络信息:
我们可以得知3台机器对应的ip:
登录docker容器,互相之间就可以ping通了。
1.4 配置host及ssh免密登录
1.4.1 配置host
分别在每台修改每台机器的host
将以下内容写入(注:docker分出来的ip对于每个人可能不一样,填你自己的):
1.4.2 ssh免密登录
因为上面在镜像中已经安装了ssh服务,所以直接分别在每台机器上执行以下命令:
1.4.3 测试是否配置成功
1.5 安装配置hadoop
1.5.1 在hadoop1上操作
进入hadoop1
创建一些文件夹,一会在配置中要用到
切换到hadoop配置的目录
编辑core-site.xml
编辑hdfs-site.xml
编辑mapred-site.xml
mapred-site.xml默认不存在,要执行cp mapred-site.xml.template mapred-site.xml
编辑yarn-site.xml
编辑slaves
我这里把hadoop1当成主节点,hadoop2、3作为从节点
把文件拷贝到hadoop2和hadoop3上
依次执行以下命令:
1.5.2 在每台机器上操作
分别连接每台机器
配置hadoop sbin目录的环境变量
因为hadoop bin目录在之前创建镜像时就配好了,但是sbin目录没有配,所以要单独配置。分配为每台机器配置:
追加如下内容:
执行:
1.5.3 启动hadoop
在hadoop1上执行以下命令:
格式化hdfs
一键启动
不出错的话,就可以庆祝一下了。出错的话,加油。
1.6 测试使用hadoopjps
上传文件
由于是云服务器,不想配端口,就不看ui界面了。
2. 最后
以上是我安装成功之后总结的过程,应该没有问题,也可能有遗漏。
3. 参考
到此这篇关于使用docker部署hadoop集群的详细教程的文章就介绍到这了,更多相关docker部署hadoop集群内容请搜索以前的文章或继续浏览下面的相关文章希望大家以后多多支持!
下一篇: js实现中文实时时钟