银河麒麟—利用docker搭建hadoop集群(完全分布式)

这篇博客详细介绍了如何利用docker构建一个Hadoop的完全分布式集群。首先,需要制作符合要求的镜像,然后进行Hadoop集群的搭建。集群规划包括确定namenode、datanode、secnamenode、resourcemanager和nodemanager的角色分配。通过这个过程,成功完成了docker环境中的Hadoop集群部署。

一、制作符合要求的镜像

$ docker pull ubuntu:16.04
$ docker run -it ubuntu:16.04

### 1.在容器内安装jdk和hadoop
$ ls
hadoop-2.7.7.tar.gz  jdk-8u241-linux-x64.tar.gz
$ docker exec -it 05272c80eb5b /bin/bash
root@05272c80eb5b:/opt# mkdir /opt/software 
#将宿主机中的软件包拷贝到指定容器中    
$ docker cp jdk-8u241-linux-x64.tar.gz 05272c80eb5b:/opt/software
$ docker cp hadoop-2.7.7.tar.gz 05272c80eb5b:/opt/software
root@05272c80eb5b:/opt# cd software
root@05272c80eb5b:/opt/software# ls
hadoop-2.7.7.tar.gz  jdk-8u241-linux-x64.tar.gz
#解压
root@05272c80eb5b:/opt/software# tar -zxvf jdk-8u241-linux-x64.tar.gz
root@05272c80eb5b:/opt/software# tar -zxvf hadoop-2.7.7.tar.gz
#将压缩包转移到moudle文件夹下管理
root@05272c80eb5b:/opt# mkdir moudle
root@05272c80eb5b:/opt# mv jdk-8u241-linux-x64.tar.gz /opt/moudle/
root@05272c80eb5b:/opt# mv hadoop-2.7.7.tar.gz /opt/moudle/
#重命名安装包
root@05272c80eb5b:/opt/software# mv hadoop-2.7.7 hadoop2.7
root@05272c80eb5b:/opt/software# mv jdk1.8.0_241 jdk1.8

### 2.踩坑
#现在已经不能用PPA方式安装jdk,因为这个端口已经停止使用了,里面什么也没有,现在从oracle官网下载jdk必须注册账号,以下方法完全不行
root@05272c80eb5b:/# apt update
root@05272c80eb5b:/# apt install python-software-properties
root@05272c80eb5b:/# apt install software-properties-common
root@05272c80eb5b:/# add-apt-repository ppa:webupd8team/java
root@05272c80eb5b:/# apt update
root@05272c80eb5b:/# apt install oracle-java8-installer
#看一下是什么东西
root@05272c80eb5b:/etc/apt# ls
apt.conf.d   preferences.d  sources.list.d     trusted.gpg
auth.conf.d  sources.list   sources.list.save  trusted.gpg.d
root@05272c80eb5b:/etc/apt/sources.list.d# ls
webupd8team-ubuntu-java-xenial.list
root@05272c80eb5b:/etc/apt/sources.list.d# cat webupd8team-ubuntu-java-xenial.list 
deb http://ppa.launchpad.net/webupd8team/java/ubuntu xenial main
# deb-src http://ppa.launchpad.net/webupd8team/java/ubuntu xenial main
root@05272c80eb5b:/etc/apt/sources.list.d# rm webupd8team-ubuntu-java-xenial.list

### 3.更换apt下载源
root@05272c80eb5b:/etc/apt# cp sources.list sources.list.backup
root@05272c80eb5b:/etc/apt# vim sources.list
root@05272c80eb5b:/etc/apt$ cat sources.list
# 默认注释了源码镜像以提高 apt update 速度,如有需要可自行取消注释
deb http://mirrors.aliyun.com/ubuntu/ xenial main
#deb-src http://mirrors.aliyun.com/ubuntu/ xenial main

deb http://mirrors.aliyun.com/ubuntu/ xenial-updates main
#deb-src http://mirrors.aliyun.com/ubuntu/ xenial-updates main

