使用命令行运行Loader作业
操作场景
一般情况下,用户可以手工在Loader界面管理数据导入导出作业。当用户需要通过shell脚本来更新与运行Loader作业时,必须对已安装的Loader客户端进行配置。
Loader不兼容旧版本客户端,如果重新安装集群或Loader服务,请重新下载并安装客户端,然后正常使用客户端。
前提条件
- 完成Loader客户端的安装。使用非root用户安装Loader客户端时,如果其他用户也需要使用该客户端,则需要当前客户端的安装用户或者其他拥有更大权限的用户进行授权(将loader客户端的安装目录赋予“755”权限),请用户关注授权后的安全问题。
- 创建访问Loader服务的用户,如果是“机机”用户需要下载keytab文件。
操作步骤
- 配置Loader shell客户端。
- 使用安装客户端的用户登录客户端所在节点。
- 执行以下命令,防止超时退出。
执行完本章节操作后,请及时恢复超时退出时间,执行命令TMOUT=超时退出时间。例如:TMOUT=600,表示用户无操作600秒后超时退出。
- 执行以下命令,进入Loader客户端安装目录。例如,Loader客户端安装目录为“/opt/hadoopclient/Loader”。
- 执行以下命令,配置环境变量。
- 如果集群为安全模式,执行以下命令进行用户认证。普通模式集群无需执行用户认证。
- 执行以下命令修改工具授权配置文件“login-info.xml”,并保存退出。配置文件参数请参见表1。
vi loader-tools-1.99.3/loader-tool/job-config/login-info.xml
表1 login-info.xml参数 参数名称
描述
hadoop.config.path
填写MRS集群“core-site.xml”、“hdfs-site.xml”和“krb5.conf”三个配置文件的保存目录。默认保存在“Loader客户端安装目录/Loader/loader-tools-1.99.3/loader-tool/hadoop-config/”。
authentication.type
Loader服务的鉴权类型,请根据MRS集群认证模式填写:
- “kerberos”:表示安全模式。
- “simple”:表示普通模式。
user.keytab
是否使用keytab文件认证,参数值为“true”与“false”。
authentication.user
普通模式或者使用密码认证方式时,登录使用的用户。
keytab登录方式,则不需要设置该参数。
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”,以此类推。默认端口号为“2181”。
sqoop.server.list
配置连接Loader的浮动IP和端口,参数值格式为“floatip:port”。默认端口号为“21351”。
- 使用Loader shell客户端。
- 执行以下命令,进入Loader shell客户端目录。例如,Loader客户端安装目录为“/opt/hadoopclient/Loader”。
cd /opt/hadoopclient/Loader/loader-tools-1.99.3/shell-client/
- 执行以下命令,通过Loader shell客户端工具运行作业。
./submit_job.sh -n <arg> -u <arg> -jobType <arg> -connectorType <arg> -frameworkType <arg>
表2 Loader shell客户端工具参数一览表 参数名称
描述
“-n”
必配项,表示作业名称。
“-u”
必配项。
指定参数值为“y”表示更新作业参数并运行作业,此时需配置“-jobType”、“-connectorType”和“-frameworkType”。指定参数值为“n”表示不更新作业参数直接运行作业。
“-jobType”
表示作业类型,当“-u”的值为“y”时,必须配置。
指定参数值为“import”表示数据导入作业,指定参数值为“export”表示数据导出作业。
“-connectorType”
表示连接器类型,当“-u”的值为“y”时,必须配置。根据业务需要可修改外部数据源的部分参数。
指定参数值为“sftp”表示SFTP连接器。
- 在导入作业中,支持修改源文件的输入路径“-inputPath”、源文件的编码格式“-encodeType”和源文件导入成功后对输入文件增加的后缀值“-suffixName”。
- 在导出作业中,支持修改导出文件的路径或者文件名“-outputPath”。
指定参数值为“rdb”表示关系型数据库连接器。
- 在导入作业中,支持修改数据库模式名“-schemaName”、表名“-tableName”、SQL语句“-sql”、要导入的列名“-columns”和分区列“-partitionColumn”。
- 在导出作业中,支持修改数据库模式名“-schemaName”、表名“-tableName”和临时表名称“-stageTableName”。
“-frameworkType”
表示MRS端数据保存的类型,当“-u”的值为“y”时,必须配置。根据业务需要可修改数据保存类型的部分参数。
指定参数值为“hdfs”表示Hadoop端使用HDFS。
- 在导入作业中,支持修改启动的map数量“-extractors”和数据导入到HDFS里存储的保存目录“-outputDirectory”。
- 在导出作业中,支持修改启动的map数量“-extractors”、从HDFS导出时的输入路径“-inputDirectory”和导出作业的文件过滤条件“-fileFilter”。
指定参数值为“hbase”表示MRS端使用HBase。在导入作业和导出作业中,支持修改启动的map数量“-extractors”。
- 执行以下命令,进入Loader shell客户端目录。例如,Loader客户端安装目录为“/opt/hadoopclient/Loader”。
任务实例
- 不更新作业参数,直接运行名称为“sftp-hdfs”的作业。
- 更新名称为“sftp-hdfs”导入作业的输入路径、编码类型、后缀、输出路径和启动的map数量参数,并运行作业。
./submit_job.sh -n sftp-hdfs -u y -jobType import -connectorType sftp -inputPath /opt/tempfile/1 -encodeType UTF-8 -suffixName '' -frameworkType hdfs -outputDirectory /user/user1/tttest -extractors 10
- 更新名称为“db-hdfs”导入作业的数据库模式、表名、输出路径参数,并运行作业。
./submit_job.sh -n db-hdfs -u y -jobType import -connectorType rdb -schemaName public -tableName sq_submission -sql '' -partitionColumn sqs_id -frameworkType hdfs -outputDirectory /user/user1/dbdbt