前言
一般用docker都是直接下载装有hadoop的镜像,但是这次为了复习一下hadoop的搭建以及linux的使用,决定从零开始搭建一个完全分布式的集群。
容器创建
记得在用VMware的时候,这一步特别麻烦,现在docker两行就搞定了。
首先拉取需要的镜像,我这里以ubuntu:18.04为例子
docker pull ubuntu:18.04
- 1
下载之后可以用docker images
查看一下镜像
然后创建一个容器准备安装jdk、hadoop作为基础版本
docker run -it --name hadoop_base -h hadoop ubuntu:18.04 bash
- 1
成功进入创建的容器
容器配置
必做
apt
这个容器最开始没有vi/vim,所以先更新apt安装一下vim
apt update
然后apt install vim
,还没有修改镜像源,可能有点慢,阻塞了的时候可以敲一下回车;
有了vim就可以去修改镜像源,也可以不修改直接安装ssh服务apt-get install openssh-server
和rsync
apt-get install rsync
;
最好把ping和ifconfig也装上apt-get install iputils-ping
和apt-get install net-tools
,便于测试网络
文件
- 创建目录:在opt目录下创建一个softwares用于放软件的压缩包、一个modules用于放解压的软件。
mkdir /opt/modules
和mkdir /opt/softwares
- 上传文件: 然后将自己的java和hadoop放入容器内,自己的电脑是mac或者linux系统的话cp绝对路径没问题,我的win10出现了问题。
可以先进入文件所在目录cd 文件所在目录
再用cp
docker cp ./hadoop-2.7.2.tar.gz hadoop_base:/opt/softwares
和docker cp ./jdk-8u144-linux-x64.tar.gz hadoop_base:/opt/softwares
接着进入容器可以看到hadoop和jdk已经传到了指定位置
- 解压文件:直接使用
tar -zxvf /opt/softwares/jdk-8u144-linux-x64.tar.gz -C /opt/modules/
和tar -zxvf /opt/softwares/hadoop-2.7.2.tar.gz -C /opt/modules/
进行解压 - 最后就是环境变量的配置
vim /root/.bashrc
,不能放到vim /etc/profile
,因为docker每次重启容器会失效。
# 支持中文
export LANG=C.UTF-8
JAVA_HOME
export JAVA_HOME=/opt/modules/jdk1.8.0_144
export PATH=
P
A
T
H
<
s
p
a
n
c
l
a
s
s
=
"
t
o
k
e
n
p
u
n
c
t
u
a
t
i
o
n
"
>
:
<
/
s
p
a
n
>
PATH<span class="token punctuation">:</span>
PATH<spanclass="tokenpunctuation">:</span>JAVA_HOME/bin:$JAVA_HOME/sbin
HADOOP_HOME
export HADOOP_HOME=/opt/modules/hadoop-2.7.2
export PATH=
P
A
T
H
<
s
p
a
n
c
l
a
s
s
=
"
t
o
k
e
n
p
u
n
c
t
u
a
t
i
o
n
"
>
:
<
/
s
p
a
n
>
PATH<span class="token punctuation">:</span>
PATH<spanclass="tokenpunctuation">:</span>HADOOP_HOME/bin
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
别忘记了source /etc/profile
选做
权限
建议新手跳过这一步,因为我创建了一个用户又给了他root的所有权限,和root使用起来只有名字的区别没有别的区别。
- 由于公司里面会有单独的大数据用户,所以首先准备一个用户叫bduser或者hadoop,我这里用户和密码都是bduser。
- 让刚刚的用户能借用root权限
首先安装sudoapt-get install sudo
,然后修改sudoers的权限chmod u+w /etc/sudoers
进入文件进行修改vim /etc/sudoers
根据自己的用户名加入这一行bduser ALL=NOPASSWD: ALL
:wq
保存退出,一定要还原文件本来的权限chmod u-w /etc/sudoers
这样一来bduser就拥有了root的权限,如果想更真实的模拟生产环境那就换用户,否则还是都用root吧,对于新手友好一些,我接下来也只会用root。
安全
一般是关闭防火墙和安全子系统,在这个镜像里没有就不需要关了。
复制容器
在以上的步骤,完成了一个基础版本的linux,以它为基础可以快速搭建hadoop集群。
docker export hadoop_base > hadoop_base.tar
导出容器
docker import hadoop_base.tar hadoop
导入容器为新的hadoop镜像
docker images
查看一下现在有的镜像
然后就可以用这个镜像创建三个节点的hadoop集群
docker run -it -p 50070:50070 --name hadoop1 -h master hadoop bash
docker run -it -p 8088:8088--name hadoop2 -h slave1 hadoop bash
docker run -it --name hadoop3 -h slave2 hadoop bash
- 1
- 2
- 3
进入每台容器的时候ifconfig
查看一下ip,我这里是.2、.3、.4,记住这个待会配置域名映射需要。
最后通过docker ps -a
看看刚刚创建出的三台容器