1. 产品概述
客户侧搭建FTP/SFTP服务器,将数仓数据定期以文件的形式推入FTP/SFTP服务器中,CDP/ABI系统通过连接FTP/SFTP将数据下载,然后将文件结构化映射成相关表结构内容共CDP/ABI系统识别读取。
- FTP:适用于非敏感数据的传输,主要在受信任的内网环境中使用。
- SFTP:适用于敏感数据的传输,尤其是在公共网络上或对安全性有严格要求的场景。
2.使用场景
2.1 什么时候用FTP?
- 不需要加密:如果你在一个安全的内网环境中传输文件,不需要加密通信,FTP是一个简单高效的选择。
- 兼容性要求:有些旧系统或特定软件可能只支持FTP。
- 速度要求高:在极少数情况下,FTP可能比SFTP稍微快一些,因为它没有加密和解密的开销。
- 简单的设置和使用:FTP的设置和使用相对简单,不需要额外的配置如SSH密钥等。
2.2 什么时候用SFTP?
- 需要加密:如果你在公共网络(如互联网)上传输敏感数据,SFTP是首选,因为它提供了强大的加密,确保数据在传输过程中不会被截获和篡改。
- 安全性要求高:SFTP通过SSH (Secure Shell)通道进行传输,具有更高的安全性,适用于需要确保数据传输安全的场景。
- 认证和授权:SFTP支持基于密钥的认证,可以提供比FTP用户名和密码更安全的认证机制。
- 符合合规要求:在某些行业或法律法规下,数据传输必须加密(如金融、医疗等),这时必须使用SFTP。
3. 使用条件
用户需具备 项目编辑 或 权限-按内容管理-模块-数据连接-新建连接 权限,才能使用该功能。
4. 操作步骤
首先,点击 数据准备 > 数据连接 。
其次,在数据连接目录左上角- 新建数据连接 按钮,选择 “Web连接器 - FTP/SFTP” 数据连接。
再次,在编辑页面,配置对应参数。如:
- 数据连接名称:必填项目,连接名_年月日时分秒,如ftp_sftp_xxx
- 配置服务器端口/用户名/密码等
FTP服务器部署:
可由客户侧自由搭建,但是可以开放CDP系统连接访问。
FTP服务器需要配置被动模式,且端口范围需要足够大,建议值为:FTP数据集数量*2
*更多配置过程中的常见问题可参考本文档 [附录2]
- 协议类型:FTP
- FTP连接模式:默认为Pasv(被动模式)
- 文件类型:支持csv\txt
FTP文件内容及格式要求如下:
- 文件目录格式:必填, 如/data/student
- 规则1:最后一级目录名称必须和表名一致,格式为/data/{tableName},如/data/student
- 规则2:不支持多级目录解析,请勿在数据文件所在目录下定义子目录,如有系统会自动跳过
- 规则3:文件目录不建议变化,变化前请先更新【DataWind-数据连接】配置项,避免数据查询异常
- 规则4:一个文件目录表示一张表,不支持多表共用一个文件目录,也不支持一张表有多个目录
- 文件目录内容:
- 数据文件:必填, 只支持CSV、TXT,可以有多个文件,名称也不做限制
- 规则:数据文件列(字段)顺序必须和元信息文件保持一致,且数据文件不包含表头(字段名行)
- 规则:每次查询时,根据文件目录地址拉取全部数据 (不包含子目录文件)
- 规则:单文件目录下文件总大小建议小于500G
- 元信息文件:必填, {tableName}.yml (如果有结构变动需要改这个文件)
- 规则1:用于解析数据文件映射为结构化表
- 规则2:{tableName}为表名,不支持表名变更,{tableName}需要和该目录名称一致
- 文件内容格式参见后文的附录1
- 同步成功标志文件:必填, {date}.verf,例如 20230801.verf
- 逻辑:用于标记数据是否推送完成,此任务用于构建对FTP任务的依赖逻辑
- 规则1:文件必须存在,任务执行时读取20230801文件名判断相应业务日期的数据有没有ready
- 规则2:历史更新的同步成功文件可以保留,可以删除,不影响最新一天的判断
- 规则3:回刷场景,逻辑上不支持保留历史数据,每次从FTP拉取数据都是根据文件目录全量拉取,回刷时,如历史日期的同步成功标志依然存在,则会根据最新的文件拉取全部数据,如不存在,则回刷任务会一直Pending,无法执行成功
单击 解析表结构 ,将对文件目录进行解析,数据表预览展示表名和字段名,表名如果过多的话,支持滚动展示,默认展示第一个表名下的字段信息。
单击 测试连接,将进行数据源连通性测试。
测试成功后,单击 保存 即可。
附录1:文件内容格式
#请按以下参数填写:
### name:字段名称(必填)
########## 字段命名规则:需确保字段名唯一性;仅支持字母、数字、下划线且以字母为首,最多100个字符
### alias:字段别名(选填)
########## 字段别名规则:字符类型不限,最多100个字符
### type:字段类型(必填)
########## 类型规则:无需明确长度,可指定类型如下:
# string
# boolean
# long
# double
# date
# datetime
# 下面两种类型中的%s仅支持基本类型如int
# 不支持多层嵌套,例如array<array<int>>
# array<%s>
# map<%s,%s>
#--------------------------------------------------------------------------------
columns:
- name: brand_id
alias: 品牌id
type: int
- name: brand_name
alias: 品牌名称
type: string
- name: brand_desc
alias: 品牌介绍
type: string
- name: create_time
alias: 创建时间
type: date
- name: update_time
alias: 变更时间
type: date
附录2:FTP配置常见问题
Q1:FTP连接服务器遇到530 login incorrect错误怎么解决?
1)密码错误。
2)检查/etc/vsftpd/vsftpd.conf配置
vim /etc/vsftpd/vsftpd.conf
参看下面配置
anonymous_enable=YES
userlist_deny=NO //参看下面的说明
userlist_enable=YES
userlist_file=/etc/userlist
seccomp_sandbox=NOlocal_enable=YES
pam_service_name=vsftpd //这里重要,有人说ubuntu是pam_service_name=ftp,可以试试
其中关于userlist文件的说明
vsftpd userlist
If userlist_deny=NO, only allow users in this file
If userlist_deny=YES (default), never allow users in this file, and
do not even prompt for a password.
Note that the default vsftpd pam config also checks /etc/vsftpd/ftpusers
for users that are denied.
3)检查/etc/pam.d/vsftpd
vim /etc/pam.d/vsftpd
注释掉
#auth required pam_shells.so
Q2:Linux实例上传文件到FTP站点报“425 Security:Bad IP connection”错误怎么解决?
1)可能的原因:
FTP服务有两种连接,一种是控制连接,另一种是数据连接。默认情况下,FTP服务器在传输数据时会检查两个连接的源IP地址是否相同。如果不是,则会报告“425 安全:错误的 IP 连接”错误。此问题往往是由于NAT网络中的客户端,且NAT关联的公网IP地址多个,导致两次连接,源IP不一致造成的。
2)解决方案:
关闭被动模式下的IP地址安全检查,如下:
- 执行以下命令编辑FTP配置文件:
- vi /etc/vsftpd/vsftpd.conf
- 在配置文件中添加以下内容:
pasv_promisculous=是 - 保存退出后,执行以下命令重启FTP服务。
- 服务 vsftpd 重新启动
参考资料:
附录3:SFTP配置经验
- 端口号修改(新增):https://blog.csdn.net/dandan201212/article/details/124772566