Loader简介
FusionInsight HD Loader能实现FusionInsight HD与外部数据源如关系型数据库、SFTP服务器、FTP服务器之间交换数据和文件。支持将数据或文件从关系型数据库或文件系统导入到FusionInsight HD系统中。
Loader支持的导入场景:
支持从关系型数据库导入数据到HDFS、HBase、Phoenix表、Hive表。
支持从SFTP服务器导入文件到HDFS、HBase、Phoenix表、Hive表。
支持从FTP服务器导入文件到HDFS、HBase、Phoenix表、Hive表
支持同一集群内HDFS导入文件到HBase
从VoltDB数据库导入数据到HDFS、HBase、Phoenix表、Hive表。
Loader支持的导出场景:
支持从HDFS中导出文件到SFTP服务器、关系型数据库。
支持从HBase中导出文件到SFTP服务器、关系型数据库。
支持从HDFS、HBase、Phoenix中导出数据到VoltDB数据库。
支持从Phoenix表导出数据到SFTP服务器、关系型数据库。
支持从Hive中导出数据到SFTP服务器、关系型数据库、VoltDB。
支持同一集群内HBase导出文件到HDFS。
Loader使用的两种途径
Loader支持通过界面可视化UI或者命令行工具调用他的功能。
UI界面
通过FusionInsight Manage的服务管理菜单,进入Loader服务,使用Loader页面进行Loader作业的创建与运行。本文以从MySQL导入数据到HBase作为实例对LoaderUI进行说明。详见《LoaderUI实例:从MySQL导入数据到HBase》一章。
命令行工具
Loader提供在客户端使用命令行的方式使用Loader服务。本文以从HBase导出数据到MySQL作为实例对命令行工具做了介绍,详见《命令行工具实例:从HBase导出数据到MySQL》一章。
注:Loader客户端中包含Loader的JavaAPI样例,但是该代码样例已经被废弃,所以通过JavaAPI调用Loader服务不建议使用。
实例介绍
本文中的实例,使用的版本为:FusionInsight HD V100R002C60U10
LoaderUI实例:从MySQL导入数据到HBase
用户能通过LoaderUI界面方式来使用Loader的服务,实现数据导入或者导出功能。
实现步骤:
1. 登录Loader
通过FusionInsight HD Manager登录LoaderUI界面
2.单击“新建作业”按钮,进入新建界面
3.配置连接器信息
选择“添加”或者“编辑”,创建新连接或者使用已有连接。
配置详细连接信息。
4.配置MySQL要导入到HBase的数据信息
配置要导入的数据库为test0502,表为teacher,导入的列为id及address。
5.配置输入信息(MySql列设置)
将左侧输入中的“表输入”拖动到右侧操作区,并单击编辑按钮进行输入项配置界面。
单击“自动识别”,识别列。
识别效果如下:
6.配置输出信息(HBase列设置)
将左侧输出中的“HBase输出”拖动到右侧操作区,并单击编辑按钮进行输入项配置界面。
设置HBase的表空间,列族,列等信息。至少要指定一个字段为主键。
7.用线连接输入输出配置
为输入及输出配置连线。
8.设置任务执行信息
8.查看结果
配置完成后单击保存并运行,看到Loader的首页有刚刚配置好的任务执行状况。
待任务执行完毕,即可通过HBase的JavaAPI等途径,查看是否导入数据成功。
LoaderUI实例:标准csv文件数据导入HBase时去掉数据的双引号。
CSV文件中数据带有双引号。例如“数据一”、“数据二”这种数据需要去掉双引号才能导入到HBase当中。
将数据导入HBase的配置方法与MySQL导入数据到HBase操作类似,不同的地方在于在新建的作业中,除了配置输入信息及输出信息,还要配置中间数据的转换步骤。即:配置算子。
实现步骤:
1.使用“剪切字符串”算子去掉开头处的双引号
将左侧转换中的“剪切字符串”拖动到右侧操作区,单击编辑,进行设置。截取“2”到“-1”(即末尾),得到去掉首位双引号的字符串。
2.使用“字符串逆序转换”算子逆序字符串一次
将左侧转换中的“字符串逆序转换”拖动右侧到操作区,单击编辑,进行设置。得到1中字符串的逆序字符串。
3. 使用“剪切字符串”算子去掉结尾处的双引号
将左侧转换中的“剪切字符串”拖动到右侧操作区,单击编辑,进行设置。“2”到“-1”(即末尾),截取步骤2中已经逆序过的字符串。
4. 使用“字符串逆序转换”得到目标字符串
将左侧转换中的“字符串逆序转换”拖动到右侧操作区,单击编辑,进行设置。将步骤3中的字符串逆序,得到目标字符串(去掉字符串首位双引号的字符串)。
以上四步分转换过程即可去掉数据的双引号。
命令行工具实例:从HBase导出数据到MySQL
除了LoaderUI,用户还能在客户端通过Loader的工具,以命令行的方式使用Loader的服务。在本实例中使用预先准备好的作业模板,搭配命令行完成功能完成HBase导出数据到MySQL功能。
作业模板为xml文件,文件名格式为“数据原保存位置-to-数据新保存位置.xml”,例如“hbase-to-mysql.xml”。
作业模板对应的转换步骤配置文件,文件类型为json,例如“hbase-to-mysql.json”。
模板跟转换配置文件准备好后,使用Loader-tool的“lt-ucc”、“lt-ucj”、“lt-ctl”工具实现HBase导出数据到MySQL。
lt-ucc:连接器配置工具,用于连接器的创建、更新和删除操作。
lt-ucj:作业配置工具,用于对作业的创建、更新删除操作。
lt-ctl:作业管理工具,用于启停作业,查询作业状态与进度,查询作业是否运行中。
实现步骤:
假定Loader客户端的安装目录为:“/opt/hadoopclient/Loader/”。
命令:
./lt-ucc -l /opt/hadoopclient/Loader/loader-tools-1.99.3/loader-tool/job-config/login-info.xml -w /opt/hadoopclient/Loader/loader-tools-1.99.3/loader-tool/job-config/hbase-to-mysql.xml -a create
命令中使用到了login-info.xml及hbase-to-mysql.xml两个文件。
login-info.xml
login-info.xml为授权配置文件包含如下参数。
参数名称
|
描述
|
hadoop.config.path
|
填写Hadoop集群“core-site.xml”、“hdfs-site.xml”和“krb5.conf”三个配置文件的保存目录。默认保存在“Loader客户端安装目录/Loader/loader-tools-1.99.3/loader-tool/hadoop-config/”。
|
authentication.type
|
Loader服务的鉴权类型,请根据FusionInsight HD集群认证模式填写:
§ “kerberos”:表示安全模式。
§ “simple”:表示普通模式。
|
user.keytab
|
是否使用keytab文件认证,参数值为“true”与“false”。
|
authentication.user
|
安全模式中若不使用keytab认证,配置访问Loader服务的“人机”用户名。
|
authentication.password
|
安全模式中若不使用keytab认证,配置访问Loader服务的用户密码加密字符串。
说明:
使用安装客户端的用户执行以下命令加密密码。加密工具第一次执行时自动生成随机动态**并保存在“.loader-tools.key”中,加密工具每次加密密码时会使用此动态**。删除“.loader-tools.key”后加密工具执行时会重新生成新的随机**并保存在“.loader-tools.key”中。
sh Loader客户端安装目录/Loader/loader-tools-1.99.3/encrypt_tool password
|
authentication.principal
|
安全模式中使用keytab认证,配置访问Loader服务的“机机”用户名。
|
authentication.keytab
|
安全模式中使用keytab认证,配置访问Loader服务的“机机”用户keytab文件目录,需包含绝对路径。
|
zookeeper.quorum
|
配置连接ZooKeeper节点的IP地址和端口,参数值格式为“IP1:port,IP2:port,IP3:port”,以此类推。默认端口号为“24002”。
|
sqoop.server.list
|
配置连接Loader的浮动IP和端口,参数值格式为“floatip:port”。默认端口号为“21351”。
|
hbase-to-mysql.xml为作业模板。
配置实例:
hbase-to-mysql.json
hbase-to-mysql.json为作业模板对应的转换步骤配置文件
执行结果判断
执行命令后如无报错信息,且显示如下信息,则表示连接器创建成功。
User login success. begin to execute task.
2.使用lt-ucj创建HbaseToMySQL作业
命令
./bin/lt-ucj -l /opt/hadoopclient/Loader/loader-tools-1.99.3/loader-tool/job-config/login-info.xml -w /opt/hadoopclient/Loader/loader-tools-1.99.3/loader-tool/job-config/ hbase-to-mysql.xml -a create
命令中使用到了login-info.xml及hbase-to-mysql.xml两个文件。文件的介绍详见《使用lt-ucc创建HbaseToMySQL连接器》一章。
执行结果判断
执行命令结束后如无报错信息,且显示如下信息,则表示作业创建成功。
User login success. begin to execute task.
命令
./bin/lt-ctl -l /opt/hadoopclient/Loader/loader-tools-1.99.3/loader-tool/job-config/login-info.xml -n HTSnn -a status
其中HTSnn为hbase-to-mysql.xml中配置的作业名称。
执行结果判断
执行命令结束后显示类似如下信息,则命令执行成功。
Job: HTSnn
Status:RUNNING
Progress: 0.0
总结
用户在从传统数据库迁移到大数据环境的时候,Loader能很好的帮助我们对旧的数据进行迁移。且支持多种导入导出功能。但是在使用过程中我们可能会遇到一些问题。一些经验之谈再次做简单列举。
1.使用与FusionInsight HD相匹配的文档
例如在执行命令行作业启动的时候,提示HBase实例找不到。
当遇到问题时我们可以查阅产品文档,在使用文档时,需要注意的是,一定要使用与系统版本匹配的文档。例如“HBase实例找不到”这个错误,就是因为在C50的HD环境中使用了C60的作业模板导致的。Loader组件在FusionInsight HD版本中在持续更新。细节上会有写差异。
2.LoaderUI与命令行相互辅助完成目标
在使用Loader命令行工具的时候,遇到问题可以使用LoaderUI进行辅助,例如本文中Loader-tool工具在使用的时候涉及到作业模板对应的转换步骤Json格式的配置文件的准备工作。如果拿不定Json中算子的配置写法,可以在LoaderUI中配置好算子,然后使用UI自带的导出功能,导出具体的算子Json代码段。目前LoaderUI不支持完整的Loader作业导出为Json,但是单个算子导出是可以的。该功能在一定程度上能帮助我们书写Json配置文件。
3.使用日志辅助定位问题
单纯的错误提示可能不足以定位问题,此时需要获取错误发生点附近的完整日志。定位问题发生的原因。完整日志可以通过FusionInsight Manage的“系统设置菜单”中“日志下载”选择相应的服务日志进行获取。