使用Loader从SFTP服务器导入数据到HDFS/OBS
操作场景
该任务指导用户使用Loader将数据从SFTP服务器导入到HDFS/OBS。
前提条件
- 创建或获取该任务中创建Loader作业的业务用户和密码。
- 确保用户已授权访问作业执行时操作的HDFS/OBS目录和数据。
- 获取SFTP服务器使用的用户和密码,且该用户具备SFTP服务器上源文件的读取权限。如果源文件在导入后文件名要增加后缀,则该用户还需具备源文件的写入权限。
- 检查磁盘空间,确保没有出现告警且余量满足导入、导出数据的大小。
- 使用Loader从SFTP服务器导入数据时,确保SFTP服务器输入路径目录名、输入路径的子目录名及子文件名不能包含特殊字符/\"':;,中的任意字符。
- 如果设置的作业需要使用指定YARN队列功能,该用户需要已授权有相关YARN队列的权限。
- 设置任务的用户需要获取该任务的执行权限,并获取该任务对应的连接的使用权限。
操作步骤
设置作业基本信息
- 登录“Loader WebUI”界面。
- 登录FusionInsight Manager系统,具体请参见访问集群Manager。
- 选择“集群 > 服务 > Loader”。
- 单击“LoaderServer(节点名称,主)”打开“Loader WebUI”界面。
图1 Loader WebUI界面
- 单击“新建作业”,进入“基本信息”界面,创建作业基本信息。
图2 “基本信息”界面
- 在“名称”中输入作业的名称。
- 在“类型”中选择“导入”。
- 在“组”中设置作业所属组,默认没有已创建的组,单击“添加”创建一个新的组,输入组的名称,单击“确定”保存。
- 在“队列”中选择执行该作业的YARN队列。默认值“root.default”。
- 在“优先级”中选择执行该作业的YARN队列优先级。默认值为“NORMAL”。可选值为“VERY_LOW”、“LOW”、“NORMAL”、“HIGH”和“VERY_HIGH”。
- 在“连接”区域,单击“添加”新建一个的连接,在“连接器”中选择“sftp-connector”,单击“添加”,输入配置连接参数,单击“测试”验证连接是否可用,待提示“测试成功”后单击“确定”。Loader支持配置多个SFTP服务器操作数据,单击“添加”可增加多行SFTP服务器的配置信息。
表1 连接参数 参数名
说明
示例
名称
SFTP服务器连接的名称。
sftpName
Sftp服务器的IP
SFTP服务器的IP地址。
10.16.0.1
Sftp服务器端口
SFTP服务器的端口号。
22
Sftp用户名
访问SFTP服务器的用户名。
root
Sftp密码
访问SFTP服务器的密码。
xxxx
Sftp公钥
Sftp服务器公钥。
OdDt/yn...etM
配置多个SFTP服务器时,多个SFTP服务器指定目录的数据导入到HDFS/OBS的同一个目录下。
设置数据源信息
- 单击“下一步”,进入“输入设置”界面,设置数据源信息。
表2 输入设置参数 参数名
说明
示例
输入路径
SFTP服务器中源文件的输入路径,如果连接器配置多个地址此处可对应使用“;”分隔多个输入路径,数量需要与连接器中服务器的数量一致。
说明:路径参数可以使用宏定义,具体请参考Loader算子配置项中使用宏定义。
/opt/tempfile;/opt
文件分割方式
选择按文件或大小分割源文件,作为数据导入的MapReduce任务中各个map的输入文件。
- 选择“FILE”,表示按文件分割源文件,即每个map处理一个或多个完整的源文件,同一个源文件不可分配至不同map,完成数据导入后保持源文件的目录结构。
- 选择“SIZE”,表示按大小分割源文件,即每个map处理一定大小的输入文件,同一个源文件可分割至多个map,数据保存至输出目录时保存的文件数与map数量相同,文件名格式为“import_part_xxxx”,“xxxx”为系统生成的随机数,具有唯一性。
FILE
过滤类型
选择文件过滤的条件,与“路径过滤器”、“文件过滤器”配合使用。
- 选择“WILDCARD”,表示使用通配符过滤。
- 选择“REGEX”,表示使用正则表达式匹配。
- 不选择,则默认为通配符过滤。
WILDCARD
路径过滤器
与“过滤类型”配合使用,配置通配符或正则表达式对源文件的输入路径包含的目录进行过滤。“输入路径”不参与过滤。使用分号“;”分隔多个服务器上的路径过滤器,每个服务器的多个过滤条件使用逗号“,”隔开。配置为空时表示不过滤目录。
- “?”匹配单个字符。
- “*”配置多个字符。
- 在匹配条件前加“^”表示取反,即文件过滤。
例如,当“过滤类型”选择“WILDCARD”时,将该参数设置为“*”;当“过滤类型”选择“REGEX”时,将该参数设置为“\\.*”。
1*,2*;1*
文件过滤器
与“过滤类型”配合使用,配置通配符或正则表达式对源文件的输入文件名进行过滤。使用分号“;”分隔多个服务器上的文件过滤器,每个服务器的多个过滤条件使用逗号“,”隔开。该参数不能配置为空。
- “?”匹配单个字符。
- “*”配置多个字符。
- 在匹配条件前加“^”表示取反,即文件过滤。
例如,当“过滤类型”选择“WILDCARD”时,将该参数设置为“*”;当“过滤类型”选择“REGEX”时,将该参数设置为“\\.*”。
*.txt,*.csv;*.txt
编码类型
源文件的编码格式,如UTF-8、GBK。导入文本文件时才能配置。
UTF-8
后缀名
源文件导入成功后对输入文件增加的后缀值。该值为空,则表示不加后缀。数据源为文件系统,该参数才有效。用户如果需增量导入数据建议设置该参数。
例如设置为“.txt”,源文件为“test-loader.csv”,则导出后源文件名为“test-loader.csv.txt”。
.log
压缩
使用SFTP协议导入数据时,是否开启压缩传输功能以减小带宽使用。
- 选择“true”,表示开启压缩。
- 选择“false”,表示关闭压缩。
true
设置数据转换
- 单击“下一步”,进入“转换”界面,设置数据传输过程中的转换操作。算子的选择和参数设置具体请参考Loader算子帮助及表3。
图3 算子操作方法示意
设置数据保存信息并运行作业
- 单击“下一步”,进入“输出设置”界面,在“存储类型”中选择“HDFS”,设置数据保存方式。
表4 输出设置参数 参数名
说明
示例
文件类型
文件导入后保存的类型:
- “TEXT_FILE”:导入文本文件并保存为文本文件
- “SEQUENCE_FILE”:导入文本文件并保存在“sequence file”文件格式
- “BINARY_FILE”:以二进制流的方式导入文件,可以导入任何格式的文件
TEXT_FILE
压缩格式
在下拉菜单中选择数据导入HDFS/OBS后保存文件的压缩格式,未配置或选择NONE表示不压缩数据。
NONE
输出目录
数据导入到HDFS/OBS里存储的保存目录。
说明:路径参数可以使用宏定义,具体请参考Loader算子配置项中使用宏定义。
/user/test
是否执行前删除文件
(适用于MRS 3.5.0及以后版本)
作业运行前是否删除根据文件名标识生成的文件,以做到数据可以重入。
- false(默认值):作业运行前不执行删除文件动作。
- true:作业运行前会删除指定文件名的文件,对应的“文件操作方式”为“OVERRIDE”直接覆盖旧文件。仅支持如下连接器:
- generic-jdbc-connector
- oracle-connector
- mysql-fastpath-connector
false
文件名标识
(适用于MRS 3.5.0及以后版本)
文件名标识,用来生成导入的文件名。
- 文件名格式:import_part_xxx_000000000。
- “xxx”为文件名标识。
- 取值范围:[0-9],[a-z],[A-Z],中划线,下划线和点。
- 长度:[1-255]。
- “是否执行前删除文件”为“true”时必填。
12
文件操作方式
数据导入时的操作行为。全部数据从输入路径导入到目标路径时,先保存在临时目录,然后再从临时目录复制转移至目标路径,任务完成时删除临时路径的文件。转移临时文件存在同名文件时有以下行为:
- “OVERRIDE”:直接覆盖旧文件。
- “RENAME”:重命名新文件。无扩展名的文件直接增加字符串后缀,有扩展名的文件在文件名增加字符串后缀。字符串具有唯一性。
- “APPEND”:在旧文件尾部合并新文件内容。合并操作只是简单的追加,不保证追加文件是否可以使用。例如文本文件可合并,压缩文件合并后可能无法使用。
- “IGNORE”:保留旧文件,不复制新文件。
- “ERROR”:转移过程中出现同名文件时任务将停止执行并报错,已转移的文件导入成功,同名的文件及未转移的文档导入失败。
OVERRIDE
Map数
配置数据操作的MapReduce任务中同时启动的Map数量。不可与“Map数据块大小”同时配置。参数值必须小于或等于3000,建议以SFTP服务器的CPU的核数作为其取值。
说明:为了提高导入数据速度,需要确保以下条件:
- 每个Map连接时,相当于一个客户端连接,因此需要确保SFTP服务器最大连接数大于Map数量。
- 确保SFTP服务器上的磁盘IO或是网络带宽都未达到上限。
20
Map数据块大小
配置数据操作的MapReduce任务中启动map所处理的数据大小,单位为MB。参数值必须大于或等于100,建议配置值为1000。不可与“Map数”同时配置。
1000
- 单击“保存并运行”,开始保存并运行作业。
查看作业完成情况
- 进入“Loader WebUI”界面,待“状态”显示“成功”则说明作业完成。
图4 查看作业