- Docker-Hadoop集群
- 1. Hadoop完全分布式集群步骤总结
- 2. 集群环境前的准备
- 2.1 安装 Vim 更新 APT
- 2.2 安装网络配置工具 & wget工具
- 2.3 安装 SSH设置无密码登陆
- 2.4 安装 JDK
- 2.5 安装 Mysql
- 3. 准备集群必要组件
- 版本说明
- 3.1 安装 Hadoop
- 3.2 安装 Hbase
- 3.3 安装 Hive
- 3.4 安装 Kafka
- 3.5 安装 Flume
- 3.6 保存当前容器为镜像
本篇博文主要是1-6的步骤。
- 更新apt ——APT是Advanced Packaging Tool的缩写,是一款强大的包管理工具,也可以称作机制,通过终端安装软件一般是使用apt instll 命令
- 安装vim —— 文本编辑器,是编辑环境变量以及配置文件最常用的文本编辑器
- 安装sshd —— 无密码登陆服务,用于集群各节点之间的无密码访问
- 安装JDK —— Hadoop的底层HDFS和MapReduce都是基于Java语言实现的,所以需要JVM环境
- 下载Hadoop集群相关资源,并设置配置文件
- 做好以上准备工作后,将当前的容器保存为一个新镜像
- 以新镜像开启所需的节点个数,每个节点作为集群的一个节点
- 创建容器后,测试ssh是否有效,各节点之间必须支持无密码登陆
- 配置各节点的 etc/hosts 文件,设置主机名与IP之间的映射
- 在多个节点中挑选一个节点作为Master节点,其他节点则作为Slave节点
- 在主节点中配置集群的副节点 在主节点中修改Hadoop下的./etc/hadoop/workers (当前是Hadoop 3.x.x版本 ,之前的版本是slave文件)
- 在主节点启动集群,首次启动需初始化Namenode
- JPS查看进程,主节点包括NameNode、SecondaryNamenode、ResourceManager,副节点包括NodeManager和DataNode
2. 集群环境前的准备
- 在HDFS创建目录,并上传Hadoop下的配置文件,测试运行分布式实例,查询HDFS里的结果文本
准备Ubuntu镜像
sudo docker pull ubuntu
创建Docker内部传输文件目录
sudo mkdir /usr/local/dockerbuild
创建容器
sudo docker run -it -v /usr/local/dockerbuild:/root/build/ --name pc1 ubuntu2.1 安装 Vim 更新 APT
先安装好vim之后再修改镜像源
apt-get update apt-get install vim
设置系统镜像源,使用apt-get install 安装软件会更快
参考资料:https://developer.aliyun.com/mirror/ubuntu?spm=a2c6h.13651102.0.0.3e221b11KruDiG
【1】 备份系统原镜像文件 sources.list后删除原文件
cd /etc/apt cp sources.list sources.list.bak rm -rf sources.list vim sources.list
【2】创建阿里云镜像源站的sources.list文本文件
创建sources.list 并加入一下内容
deb http://mirrors.aliyun.com/ubuntu/ focal main restricted universe multiverse deb-src http://mirrors.aliyun.com/ubuntu/ focal main restricted universe multiverse deb http://mirrors.aliyun.com/ubuntu/ focal-security main restricted universe multiverse deb-src http://mirrors.aliyun.com/ubuntu/ focal-security main restricted universe multiverse deb http://mirrors.aliyun.com/ubuntu/ focal-updates main restricted universe multiverse deb-src http://mirrors.aliyun.com/ubuntu/ focal-updates main restricted universe multiverse deb http://mirrors.aliyun.com/ubuntu/ focal-proposed main restricted universe multiverse deb-src http://mirrors.aliyun.com/ubuntu/ focal-proposed main restricted universe multiverse deb http://mirrors.aliyun.com/ubuntu/ focal-backports main restricted universe multiverse deb-src http://mirrors.aliyun.com/ubuntu/ focal-backports main restricted universe multiverse
接着 按 ESC -> 冒号: -> wq 保存退出
【3】 更新APT源
apt-get update2.2 安装网络配置工具 & wget工具
apt-get install net-tools apt-get install -y wget2.3 安装 SSH设置无密码登陆
安装 ssh
apt-get install ssh
选择时区,先选6 亚洲 (两次回车)再选 70 上海
开启 ssh服务
/etc/init.d/ssh start
设置系统启动时自动开启ssh服务
vim ~/.bashrc # 在最后一行加入下面内容 # /etc/init.d/ssh start # :wq保存退出 source ~/.bashrc
配置无密码登陆服务
# 第一条命令输入后需按多次回车 ssh-keygen -t rsa cd ~/.ssh cat /root/.ssh/id_rsa.pub >> authorized_keys
测试一下 ssh localhost
ssh localhost # 输入yes后回车
输入exit 可退出当前的ssh连接模式,接下来进行第二次测试
至此,单个容器的SSH已配置完毕,由于到时候会克隆出多个节点,其中的SSH信息都是相同的,所以可直接互相ssh无密码登陆,如果是不同的机器,得通过复制公钥步骤如下:(主节点需提前完成 ssh localhost的操作)
2.4 安装 JDK【1】主节点复制一份公钥到根目录下
在主节点输入下面的命令
scp .ssh/id_rsa.pub root@slave:~/id_rsa_master.pub【2】将主节点根目录下的id_rsa_master.pub 拷贝到 所有子节点的根目录
在子节点输入下面的命令
cat ~/id_rsa_master.pub >> .ssh/authorized_key
从清华大学开源软件镜像站下载JDK,速度比较快
原网址https://mirrors.tuna.tsinghua.edu.cn/
cd /usr/local wget https://mirrors.tuna.tsinghua.edu.cn/AdoptOpenJDK/8/jdk/x64/linux/OpenJDK8U-jdk_x64_linux_hotspot_8u302b08.tar.gz tar -zxvf OpenJDK8U-jdk_x64_linux_hotspot_8u302b08.tar.gz -C ./ rm -rf OpenJDK8U-jdk_x64_linux_hotspot_8u302b08.tar.gz mv jdk8u302-b08/ jdk8
配置环境变量
添加内容为:
export JAVA_HOME=/usr/local/jdk8 export JRE_HOME=${JAVA_HOME}/jre export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib export PATH=${JAVA_HOME}/bin:$PATH
vim ~/.bashrc # ESC -> :wq -> 回车 保存退出 source ~/.bashrc java -version2.5 安装 Mysql
因为Ubuntu20.04 版本默认镜像下载的Mysql版本是8.0版本,其速度比5.7稍微慢一点,所以就安装5.7的版本,但是安装非常麻烦,目前尝试没有可用的镜像源可以安装Mysql5.7, 暂时就用8.x版本吧
安装 Mysql 8(5.7版本安装时会提示输入密码)
apt-get install mysql-server
启动 Mysql 服务(安装后会自动启动,现在手动关闭在打开)
service mysql stop service mysql start netstat -tap | grep mysql
设置密码(一开始没有密码,直接回车就能登陆)
mysql -u root -p ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '123456';
设置完毕。
3. 准备集群必要组件版本说明
接下来的安装步骤依旧在Docker容器里面进行。
| 组件名 | 版本号 |
|---|---|
| Hadoop | 3.3.1 |
| Hbase | 2.4.6 |
| Hive | 3.1.2 |
| Kafka | 2.8.1 |
| Flume | 1.9.0 |
国外镜像地址 : https://archive.apache.org/dist/hadoop/common/(下载速度会比较慢)
国内清华大学镜像地址:https://mirrors.tuna.tsinghua.edu.cn/apache/hadoop/common/
我的方法是先在浏览器里访问该网址,找到对应版本的tar包后,复制链接到Ubuntu里通过wget命令下载
接下来以 Hadoop 3.3.1 版本为例
下载、解压、修改文件夹名为hadoop 和 jdk下载步骤一致,暂时不配置环境变量
3.3.1 版本的下载链接为
https://mirrors.tuna.tsinghua.edu.cn/apache/hadoop/common/hadoop-3.3.1/hadoop-3.3.1.tar.gz
解压后记得删除原压缩包,尽量节省容器空间
cd /usr/local wget https://mirrors.tuna.tsinghua.edu.cn/apache/hadoop/common/hadoop-3.3.1/hadoop-3.3.1.tar.gz tar -zxvf hadoop-3.3.1.tar.gz -C ./ rm -rf hadoop-3.1.3.tar.gz mv hadoop-3.3.1 hadoop3.2 安装 Hbase
清华大学镜像站下载:https://mirrors.tuna.tsinghua.edu.cn/apache/hbase/
cd /usr/local wget https://mirrors.tuna.tsinghua.edu.cn/apache/hbase/2.4.6/hbase-2.4.6-bin.tar.gz tar -zxvf hbase-2.4.6-bin.tar.gz -C ./ rm -rf hbase-2.4.6-bin.tar.gz mv hbase-2.4.6 hbase3.3 安装 Hive
清华大学镜像站下载:https://mirrors.tuna.tsinghua.edu.cn/apache/hive/
cd /usr/local wget https://mirrors.tuna.tsinghua.edu.cn/apache/hive/hive-3.1.2/apache-hive-3.1.2-bin.tar.gz tar -zxvf apache-hive-3.1.2-bin.tar.gz -C ./ rm -rf apache-hive-3.1.2-bin.tar.gz mv apache-hive-3.1.2-bin hive3.4 安装 Kafka
https://mirrors.tuna.tsinghua.edu.cn/apache/kafka
cd /usr/local wget https://mirrors.tuna.tsinghua.edu.cn/apache/kafka/2.8.1/kafka_2.12-2.8.1.tgz tar -zxvf kafka_2.12-2.8.1.tgz -C ./ rm -rf kafka_2.12-2.8.1.tgz mv kafka_2.12-2.8.1/ kafka3.5 安装 Flume
https://mirrors.tuna.tsinghua.edu.cn/apache/flume/
cd /usr/local wget https://mirrors.tuna.tsinghua.edu.cn/apache/flume/1.9.0/apache-flume-1.9.0-bin.tar.gz tar -zxvf apache-flume-1.9.0-bin.tar.gz -C ./ rm -rf apache-flume-1.9.0-bin.tar.gz mv apache-flume-1.9.0-bin apache3.6 保存当前容器为镜像
由于资源比较大,所以会加载一段时间
sudo docker commit -p pc1 ubuntu/hadoop
至此,基于Docker搭建Hadoop集群环境就结束了。



