容器部署spark+hadoop+java+scala+自己服务
步骤:公网下载镜像 -> 创建容器 -> 安装应用 -> 容器打包 -> 创建镜像 -> 离线使用镜像
为了简单起见:只记录上述软件单节点安装方式,集群安装可修改相关配置文件,请自行百度。
公网下载镜像
- 镜像来源:docker.io/centos
docker pull docker.io/centos #下载镜像
-
查看镜像
docker image ls
完成公网下载镜像到本地,可以通过镜像创建容器
创建容器
自定义容器名字:recSys
创建容器有两种方式,第一种方式一般是实验阶段使用,正式用于生产一般推荐第二种,两者区别在于提前指定容器与宿主机之间映射端口。
第一种方式:没有指定端口,后期需要增加端口映射需要修改配置文件
docker run -it --name=recSys docker.io/centos /bin/bash #创建容器
exit #退出时候容器自动关闭,重新进入容器需要重启容器
docker start recSys #启动容器
docker exec -it recSys /bin/bash #进入容器
第二种方式:提前规划好端口或者IP
结合业务:8099就是hadoop管理监控端口,50070是文件系统管理端口,将宿主机8900映射为8099,50071映射为50070,8002映射为8002。8002是自己应用服务的端口。
[root@AIOps-1 /]# docker run -itd -p 8900:8099 -p 50071:50070 -p 8002:8002 --name=recsys rec_sys_ready /bin/bash #-d表示后台运行
1eaf173131b47858510ca3e9f4e2f5264fb3ec5de938ae3a123a85b670784357
[root@AIOps-1 /]# docker ps #docker ps -a 查看正在或已停止历史运行容器
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
1eaf173131b4 rec_sys_ready "/bin/bash" 6 seconds ago Up 5 seconds 0.0.0.0:8002->8002/tcp, 0.0.0.0:8900->8099/tcp, 0.0.0.0:50071->50070/tcp recsys
#这种方式创建容器前台看不了,需要通过exec进入容器
docker exec -it recSys /bin/bash #进入容器
安装应用
软件版本:需要安装jdk,spark,hadoop,scala,注意版本之间配套,如果不知道配套,可以每个软件都下载最新的版本
[root@d9243e9eccf1 opt]# ls derby.log jdk1.8.0_131 recsys spark-1.5.0-bin-hadoop2.6 hadoop-2.7.3 metastore_db scala-2.11.8
上传各软件:这里指从宿主机传到容器里,如果软件不在宿主机,需要将其上传到宿主机,然后再传到容器里。
- 以spark为例,上传命令类似linux cp,用 docker cp 文件名 容器名称:目录
# 安装spark [root@AIOps-1 ~]# docker cp spark-1.5.0-bin-hadoop2.6.tgz recSys:/opt/ #将软件包从宿主机复制到容器,recSys:/opt是容器名字和目标目录 #所有软件已上传 [root@d9243e9eccf1 opt]# ls jdk-8u131-linux-x64.tar.gz scala-2.11.8.tgz recsys spark-1.5.0-bin-hadoop2.6.tgz
安装前准备
- 下载的容器里没有ssh服务和客户端,需要手动安装ssh服务和客户端,否则启动hadoop会报错。
centos环境
yum -y install openssh-server openssh-clients
ubuntu环境
apt-get update
apt-get install openssh-server openssh-clients
- 启动ssh服务,启动需手动创建/var/run/sshd,不然启动sshd的时候会报错
mkdir -p /var/run/sshd
- sshd以守护进程运行,注意如果重启容器后需要手动起ssh服务
/usr/sbin/sshd -D &
- 安装netstat,查看sshd是否监听22端口
apt-get install net-tools 或者yum install net-tools
netstat -apn |