Docker容器环境下搭建Hadoop集群(完全分布式)
hadoop版本为hadoop-3.1.3
(1)安装额外的速度较快的镜像库
- yum install -y epel-release
复制代码 (2)安装同步工具,方便在多台服务器上举行文件的传输
(3)安装网络工具
(4)安装具有代码高亮显示的编辑器
一、docker安装
安装所必要的资源包
设置仓库(阿里云)
- yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
复制代码 安装docker
- yum install docker-ce docker-ce-cli containerd.io docker-compose-plugin
复制代码 查看安装列表
- yum install docker-ce docker-ce-cli containerd.io docker-compose-plugin
复制代码 启动docker
关闭防火墙
- sudo systemctl stop firewalld
-
- sudo systemctl disable firewalld
复制代码 关闭 iptables
- sudo systemctl stop iptables
-
- sudo systemctl disable iptables
复制代码 查看状态
查看安装版本
拉取镜像
通过运行 hello-world 镜像来验证是否正确安装了 Docker Engine-Community 。
二、Docker根本使用命令
1、启动docker
2、停止docker
3、重启docker
4、查看docker
5、设置开机自启
6、查看docker概要信息
7、查看镜像
8、拉取镜像
9、运行镜像
10、运行一个容器
docker run: 运行一个容器。
示例:docker run -it ubuntu:latest /bin/bash,这将在一个Ubuntu镜像上启动一个交互式的bash会话。
- docker run -it ubuntu:latest /bin/bash
复制代码
11、实行交互模式
- docker exec -it <容器ID或容器名称> <命令>
复制代码
12、列出正在运行的容器
docker ps : 列出正在运行的容器。
查看所有容器
13、停止一个正在运行的容器
docker stop: 停止一个正在运行的容器。
示例:docker stop <容器ID或名称>,这将停止指定的容器。
14、删除一个容器
docker rm: 删除一个容器。
示例:docker rm <容器ID或名称>,这将删除指定的容器。
- docker rm -f <容器ID或名称> #强制删除
复制代码
15、删除一个镜像
docker rmi: 删除一个镜像。
示例:docker rmi <镜像ID或名称>,这将删除指定的镜像。
要先停止容器才能删除镜像
一、创建docker 网络
- docker network create --driver=bridge hadoop
复制代码 使用下面这个命令查看 Docker 中的网络
1、运行一个容器并到场到 hadoop 网络:
- docker run -itd --name master --network hadoop centos:7 /bin/bash
-
- docker run -itd --name slave1 --network hadoop centos:7 /bin/bash
-
- docker run -itd --name slave2 --network hadoop centos:7 /bin/bash
复制代码 拉取容器后,可以 exit 退出
2、毗连容器
- docker exec -it master /bin/bash
-
- docker exec -it slave1 /bin/bash
-
- docker exec -it slave2 /bin/bash
复制代码 查看
- docker network inspect hadoop
复制代码
二、安装必备软件 ssh jdk8
1、安装jdk8
在宿主机上发文件
- docker cp jdk-8u161-linux-x64.tar.gz master:/opt/software/
复制代码 在容器中解压
- tar -zxvf jdk-8u161-linux-x64.tar.gz -C /opt/module/
复制代码 设置 /etc/profile文件
- export JAVA_HOME=/opt/module/jdk1.8.0_161
- export PATH=$PATH:$JAVA_HOME/bin
复制代码 查看(生效环境变量)
- source /etc/profile
-
- java -version
复制代码
2、安装ssh
在容器安装
- yum install openssh-server -y
-
- yum install openssh-clients -y
-
- yum -y install passwd openssl openssh-server openssh-clients -y
-
- yum -y update -y
复制代码 报错
解决
- mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup
-
- curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
-
- yum clean all
- yum makecache
-
- yum -y update
复制代码 3、解决 SSH 服务启动时大概出现的报错
创建 /var/run/sshd/目次,要不然sshd服务启动会报错
方法一:
编辑sshd的设置文件/etc/ssh/sshd_config,将其中的UsePAM no改为UsePAM yes
方法二:
- sed -i "s/UsePAM.*/UsePAM yes/g" /etc/ssh/sshd_config
复制代码
4、创建公钥
输入命令后,按两次回车键即可生成
- ssh-keygen -t rsa -f /etc/ssh/ssh_host_rsa_key
-
- ssh-keygen -t ecdsa -f /etc/ssh/ssh_host_ecdsa_key
-
- ssh-keygen -t ed25519 -f /etc/ssh/ssh_host_ed25519_key
复制代码 完成上述几步后,可以开启ssh服务了
此时使用命令ps -ef | grep sshd 便可以看到
- ps -ef | grep sshd
-
- yum -y install lsof
复制代码
5、修改root暗码
6、设置免密
输入命令后按四次回车键
分发密钥
报错
解决
- cat ~/.ssh/id_rsa.pub
-
- cat id_rsa.pub >> ~/.ssh/authorized_keys
-
- #将密钥内容手动复制到个节点上
- 把authorized_keys内容复制到个节点上
-
- #免密登录
- ssh root@slave1
复制代码 7、vi ~/.bashrc
在容器中添加
在文件最后写入
这样我们每次登录centos系统时,都能自动启动sshd服务
8、保存镜像文件
使用命令docker ps查看当前运行的容器:
然后使用命令docker commit 容器id kerin/centos7:basic
- docker commit 容器id kerin/centos7:basic
复制代码 使用命令docker images 查看当前docker中所有镜像
三、制作安装hdoop镜像
1、安装hdoop
在宿主机
- cd /opt/software/
-
- docker cp hadoop-3.1.3.tar.gz master:/opt/software/
复制代码 进入容器解压
- cd /opt/software/
-
- tar -zxvf hadoop-3.1.3.tar.gz -C /opt/module/
复制代码 2、设置环境变量
- vi /etc/profile
- #添加以下内容
-
- export HADOOP_HOME=/opt/module/hadoop-3.1.3
- export PATH=$PATH:$HADOOP_HOME/bin
- export PATH=$PATH:$HADOOP_HOME/sbin
-
- # 生效环境变量
- source /etc/profile
-
- # 查看 hadoop 版本
- hadoop version
复制代码 3、设置Hadoop
集群分布
(1)、设置core-site.xml
添加以下内容
- <configuration>
- <!-- 指定NameNode的地址 -->
- <property>
- <name>fs.defaultFS</name>
- <value>hdfs://ha01:8020</value>
- </property>
- <!-- 指定hadoop数据的存储目录 -->
- <property>
- <name>hadoop.tmp.dir</name>
- <value>/opt/module/hadoop-3.1.3/data</value>
- </property>
- <!-- 配置HDFS网页登录使用的静态用户为atguigu -->
- <!-- <property>
- <name>hadoop.http.staticuser.user</name>
- <value>atguigu</value>
- </property> -->
- </configuration>
复制代码
原文件查找
core-default.xml:在 $HADOOP_HOME/share/hadoop/common/hadoop-common-3.2.2.jar 中
- cd /opt/module/hadoop-3.1.3/share/hadoop/common/
复制代码
复制
- cp hadoop-common-3.1.3.jar /root/hadoop-path
复制代码 解压(从解压hadoop-common-3.1.3.jar中提取core-default.xml文件
- jar xf hadoop-hdfs-3.1.3.jar core-default.xml
复制代码
(2)、设置hdfs-site.xml
添加以下内容
- <configuration>
- <!-- nn web端访问地址-->
- <property>
- <name>dfs.namenode.http-address</name>
- <value>ha01:9870</value>
- </property>
- <!-- 2nn web端访问地址-->
- <property>
- <name>dfs.namenode.secondary.http-address</name>
- <value>ha03:9868</value>
- </property>
- </configuration>
复制代码
原文件查找
- cd /opt/module/hadoop-3.1.3/share/hadoop/hdfs
复制代码
复制
- cp hadoop-hdfs-3.1.3.jar /root/hadoop-path/
复制代码 解压
- jar xf hadoop-hdfs-3.1.3.jar hdfs-site.xml
复制代码
(3)、设置 yarn-site.xml
添加以下内容
- <configuration>
- <!-- 指定MR走shuffle -->
- <property>
- <name>yarn.nodemanager.aux-services</name>
- <value>mapreduce_shuffle</value>
- </property>
- <!-- 指定ResourceManager的地址-->
- <property>
- <name>yarn.resourcemanager.hostname</name>
- <value>ha02</value>
- </property>
- <property>
- <name>yarn.nodemanager.env-whitelist</name>
- <value>JAVA_HOME,HADOOP_COMMON_HOME,HADOOP_HDFS_HOME,HADOOP_CONF_DIR,CLASSPATH_PREPEND_DISTCACHE,HADOOP_YARN_HOME,HADOOP_MAPRED_HOME</value>
- </property>
- </configuration>
复制代码
原文件查找
- cd /opt/module/hadoop-3.1.3/share/hadoop/hdfs
复制代码
复制
- cp hadoop-hdfs-3.1.3.jar /root/hadoop-path/
复制代码 解压
- jar xf hadoop-hdfs-3.1.3.jar hdfs-site.xml
复制代码
开启日志聚集功能
添加以下内容(最后设置)
- <configuration>
- <!-- 指定MR走shuffle -->
- <property>
- <name>yarn.nodemanager.aux-services</name>
- <value>mapreduce_shuffle</value>
- </property>
- <!-- 指定ResourceManager的地址-->
- <property>
- <name>yarn.resourcemanager.hostname</name>
- <value>ha02</value>
- </property>
- <property>
- <name>yarn.nodemanager.env-whitelist</name>
- <value>JAVA_HOME,HADOOP_COMMON_HOME,HADOOP_HDFS_HOME,HADOOP_CONF_DIR,CLASSPATH_PREPEND_DISTCACHE,HADOOP_YARN_HOME,HADOOP_MAPRED_HOME</value>
- </property>
- <!-- 开启日志聚集功能 -->
- <property>
- <name>yarn.log-aggregation-enable</name>
- <value>true</value>
- </property>
- <!-- 设置日志聚集服务器地址 -->
- <property>
- <name>yarn.log.server.url</name>
- <value>http://ha01:19888/jobhistory/logs</value>
- </property>
- <!-- 设置日志保留时间为7天 -->
- <property>
- <name>yarn.log-aggregation.retain-seconds</name>
- <value>604800</value>
- </property>
- </configuration>
复制代码 假如是格式化后添加设置汗青服务器,必要分发文件
- scp $HADOOP_HOME/etc/hadoop/yarn-site.xml root@ha02:$HADOOP_HOME/etc/hadoop
- scp $HADOOP_HOME/etc/hadoop/yarn-site.xml root@ha03:$HADOOP_HOME/etc/hadoop
复制代码
4、设置mapred-site.xml
添加以下内容
- <configuration>
- <!-- 指定MapReduce程序运行在Yarn上 -->
- <property>
- <name>mapreduce.framework.name</name>
- <value>yarn</value>
- </property>
- </configuration>
复制代码 原文件查找
- cd /opt/module/hadoop-3.1.3/share/hadoop/hdfs
复制代码
复制
- cp hadoop-mapreduce-client-core-3.1.3.jar /root/hadoop-path/
复制代码 解压
- jar xf hadoop-mapreduce-client-core-3.1.3.jar mapred-default.xml
复制代码
设置汗青服务器
添加以下内容(最后设置)
- <configuration>
- <!-- 指定MapReduce程序运行在Yarn上 -->
- <property>
- <name>mapreduce.framework.name</name>
- <value>yarn</value>
- </property>
- <!-- 历史服务器端地址 -->
- <property>
- <name>mapreduce.jobhistory.address</name>
- <value>ha01:10020</value>
- </property>
- <!-- 历史服务器web端地址 -->
- <property>
- <name>mapreduce.jobhistory.webapp.address</name>
- <value>ha01:19888</value>
- </property>
- </configuration>
复制代码 假如是格式化后添加设置汗青服务器,必要分发文件
- scp $HADOOP_HOME/etc/hadoop/mapred-site.xml root@ha02:$HADOOP_HOME/etc/hadoop
- scp $HADOOP_HOME/etc/hadoop/mapred-site.xml root@ha03:$HADOOP_HOME/etc/hadoop
复制代码
(5)、设置workers
添加以下内容
(6)、设置hadoop-env.sh
添加以下内容
- export JAVA_HOME=/opt/module/jdk1.8.0_161
- export HADOOP_HOME=/opt/module/hadoop-3.1.3
复制代码
(7)、分发 hadoop 、Java、环境变量
hadoop
- scp -r /opt/module/hadoop-3.1.3/ ha@ha02:/opt/module/
- scp -r /opt/module/hadoop-3.1.3/ ha@ha03:/opt/module/
复制代码 Java
- scp -r /opt/module/jdk1.8.0_161 ha@ha02:/opt/module/
- scp -r /opt/module/jdk1.8.0_161 ha@ha03:/opt/module/
复制代码 环境变量
- scp -r /etc/profile/ root@ha02:/etc/
- scp -r /etc/profile/ root@ha03:/etc/
复制代码 生效环境变量
4、保存镜像
(留意先停掉有数据的服务。如hdfs 防止造成差别步)
在容器master 中
在宿主机中
- docker images
-
- docker ps
-
- docker commit id kerin/centos7:hadoop
复制代码
四、使用hadoop镜像搭建集群
1、停用和删除全部运行中的容器
- docker stop id
-
- docker rm -f id
复制代码 2、创建master、slave1、slave2
master
- docker run -it --network hadoop -h "master" --name "master" -p 9870:9870 -p 8081:8081 -p 60010:60010 -p 2181:2181 -p 8080:8080 -p 4040:4040 -p 3306:3306 -p 18080:18080 -p 19888:19888 kerin/centos7:hadoop /bin/bash
复制代码 slave1
- docker run -it --network hadoop -h "slave1" --name "slave1" -p 8088:8088 kerin/centos7:hadoop /bin/bash
复制代码 slave2
- docker run -it --network hadoop -h "slave2" --name "slave2" -p 9868:9868 kerin/centos7:hadoop /bin/bash
复制代码
-p 背面表示要向主机映射的端口号
3、格式化
启动容器
进入容器
- docker exec -it master /bin/bash
-
- docker exec -it slave1 /bin/bash
-
- docker exec -it slave2 /bin/bash
复制代码 格式化
4、启动
启动start-dfs.sh
报错一
解决
- vi /etc/profile
-
- export HDFS_NAMENODE_USER=root
- export HDFS_DATANODE_USER=root
- export HDFS_SECONDARYNAMENODE_USER=root
- export YARN_RESOURCEMANAGER_USER=root
- export YARN_NODEMANAGER_USER=root
复制代码 分发
- scp -r /etc/profile slave1:/etc/
-
- scp -r /etc/profile slave2:/etc/
复制代码
报错二
解决
- vi /root/.ssh/known_hosts
-
- 注释第二行和第三行
复制代码 重新运行 scp -r /etc/profile slave1:/etc/ 命令,SSH 将会询问您是否要添加 slave1 的新密钥,输入 yes 以担当并添加新的主秘密钥。
- scp -r /etc/profile slave1:/etc/
复制代码
启动start-yarn.sh
报错
解决
- vi /root/.ssh/known_hosts
-
- 注释第二行和第三行
复制代码 查看历程
5、访问端口
windos添加访问容器路由
- ROUTE -p add 172.20.0.0 mask 255.255.0.0 192.168.153.134
复制代码 ubuntu添加访问容器路由
- sudo ip route add 172.20.0.0/16 via 192.168.153.134
复制代码 宿主机ip+端口号
- 192.168.153.134:9870
-
- 192.168.153.134:8088
复制代码
6、保存镜像
(留意先停掉有数据的服务。如hdfs 防止造成差别步)
在容器master 中
在宿主机中
- docker images
-
- docker ps
-
- docker commit master容器的id kerin/hadoop:hadoop
复制代码
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |