centos8 安装docker_mac上基于docker搭建hadoop集群

1、拉取centos8的镜像

在用户目录下:

c2baa896171d46f1d7482bb8f0dd0c52.png

docker拉取centos

2、构建集群子网

按照集群的架构,创建容器时需要设置固定IP,所以先要在docker使用如下命令创建固定IP的子网

docker network create --subnet=172.18.0.0/16 netgroup

对各个节点指定好功能 maseter为主节点,hadoop01 为从节点和datanode hadoop02 为yarn主节点负责各个节点的资源调度,

hadoop02,hadoop03为datanode节点

OS

hostname

IP

Centos8

hadoop-master

172.18.0.2

namenode

Centos8

hadoop01

172.18.0.3

secondnamenode datanode

Centos8

hadoop02

172.18.0.4

Yarn resourcemanger datanode

Centos8

hadoop03

172.18.0.5

datanode

3、启动容器(注意要开放的端口提前在这里配置好)

docker run -d --privileged -ti -v /sys/fs/cgroup:/sys/fs/cgroup --name hadoop_master -h hadoop-master --net netgroup --ip 172.18.0.2 -P -p 50070:50070 -p 8088:8088 centos:centos8-hadoop-master /usr/sbin/init

docker run -d --privileged -ti -v /sys/fs/cgroup:/sys/fs/cgroup --name hadoop-01 -h hadoop01 --net netgroup --ip 172.18.0.3 -P centos:centos8-hadoop01 /usr/sbin/init

docker run -d --privileged -ti -v /sys/fs/cgroup:/sys/fs/cgroup --name hadoop-02 -h hadoop02 --net netgroup --ip 172.18.0.4 -P centos:centos8-hadoop02 /usr/sbin/init

docker run -d --privileged -ti -v /sys/fs/cgroup:/sys/fs/cgroup --name hadoop-03 -h hadoop03 --net netgroup --ip 172.18.0.5 -P centos:centos8-hadoop03 /usr/sbin/init

4、在每一容器上部署Openssh

#cluster-master需要修改配置文件(特殊)

#cluster-master

#换源

[root@hadoop-master /]# yum -y install wget

[root@hadoop-master /]# yum makecache

#安装openssh

[root@hadoop-master /]# yum -y install openssh openssh-server openssh-clients

[root@hadoop-master /]# systemctl start sshd

####ssh自动接受新的公钥

####master设置ssh登录自动添加kown_hosts

[root@hadoop-master /]# vi /etc/ssh/ssh_config

将原来的StrictHostKeyChecking ask

设置StrictHostKeyChecking为no

保存

[root@hadoop-master /]# systemctl restart sshd

接着分别对slaves安装openssh

[root@hadoop01 /]# yum -y install wget

[root@hadoop01 /]# yum makecache

#安装openssh

[root@hadoop01 /]#yum -y install openssh openssh-server openssh-clients

[root@hadoop01 /]# systemctl start sshd

分别在hadoop02,hadoop03重复以上步骤,

cluster-master公钥分发

在master机上执行ssh-keygen -t rsa并一路回车,完成之后会生成~/.ssh目录,目录下有id_rsa(私钥文件)和id_rsa.pub(公钥文件),再将id_rsa.pub重定向到文件authorized_keys

ssh-keygen -t rsa

#一路回车

[root@cluster-master /]# cat ~/.ssh/id_rsa.pub > ~/.ssh/authorized_keys

文件生成之后用scp将公钥文件分发到集群slave主机

[root@cluster-master /]# ssh root@cluster-slave1 'mkdir ~/.ssh'

[root@cluster-master /]# scp ~/.ssh/authorized_keys root@cluster-slave1:~/.ssh

[root@cluster-master /]# ssh root@cluster-slave2 'mkdir ~/.ssh'

[root@cluster-master /]# scp ~/.ssh/authorized_keys root@cluster-slave2:~/.ssh

[root@cluster-master /]# ssh root@cluster-slave3 'mkdir ~/.ssh'

[root@cluster-master /]# scp ~/.ssh/authorized_keys root@cluster-slave3:~/.ssh

分发完成之后测试(ssh root@cluster-slave1)是否已经可以免输入密码登录。另外本次实验使用到了root用户,如果在其他用户下使用免密码登录,需要确保用户对~/.ssh/authorized_keys文件有可操作权限。

Ansible安装(负责对从节点进行同步文件操作)

[root@cluster-master /]# yum -y install epel-release

[root@cluster-master /]# yum -y install ansible

#这样的话ansible会被安装到/etc/ansible目录下

此时我们再去编辑ansible的hosts文件

vi /etc/ansible/hosts

hosts文件内容如下

[cluster]

hadoop-master

hadoop01

hadoop02

hadoop03

[master]

hadoop-master

[slaves]

hadoop01

hadoop02

hadoop03

进入master节点机器

docker exec -it hadoop_master /bin/bash

配置docker容器hosts

由于/etc/hosts文件在容器启动时被重写,直接修改内容在容器重启后不能保留,为了让容器在重启之后获取集群hosts,使用了一种启动容器后重写hosts的方法。

需要在~/.bashrc中追加以下指令