deb http://mirrors.aliyun.com/ubuntu/ xenial universe
#deb-src http://mirrors.aliyun.com/ubuntu/ xenial universe
deb http://mirrors.aliyun.com/ubuntu/ xenial-updates universe
#deb-src http://mirrors.aliyun.com/ubuntu/ xenial-updates universe

deb http://mirrors.aliyun.com/ubuntu/ xenial-security main
#deb-src http://mirrors.aliyun.com/ubuntu/ xenial-security main
deb http://mirrors.aliyun.com/ubuntu/ xenial-security universe
#deb-src http://mirrors.aliyun.com/ubuntu/ xenial-security universe
deb http://archive.ubuntu.com/ubuntu/ trusty main universe restricted multiverse

### 4.安装一些必要的工具
#安装sshd,实现无密码登录,访问集群机器更方便
test@hadoop101:~/桌面$ docker exec -it 05272c80eb5b /bin/bash
root@05272c80eb5b:/# apt install ssh
root@05272c80eb5b:/# /etc/init.d/ssh start
root@05272c80eb5b:/# cd ~/ #进入用户主目录,这里就是进入/root/
root@05272c80eb5b:~# ssh-keygen -t rsa  #生成秘钥
root@05272c80eb5b:~# cd .ssh/
root@05272c80eb5b:~/.ssh# ll
total 16
drwx------ 2 root root 4096 Apr  7 10:21 ./
drwx------ 1 root root 4096 Apr  7 10:17 ../
-rw------- 1 root root 1675 Apr  7 
### 使用 Docker 搭建 Hadoop 完全分布式集群 #### 准备工作 为了成功搭建Hadoop完全分布式集群,需要先准备好基础环境。这包括但不限于安Docker以及确保主机具备足够的资源来运行多个容器实例。对于Java和Hadoop本身的安及其环境配置,请参照hadoop之保姆级教程1.1.1节至1.2.1节的内容[^3]。 #### 启动 Master 和 Slave 节点 创建并启动用于模拟多节点集群Docker容器。通常情况下会有一个Master节点负责管理整个集群的操作,并有若干Slave节点执行具体的数据处理任务。可以利用官方提供的镜像或者自定义构建适合特定需求的镜像文件。 ```bash # 下载官方Hadoop镜像或使用已有的本地镜像 docker pull sequenceiq/hadoop-docker:2.7.0 # 运行master节点 docker run -itd --name=hadoop_master sequenceiq/hadoop-docker:2.7.0 /etc/bootstrap.sh -bash # 运行slave节点 (这里假设两个slaves) docker run -itd --name=hadoop_slave1 sequenceiq/hadoop-docker:2.7.0 /etc/bootstrap.sh -bash docker run -itd --name=hadoop_slave2 sequenceiq/hadoop-docker:2.7.0 /etc/bootstrap.sh -bash ``` #### 设置静态IP地址 为了让各个节点之间能够稳定通信,在创建这些容器的时候应该为其分配固定的内部网络IP地址。可以通过`pipework`工具实现这一点: ```bash sudo pipework docker0 hadoop_master 172.17.42.2/24@172.17.42.1 sudo pipework docker0 hadoop_slave1 172.17.42.3/24@172.17.42.1 sudo pipework docker0 hadoop_slave2 172.17.42.4/24@172.17.42.1 ``` 上述命令中的IP地址可以根据实际情况调整,但要保证在同一子网内且不冲突[^4]。 #### 修改核心配置文件 进入每个容器内部修改必要的Hadoop配置文件(如core-site.xml, hdfs-site.xml等),使得它们指向正确的namenode和服务端口。这部分操作依赖具体的业务场景和个人偏好设定。 #### 初始化 NameNode 及格式化存储空间 在完成所有前期准备工作之后,还需要初始化NameNode并将数据目录进行格式化以便后续正常使用: ```bash docker exec -it hadoop_master bash -c 'hdfs namenode -format' ``` #### 开启服务 最后一步就是分别开启各组件的服务进程了。一般而言,只需要在Master上启动Namenode和其他全局性的守护程序;而在Slaves上面则主要关注DataNodes等相关角色即可。 通过以上流程就可以借助Docker技术快速建立起一套功能完备的Hadoop分布式计算平台[^1]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值