温馨提示:要看高清无码套图,请使用手机打开并单击图片放大查看。
1.文档编写目的
CDSW中提供的基础镜像中已有R的环境,但是在真实使用过程中往往需要安装更多R的包。我们在创建一个新的Project时如果使用CDSW基础镜像,每次都需要重新安装需要的依赖包,为了避免大家每次都需要重复安装R的包,这时就需要定制我们自己的Docker。这样在创建新的Project时,如果使用定制过的Docker镜像,就不需要再去安装额外的R依赖包。本文档主要讲述如何基于CDSW基础镜像定制我们自己的Docker镜像。
1.安装前准备
2.查找CDSW基础镜像
3.定制Docker镜像
4.自定义镜像使用
1.操作系统:RedHat7.2
2.采用sudo权限的ec2-user用户操作
3.CDSW版本1.1.1
2.查看CDSW基础镜像
登录CDSW平台查看使用的基础镜像名称
点击“Engines”
上图标注部分即为CDSW的基础镜像(docker.repository.cloudera/cdsw/engine:2)由Docker的Repository和Tag组成。
命令行查看CDSW基础镜像:
[ec2-user@ip-172-31-31-212 ~]$ sudo docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
docker.repository.cloudera.com/cdsw/engine 2 b94fc4cc9b8b 2 months ago 5.83 GB
3.定制Docker镜像
1.使用docker命令启动容器
[ec2-user@ip-172-31-31-212 ~]$ sudo docker run -it --network='host' docker.repository.cloudera.com/cdsw/engine:2 /bin/bash
root@ip-172-31-31-212:/home/cdsw#
如上图已成功启动docker.repository.cloudera.com/cdsw/engine:2并登录成功。
命令参数说明:docker run OPTIONSIMAGE COMMAND
-it : 进行交互式操作
--network : 设置docker容器的网络,这里设置network为host的与主机网络一致
到此完成容器的启动并登录,接下来我们就可以对容器R的环境进行修改配置
2.修改R的CRAN源指向私有源
在/usr/local/lib/R/etc目录下新增文件Rprofile.site,并添加如下内容
root@ip-172-31-31-212:/home/cdsw# cd /usr/local/lib/R/etc/
root@ip-172-31-31-212:/home/cdsw# vim Rprofile.site
# Site R configuration.
local({
r <- getOption("repos")
#r["CRAN"] <- "https://cloud.r-project.org/"
r["CRAN"] <- "http://ip-172-31-22-86.ap-southeast-1.compute.internal/"
options(repos = r)
})
3.安装R的依赖包
进入R的控制台安装包,我们这里安装了sparklyr和h2o包,为了方便我这里就偷懒直接使用外网环境安装的包,具体R的私有源使用可参考如何在Redhat中安装R的包及搭建R的私有源。
root@ip-172-31-31-212:/usr/local/lib/R/etc# R
R version 3.3.0 (2016-05-03) -- "Supposedly Educational"
…
> install.packages("sparklyr")
> install.packages("h2o")
以上完成了R环境的定制,那么关键部分到了,如何保存定制的镜像。
4.保存Docker镜像
在未退出容器的情况下,在新的命令窗口创建执行如下命令保存一个新的Docker镜像。
首先找到我们登录的容器ID
[ec2-user@ip-172-31-31-212 ~]$ sudo docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
69be88193fa7 docker.repository.cloudera.com/cdsw/engine:2 "/bin/bash" 57 minutes ago Up 57 minutes affectionate_saha
上图标注部分即为容器的ID和对应镜像的Repository:Tag,获取到容器的ID执行如下命令将该容器保存为新的镜像。
[ec2-user@ip-172-31-31-212 ~]$ sudo docker commit 69be88193fa7 docker.repository.cloudera.com/cdsw/myengine:2.0.0
sha256:727128de8e3df7e4b74395b9b9c8a4f5df6bba8cc7e03baffaf98436c4ff72d5
[ec2-user@ip-172-31-31-212 ~]$
通过命令查看我们定制的Docker镜像
[ec2-user@ip-172-31-31-212 ~]$ sudo docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
docker.repository.cloudera.com/cdsw/myengine 2.0.0 727128de8e3d About a minute ago 6.01 GB
如上图标注则表示我们的自定义镜像保存成功,到此我们的自定义镜像就制作完成了,接下来就可以在CDSW中去使用。
4.自定义镜像使用
1.登录CDSW
2.添加自定义镜像
Description:镜像的描述
Repository:Tag:镜像的Repository和Tag组合
保存成功。
3.全局设置使用自定义镜像
此处可以将我们的自定义镜像设置为默认镜像,这样所有的docker启动时默认使用的时自定义镜像
4.Project设置自定义镜像
打开myfirstR工程
点击“Setting”
5.验证自定义镜像
1.进入myfirstR工程
删除myfirstR工程下R的依赖包
2.打开“Open Workbench”
3.启动会话“Launch Session”
启动成功并且使用的是我们自定义的镜像。
4.使用library加载sparklyr和h2o包
在没有安装sparklyr和h2o包的情况下,能够正常加载这两个包。
6.总结
本文讲述了如何根据CDSW的基础镜像定制我们自己所需的Docker。
醉酒鞭名马,少年多浮夸! 岭南浣溪沙,呕吐酒肆下!挚友不肯放,数据玩的花! 温馨提示:要看高清无码套图,请使用手机打开并单击图片放大查看
推荐关注Hadoop实操,第一时间,分享更多Hadoop干货,欢迎转发和分享。
原创文章,欢迎转载,转载请注明:转载自微信公众号Hadoop实操