1 文档编写目的

在CDSW1.5及以前版本,仅支持内置的编辑器,往往数据科学家在做模型开发训练时更倾向于使用自己熟悉的IDE开发工具。所以在CDSW1.6开始,引入了一个新功能,允许用户自带编辑器,称为BYOE(Bring Your Own Editor)。关于这个新特性可以参考前面的文章《CDSW1.6的新特性》有视频介绍。本篇文章主要介绍在Window客户端环境下,使用CDSW提供的工具搭建一个SSH Gateway方式实现本地IDE访问CDSW Project并做开发。

  • 测试环境:

1.Window7

2.CDSW1.6.1

环境准备

1.在Window客户端上执行如下命令创建私钥/公钥对

C:\Users\admin>ssh-keygen -t rsa

pycharm能连接docker中的环境开发么_spark

2.配置window客户端DNS确保通过泛域名方式可以解析到CDSW服务器地址

pycharm能连接docker中的环境开发么_spark_02

pycharm能连接docker中的环境开发么_配置文件_03

3.登录CDSW下载提供的window端cdswctl工具

pycharm能连接docker中的环境开发么_spark_04

解压至当前客户端的任意目录

pycharm能连接docker中的环境开发么_配置文件_05

4.登录CDSW配置window客户端公钥到当前用户的SSH public keys公钥列表

将第一步ssh-keygen命令生成C:\Users\admin.ssh\id_rsa.pub公钥文件内容,添加CDSW的公钥列表,

ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC3uVMZ6QW4yYswtgwcilBmye2nNS3vV8zivVUocQ/ZwyDWR7oMBPyf6YFELzxrb4uT80EDWA5qdUdXNMALEqX3Pzh4ruqQ7KE3dI3L6KMRDQ6BmevjOijNEAFxrbI867bvhTdNlW6x9ISS9ZC+lHYAxxRMNpRfUQPlyEZKFUkQXfX2+aYajWFNEX1RU0pkmfcSvm4pvV8VMwl35xghXp0RuoG6NpWid4ZRwHtFrlHbiBKK392NnRmk3PH38bgqc06zEYh/VaNmJkaDx5omkWpPk1HtGcKpJCO+CbrP2Go856f34gk4hCmZKEBKpLN471KVFUsA2Z9fKoQxCOqY3+YR admin@DESKTOP-JKA43KI

pycharm能连接docker中的环境开发么_spark_06

注意:复制公钥内容时不要有换行

5.确保CDSW管理员没有禁用“remote editing”

pycharm能连接docker中的环境开发么_客户端_07

2 初始化SSH连接CDSW

1.打开cmd命令行进入下载的cdswctl客户端工具目录

pycharm能连接docker中的环境开发么_spark_08

2.在当前目录执行如下命令登录CDSW

cdswctl.exe login -n admin -u http://master.hadoop.com

pycharm能连接docker中的环境开发么_客户端_09

注意:此处会提示输入登录用户的密码,这里使用admin用户,登录成功后会在当前window用户的home目录下生成一个.cdsw目录下生成一个config.yaml的配置文件

pycharm能连接docker中的环境开发么_配置文件_10

该配置文件主要记录了用户访问cdsw的信息,以避免重复登录问题

username: admin
url: http://master.hadoop.com/
auth:
  authtype: 1
  basic: null
  apikey: uwmx9ljglt1ya66j17zir3a94y92x8tr

3.执行如下命令获取当前登录用户的project列表

cdswctl.exe projects list

pycharm能连接docker中的环境开发么_配置文件_11

4.完成上述命令执行如下命令创建一个本地的ssh通道与CDSW远端建立连接

cdswctl.exe ssh-endpoint -p admin/testsparkpy -c 1 -m 2

pycharm能连接docker中的环境开发么_配置文件_12

如上图所示则为命令运行成功,此时登录CDSW可以看到testsparkpy工程下已启动一个Session

pycharm能连接docker中的环境开发么_spark_13

5.打开一个新的cmd窗口,执行如下命令验证SSH通道是否可用

ssh -p 6926 cdsw@localhost

pycharm能连接docker中的环境开发么_客户端_14

如上图所示就完成本地与CDSW的SSH通道的建立,接下来可以使用本地的Pycharm工具通过创建的SSH通道创建一个Project工程。

3 Pycharm创建远程Project

1.打开本地开发工具Pycharm,点击”Create New Project”

pycharm能连接docker中的环境开发么_spark_15

2.输入Project命令,选择使用”Existing interpreter”

pycharm能连接docker中的环境开发么_配置文件_16

3.点击“Interpreter”一栏的”…”菜单,进入Interpreter配置界面,选择“SSH Interpreter”并输入初始化SSH连接CDSW最后一步返回的ssh登录信息

pycharm能连接docker中的环境开发么_spark_17

4.点击“Next”进入SSH通道验证界面,验证成功后会返回如下界面

pycharm能连接docker中的环境开发么_配置文件_18

这里可以根据自己的需要选择python的运行环境,默认使用/usr/bin/python环境

5.完成Python环境选择后,点击“Finish”完成SSH Interpreter的创建

pycharm能连接docker中的环境开发么_spark_19

6.完成上述配置后,点击“Create”创建工程

pycharm能连接docker中的环境开发么_spark_20

注意:此时完成了Project的创建,发现CSDW上testsparkpy工程里面的代码并不存在该工程下。

7.点击testpyspark工程,鼠标右键从testpyspark下载代码至本地

pycharm能连接docker中的环境开发么_配置文件_21

8.执行成功后就完成cdsw代码同步至本地的操作

pycharm能连接docker中的环境开发么_客户端_22

到此为止就完成了CDSW使用本地IDE Pycharm的配置,可以开心的本IDE下开发模型了。

4 总结

1.需要在使用本地Pycharm的Window客户端创建公钥/私钥对,并将公钥信息配置到CDSW的公钥列表

2.Window客户端需要正确配置DNS地址,确保能够通过泛域名解析到CDSW服务,否则cdswctl创建SSH通道时会验证不通过

3.cdswctl工具可以通过cdswctl -h方式查看命令使用方式

4.CDSW管理员需要在配置项中启用“Allow remote edititing”