:>/etc/hosts

cat >>/etc/hosts<

127.0.0.1 localhost

172.18.0.2 cluster-master

172.18.0.3 cluster-slave1

172.18.0.4 cluster-slave2

172.18.0.5 cluster-slave3

EOF

source ~/.bashrc

使配置文件生效,可以看到/etc/hosts文件已经被改为需要的内容

[root@cluster-master ansible]# cat /etc/hosts

127.0.0.1 localhost

172.18.0.2 cluster-master

172.18.0.3 cluster-slave1

172.18.0.4 cluster-slave2

172.18.0.5 cluster-slave3

用ansible分发.bashrc至集群slave下

ansible cluster -m copy -a "src=~/.bashrc dest=~/"

到这里好不容易到了搭建Hadoop这个步骤,感觉博主理解的东西真的是好多啊从docker一直到ansible-playbook,真是不容易啊.

Hadoop

在集群中安装openjdk

使用ansible在在集群中安装openjdk

[root@cluster-master ansible]# ansible cluster -m yum -a "name=java-1.8.0-openjdk,java-1.8.0-openjdk-devel state=latest"

在cluster-master上安装hadoop

将hadoop安装包下载至/opt目录下

这里采用Hadoop 2.x系列最稳定的stable版本2.7.4 你可以选择更新成hadoop-3.x beta版本 或者 hadoop 2.8.2,只要你能驾驭的了

[root@cluster-master opt]# wget http://mirrors.tuna.tsinghua.edu.cn/apache/hadoop/common/hadoop-2.7.4/hadoop-2.7.4.tar.gz

下载完成之后解压安装包,并创建链接文件

[root@cluster-master opt]# tar -xzvf hadoop-2.7.4.tar.gz

[root@cluster-master opt]# ln -s hadoop-2.7.4 hadoop

设置java和hadoop环境变量(.bashrc)

# hadoop

export HADOOP_HOME=/opt/hadoop

export PATH=$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH

#java

export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.151-1.b12.el7_4.x86_64/

export PATH=$JAVA_HOME/bin:$PATH

注意一下,这里的JAVA_HOME的版本java-1.8.0-openjdk-1.8.0.151-1.b12.el7_4.x86_64/需要以实际情况为准,你可以打开你的/usr/lib/jvm/目录进行自行确认,此处为实际设置。

修改hadoop运行所需配置文件

掌握过Hadoop的朋友都知道,Hadoop集群搭建需要修改几个必要的配置文件以及xml参数设置,此处不深究.

进入hadoop的安装目录

cd $HADOOP_HOME/etc/hadoop/

首先我们修改**core-site.xml**这个文件:

vi core-site.xml

hadoop.tmp.dir

/home/hadoop/tmp

A base for other temporary directories.

fs.default.name

hdfs://hadoop-master:9000

fs.trash.interval

4320

hdfs-site.xml

dfs.namenode.name.dir

/home/hadoop/tmp/dfs/name

dfs.datanode.data.dir

/home/hadoop/data

dfs.replication

3

dfs.secondary.http.address

hadoop01:50090

secondarynamenode运行节点的信息 和namenode不同节点

mapred-site.xml

mapreduce.framework.name

yarn

yarn-site.xml

yarn.resourcemanager.hostname

hadoop02

yarn.nodemanager.aux-services

mapreduce_shuffle

yarn.nodemanager.aux-services.mapreduce.shuffle.class

org.apache.hadoop.mapred.ShuffleHandler

打包hadoop文件

将hadoop链接文件和hadoop-2.7.4打包成一个文件方便ansible分发到slave主机

[root@cluster-master opt]# tar -cvf hadoop-dis.tar hadoop hadoop-2.7.4

使用ansible-playbook分发.bashrc和hadoop-dis.tar至slave主机

新建 hadoop-dis.yaml,内容如下:

分发文件

---

- hosts: cluster

tasks:

- name: copy .bashrc to slaves

copy: src=~/.bashrc dest=~/

notify:

- exec source

- name: copy hadoop-dis.tar to slaves

unarchive: src=/opt/hadoop-dis.tar dest=/opt

handlers:

- name: exec source

shell: source ~/.bashrc

并执行

[root@hadoop-master opt]# ansible-playbook hadoop-dis.yaml

hadoop-dis.tar会自动解压到slave主机的/opt目录下

格式化hdfs

hadoop namenode -format

此时如果你看到return 0 ;Sucessfully formatted等字样说明HDFS集群格式化成功了.如有不成功,可先自行查找错误

启动hadoop集群

到这一步已经可以开始hadoop之旅了,启动比较简单,在$HADOOP_HOME/sbin下有几个启动和停止的脚本如下:

df89217128a61c3fcecf8b00db952651.png

hadoop启动相关命令

启动hdfs start-dfs.sh 在任意节点

启动yarn start-yarn.sh 在yarn节点

在master节点执行jsp 只能看到

e274d96aefdeaf8cfb00f29b0bb8d12d.png
c6c2a6b482f66bd9682d76837df5845c.png
bb585d8bdfff6671549114b6adb795d7.png
cc364595d6024d61131e337f24427345.png
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值