Docker集群
使用Docker可以设置SKIL集群。如果你还没有这样做,我们建议你在尝试设置集群之前下载并运行单个Docker镜像。
要配置Docker Skil CE群集,你需要以下镜像:
推荐的配置是将ZooKeeper和MySQL实例保存在一台计算机中,而将每个SKIL CE实例保存在单独的计算机中。你可以根据需要和可用的硬件来更改此项。
使用主机名而不是IP
确保你的SKIL CE实例能够通过其主机地址访问MySQL和Zookeeper节点。
Zookeeper
运行以下命令在你的机器节点中设置ZooKeeper Docker镜像:
# 创建用于持久化数据的卷
docker volume create --name zk-data
docker volume create --name zk-datalog
# 从Docker Hub中拉取ZooKeeper镜像
docker pull zookeeper
# 运行拉取的ZooKeeper镜像
docker run -p 2181:2181 --name zookeeper -v zk-data:/data -v zk-datalog:/datalog -d zookeeper
image.gif
MySQL
我们将使用MySQL5.5.59版本进行集群设置:
# 从docker hub拉取MySQL 5.5.59
docker pull mysql:5.5.59
# 运行
docker run -p 3306:3306 --name mysql -e MYSQL_ALLOW_EMPTY_PASSWORD=true -e MYSQL_DATABASE=skil_migrations -d mysql:5.5
image.gif
SKIL CE
分布式skil镜像不包括JDBC驱动程序。这是与远程mysql容器实例通信所必需的。我们必须在skil ce docker镜像中手动安装mysql jdbc驱动程序。要将其安装在已拉取的skil镜像中,首先创建一个Dockerfile(nano Dockerfile),并将以下内容放入其中。
FROM skymind/skil
USER root
RUN yum install -y mysql-connector-java && ln -s /usr/share/java/mysql-connector-java.jar /opt/skil/lib/mysql-connector-java.jar
# PLD
EXPOSE 9008
# File Server
EXPOSE 9508
# Zeppelin
EXPOSE 8080
# DL4J UI first port
EXPOSE 9002
# ModelHistoryServer port
EXPOSE 9100
CMD ["/start-skil.sh"]
image.gif
保存文件并运行以下命令以拉取和构建所需的SKIL docker镜像
sudo docker build -t skymind/skil:jdbc .
image.gif
现在,你可以使用所需的JDBC驱动程序运行构建的SKIL镜像。将[Zookeeper Host Address]和[MySQL Host Address]分别替换为Zookeeper和mysql的主机地址:
# 创建用于持久化数据的卷
docker volume create --name skil-data
# 初始化运行
docker run --add-host="mysql:[MySQL Host Address]" --add-host="zookeeper:[Zookeepr Host Address]" --rm -it --name skil -v skil-data:/var/skil -p 9008:9008 -p 8080:8080 -e SKIL_USE_EMBEDDED_DB=false -e SKIL_DB_NAME=skil_migrations -e SKIL_DB_DRIVER=com.mysql.jdbc.Driver -e SKIL_DB_URL=jdbc:mysql://mysql:3306/skil_migrations -e SKIL_DB_USER=root -e MODEL_HISTORY_SERVER_LAUNCH_DEFAULT=false -e ZEPPELIN_LAUNCH_DEFAULT=false -e ZOOKEEPER_HOST=zookeeper -e ZOOKEEPER_PORT=2181 -e ZOOKEEPER_EMBEDDED=false -d skymind/skil:jdbc
image.gif
你可以为集群中所需的任意多个SKIL CE实例重复这些步骤。
在Zeppelin中配置Spark Master
要配置Spark Master,可以修改Zeppelin中的Spark解释器设置,如下图所示:
只要确保在通过--add-host
运行skil ce docker实例时已配置了Spark集群主机地址。例如:
docker run --add-host="localhost:[Spark Cluster Host Address]" ... -d skymind/skil:jdbc
image.gif
网友评论