目录
阅读须知
- 为什么用 docker 搭建 hadoop 集群呢?虚拟机超级超级慢,一开始可以带三台虚拟机,慢慢的连一台都慢死了。一怒之下干脆从零再用 docker 搭一个集群算了。除了开始的一些步骤图形化界面是不用操作的,接下来的操作都一样,大部分坑我都走了,好多操作我都从头执行了好几遍,直接复制即可。
- 本博客采用最小安装。一开始我是安装了图形化界面(KDE),由于在 docker 里面不能直接使用
systemctl
,如果直接 docker run 会报错:Failed to get D-Bus connection: Operation not permitted。解决方法是在创建容器时加上--privileged
和/usr/sbin/init
。但是我只要一执行就会跳出图形化界面,进入一个命令行界面,然后就回不去了!!!我以为是 CentOS 版本的问题,用最新版也一样,这个问题困扰了我好久都没解决。一怒之下干脆不要图形化界面了,直接最小安装算了,还没这么卡。但是还是会跳转界面,后来我直接用 XShell 控制虚拟机,懒得看它了。
- 像 Java、Scala、Hadoop、Hive、Spark 这些东西都是从官网下个 tar 包,再继续操作。所以需要用到共享文件夹。
- 集群配置,所以弄三个容器
- | master | slave1 | slave2 |
---|---|---|---|
HDFS | NameNode DataNode |
DataNode | SecondaryNameNode DataNode |
Yarn | NodeManager | ResourceManager NodeManager |
NodeManager |
- 过程中适当拍摄快照
- 每一步都很关键!!!
Ctrl C + Ctrl V 走起 👻👻👻👻
最小安装(可跳)
安装虚拟机和CentOS的过程:略
-
用 ip addr 查看 IP,接下来的操作都在 XShell
-
安装必要的工具
yum -y install vim #编辑器
yum -y install net-tools #ifconfig
yum -y install httpd
yum -y install wget
yum -y install iproute
yum -y install lsof
yum -y install bash-completion #tab补全
yum -y install gcc gcc-c++ autoconf pcre pcre-devel make automake #gcc
#yum -y update #升级
#yum -y install kernel-devel #升级kernel-devel
#yum -y install kernel-headers
- 修改 /etc/vimrc 文件,防止中文乱码,vim /etc/vimrc,添加如下代码
set encoding=utf-8
set termencoding=utf-8
set fileencodings=utf-8
- 如果想格式化JSON可以在 /etc/vimrc 加上下面的代码:
command! JsonFormat :execute '%!python -m json.tool'
\ | :execute '%!python -c "import re,sys;chr=__builtins__.__dict__.get(\"unichr\", chr);sys.stdout.write(re.sub(r\"\\u[0-9a-f]{4}\", lambda x: chr(int(\"0x\" + x.group(0)[2:], 16)).encode(\"utf-8\"), sys.stdin.read()))"'
\ | :set ft=javascript
\ | :
打开json文件,输入:
:JsonFormat
详解Linux安装GCC方法
vmware + centos 7安装vmtools时提示The path “” is not a valid path to the xxx kernel header
VMware下CentOS7最小化安装及配置
CentOS 7 最小化安装后的注意事项及一些必备组件的安装
CentOS7最小化安装-Linux-1
Linux最小化安装后一般需要安装的命令的rpm包合集
让VIM彻底告别乱码
VIM中格式化json
安装VMware Tool(可直接安装)
- 在虚拟机菜单栏中点击 虚拟机 -> 安装 VMware Tools
- 创建挂载目录:mkdir /mnt/cdrom
- 将光驱挂载到/mnt/cdrom目录:mount /dev/cdrom /mnt/cdrom
- 将压缩包拷贝到其它地方:cp /mnt/cdrom/VMwareTools-10.3.2-9925305.tar.gz /opt
- 解压:tar -zxvf /opt/VMwareTools-10.3.2-9925305.tar.gz -C /opt
- 进入解压出来的目录:cd /opt/vmware-tools-distrib
- 安装:./vmware-install.pl。这一步可能会遇到问题:bash:./vmware-install.pl :/usr/bin/perl:bad interpreter:No such file or directory。输入 yum groupinstall “Perl Support” 即可。
- 卸载光驱:umount /dev/cdrom
Linux VMware Tools安装步骤简易版
CentOS-7 最小安装VMware-tools
在 Linux 虚拟机中手动安装 VMware Tools
关闭防火墙和Selinux
输入 systemctl status firewalld.service 查看防火墙状态输入 systemctl stop firewalld.service 关闭防火墙输入 systemctl disable firewalld.service 关闭防火墙自启- 输入 vim /etc/sysconfig/selinux,将 SELINUX=enforcing 改为 SELINUX=disabled
安装docker
- 卸载已安装的较旧的 Docker 以及相关的依赖项。
yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-engin
- 安装所需的软件包。yum-utils 提供了 yum-config-manager ,并且 device mapper 存储驱动程序需要 device-mapper-persistent-data 和 lvm2。
yum install -y yum-utils \
device-mapper-persistent-data \
lvm2
- 设置仓库源
yum-config-manager \
--add-repo \
http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
- 安装最新版本的 Docker Engine-Community 和 containerd
yum -y install docker-ce docker-ce-cli containerd.io
-
启动docker 服务:systemctl start docker
-
检测 docker 版本:docker version
-
停止docker服务:systemctl stop docker
-
修改镜像源:vim /etc/docker/daemon.json
{
"registry-mirrors": [
"https://registry.aliyuncs.com",
"https://hub-mirror.c.163.com",
"https://registry.docker-cn.com",
"https://docker.mirrors.ustc.edu.cn"
]
}
迁移docker安装目录
docker镜像容器目录默认存放在 /var/lib/docker,担心后期数据量大导致系统盘空间不足,现把它迁移到其它地方。我有一次好不容易装好了,提示我磁盘空间不足,vim 都用不了了。
- 通过 df -h 看下磁盘大概的情况,找一个大的空间
- 创建新目录作为docker的新目录:mkdir -p /opt/docker
- 迁移数据:cp -r /var/lib/docker/ /opt/docker
- 修改 docker.service:vim /lib/systemd/system/docker.service,在 ExecStart 后面添加 --data-root /opt/docker
- systemctl daemon-reload
- 重启 docker 服务:systemctl start docker
- 查看默认路径是否已修改:docker info | grep " Root Dir",如果修改了会提示这样:Docker Root Dir: /opt/docker
- 通过运行 hello-world 映像来验证是否正确安装了 Docker Engine-Community 。
docker run hello-world
- 删除原目录数据:rm -rf /var/lib/docker
attempt to change docker data-root fails - why
两种方式迁移 Docker 的默认安装 (存储) 目录
docker的/var/lib/docker目录迁移
docker镜像容器目录迁移
docker安装CentOS 7
- 拉取指定版本的 CentOS 镜像
docker pull centos:centos7
2. 查看本地镜像
docker images
- run 运行容器,然后可以通过 exec 命令进入 CentOS 容器。注意两个地方
--privileged
,/usr/sbin/init
,这样你才能使用systemctl
docker run -itd --privileged -h base --name base centos:centos7 /usr/sbin/init
docker exec -it 77b6c963033b /bin/bash
安装必要工具
- 分别安装 vim、net-tools、iputils-ping 等
yum -y install vim #编辑器
yum -y install net-tools #ifconfig
yum -y install iputils-ping #ping
yum -y install httpd
yum -y install iproute
yum -y install lsof
yum -y install wget
yum -y install rsync #同步数据
yum -y install bash-completion #tab补全
yum -y install gcc gcc-c++ autoconf pcre pcre-devel make automake #gcc
yum -y install openssh-server #ssh
yum -y install openssh-clients #ssh
systemctl start sshd.service #启动 ssh 服务
systemctl enable sshd.service #设置 ssh 开机启动
systemctl start rsyncd.service #启动 rsync 服务
systemctl enable rsyncd.service
- 修改 /etc/vimrc 文件,防止中文乱码,vim /etc/vimrc,添加如下代码
set encoding=utf-8
set termencoding=utf-8
set fileencodings=utf-8
-
vim /etc/ssh/sshd_config,将PermitRootLogin,PubkeyAuthentication 的设置打开。
-
为了保证系统启动的时候也启动 ssh 服务,我们将启动命令放到bashrc文件末尾中:systemctl start sshd.service
vim ~/.bashrc
- 这一步很狠猩狼关键:passwd。输入你的密码,后面 ssh 登录要用!!!
安装Java和Scala
- 在主机将 JDK 和 Scala 复制到容器的 /opt 目录
docker cp /mnt/hgfs/share/jdk-8u241-linux-x64.tar.gz def8faf07d6b:/opt
docker cp /mnt/hgfs/share/scala-2.12.12.tgz def8faf07d6b:/opt
- 解压压缩包到 /opt,并重命名
tar -zxvf /opt/jdk-8u241-linux-x64.tar.gz -C /opt
mv /opt/jdk1.8.0_241 /opt/jdk-1.8.0
tar -zxvf /opt/scala-2.12.12.tgz -C /opt
- 更改文件的所有者和所在组:chown -R root:root /opt/jdk-1.8.0 && chown -R root:root /opt/scala-2.12.12
- 设置环境变量 vim /etc/profile,在末尾添加
#JAVA
export JAVA_HOME=/opt/jdk-1.8.0
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
#Scala
export SCALA_HOME=/opt/scala-2.12.12
#PATH
export PATH=$PATH:${JAVA_HOME}/bin:${SCALA_HOME}/bin
- source /etc/profile && java -version && scala -version 查看 Java 和 Scala 是否配置成功
- 输入 vim ~/.bashrc,加上 source /etc/profile
- 记得删除压缩包
安装Hadoop
- 在主机将 Hadoop 复制到容器的 /opt 目录
docker cp /mnt/hgfs/share/hadoop-2.9.2.tar.gz def8faf07d6b:/opt
- 解压压缩包到 /opt
tar -zxvf /opt/hadoop-2.9.2.tar.gz -C /opt
- 更改文件的所有者和所在组:chown -R root:root /opt/hadoop-2.9.2
- 配置 core-site.xml($HADOOP_HOME/etc/hadoop/下)fs.default.name 为默认的master节点。hadoop.tmp.dir为hadoop默认的文件路径。如果本机没有的话需要自己通过 mkdir 命令进行创建。
<property>
<name>fs.defaultFS</name>
<value>hdfs://master:9000</value>
</property>
<!-- 指定hadoop运行时产生文件的存储路径 -->
<property>
<name>hadoop.tmp.dir</name>
<value>/opt/hadoop-2.9.2/data/tmp</value>