大数据动手实践第一步就是要搭建hadoop环境,需要虚拟机虚拟环境,然而繁琐的工作可以变得更简单完成。

这里非常感谢GitHub开源作者的源码贡献。在作者源码基础上进行了dockerfile重写并相关软件的升级和兼容性调整。

项目地址 https://github.com/liuchengts/docker-hadoop使用方式可以参考项目中的说明文档,基本上下载下来执行几个脚本就能完成,非常方便。

所有的环节在开源项目中已经说明了,所以这里我只介绍Dockerfile的部分以及未来如何升级hadoop或者加入自己其他的组件。

Dockerfile:

1、拉取一个ubuntu镜像(centos也是可以的)

2、声明工作空间便于外部定义的配置文件存放。

3、声明启动时可更改的参数,这里我将所有用到的软件版本进行了参数声明,可以根据参数更改软件的版本,注意更改了版本后核实外部的配置文件是否能适用。

4、声明环境变量

5、因为是纯净的系统,所以需要安装必须的一些工具(axel 多线程下载的工具),其他软件就是常规软件了

6、jdk是必须要的,这里使用到了我个人的七牛云公共库,因为现在下载oracle的jdk需要登录了,意味着以前脚本方式下载jdk不再可用

7、下载hadoop官方安装包,安装完成之后复制hadoop配置文件到相应的目录,注意hadoop版本不一样配置会有些差别,尤其是2到3的版本

8、hadoop的hdfs文件系统是在第一次使用必须格式化的,所以这里需要执行以下格式化

9、生成秘钥并且配置免密登录,因为hadoop集群之间是需要相互访问的

10、清理资源,清理掉下载的文件,复制进镜像的配置文件,尽可能减少镜像大小

11、增加相应脚本的执行权限

12、最后启动ssh

基于这个镜像可以做很多事情了,注意项目代码中是用docker run 方式启动的 换成docker-compose也是可以的,这里因为原作者的方式比较方便,所以我采用了原作者的启动方式。

发现一个问题:在Dockerfile中使用相对路径  cat追加文件会不执行,表现为没有权限执行,但是本身是root用户了。进入容器执行又是可以的,这里没有仔细研究,后续搭建完spark之后再来整这个问题