OssImport系列之三——分布式部署

相关文章:OssImport系列之一——架构

下载

分布式部署目前只支持Linux,Windows暂不支持。

分布式版本下载地址 ossimport-2.2.1.tar.gz ,下载到本地后,使用命令 tar -zxvf ossimport-2.2.0.tar.gz -C $HOME/ossimport 解压,解压后的文件结构如下:

ossimport
├── bin
│   ├── console.jar     # Console模块jar包
│   ├── master.jar      # Master模块jar包
│   ├── tracker.jar     # Tracker模块jar包
│   └── worker.jar      # Worker模块jar包
├── conf
│   ├── job.cfg         # Job配置文件模板
│   ├── sys.properties  # 系统运行参数配置文件
│   └── workers         # Worker列表
├── console.sh          # 命令行工具,目前支持只Linux
├── logs                # 日志目录
└── README.md           # 说明文档,使用前请仔细阅读

注意

  • OSS_IMPORT_HOME:OssImport的根目录,默认为解压命令中的目录 $HOME/ossimport ,也可以通过命令 export OSS_IMPORT_HOME=<dir> 或修改系统配置文件 $HOME/.bashrc 设置,推荐使用默认目录;
  • OSS_IMPORT_WORK_DIR:OssImport的工作目录,通过 conf/sys.properties 的配置项 workingDir 指定,推荐为 $HOME/ossimport/workdir
  • OSS_IMPORT_HOMEOSS_IMPORT_WORK_DIR 请使用绝对路径配置,如 /home/<user>/ossimport/home/<user>/ossimport/workdir

配置

分布式部署有三个个配置文件conf/sys.propertiesconf/local_job.cfgconf/workers,配置项的含义请看 介绍 章节。

  • conf/job.cfg:分布式模式下任务的配置文件模板,数据迁移前请按照实际参数修改;
  • conf/sys.properties:系统运行参数配置文件,如工作目录、Worker运行参数等请在该文件中配置;
  • conf/workers:worker列表。

注意

  • 请在提交任务前确认 sys.propertieslocal_job.cfg 中的参数,任务提交后参数无法再修改;
  • Worker 列表 workers 请启动服务前确定,启动后无法再增加或删除。

运行

执行命令

分布式部署时,执行任务的一般步骤是 修改任务配置文件部署服务清除同名任务提交任务启动迁移服务查看任务状态重试失败子任务停止迁移任务 。详细说明如下:

  • 部署服务。执行Linux终端执行 bash console.sh deploy部署前请保证配置文件 conf/job.cfg、conf/workers 已经修改完成。
  • 清除同名任务。如果运行过同名任务,需要从新执行任务,请先清除同名任务。如果没有运行过,或需要重试失败任务,不需要执行清除命令。Linux终端中执行 bash console.sh clean job_name
  • 提交数据迁移任务。OssImport不能重复提交同名任务,如果有请请使用clean命令清除。提交任务需要指定任务的配置文件,任务的配置文件模板在 conf/job.cfg,建议在模板的基础上修改。Linux终端执行 bash console.sh submit [job_cfg_file],提交配置文件为 job_cfg_file 的任务,job_cfg_file 为可选参数,不指定是默认为 $OSS_IMPORT_HOME/conf/job.cfg$OSS_IMPORT_HOME 默认为 console.sh 所在的目录。
  • 启动服务。Linux终端执行 bash console.sh start
  • 查看任务状态。Linux终端执行 bash console.sh stat
  • 失败Task重试。由于网络或其它原因,Task可能运行失败。失败重试只重试失败的Task,成功的Task不会重试。Linux下在终端执行 bash console.sh retry [job_name]job_name 为可选参数,指定时重试任务job_name的失败子任务,不指定job_name时重试所有任务的失败子任务。
  • 停止服务。Linux终端执行 bash console.sh stop

提示

  • bash console.sh 在参数错误时,会自动提示命令格式;
  • 配置文件和提交任务中的目录,推荐使用绝对目录;
  • 任务的配置,即 job.cfg 中的配置项, 提交后不能修改,请在提交前确定。

常见任务失败原因

  • 上传过程中源目录的文件发生了修改,log/audit.log里会提示SIZE_NOT_MATCH相关字样的错误,这种情况下老的文件已经上传成功,新的修改没有上传到OSS;
  • 源文件在上传过程中被删除,导致下载的时候失败;
  • 源文件名不符合OSS命名规范(不能以/开头,不能为空),导致上传到OSS失败;
  • 下载数据源文件失败;
  • 程序异常退出,任务状态为 Abort ,这种情况请联系我们。

任务状态及日志

任务提交后,Master分解成Task,有Worker执行Task,Tracker收集Task状态。任务运行完成后workdir目录内容如下:

workdir
├── bin
│   ├── console.jar     # Console模块jar包
│   ├── master.jar      # Master模块jar包
│   ├── tracker.jar     # Tracker模块jar包
│   └── worker.jar      # Worker模块jar包
├── conf
│   ├── job.cfg         # Job配置文件模板
│   ├── sys.properties  # 系统运行参数配置文件
│   └── workers         # Worker列表
├── logs
│   ├── import.log      # 归档日志
│   ├── master.log      # Master日志
│   ├── tracker.log     # Tracker日志
│   └── worker.log      # Worker日志
├── master
│   ├── jobqueue                 # 存放尚未分解完成的任务
│   └── jobs                     # 存放任务运行状态
│       └── xxtooss              # 任务名称
│           ├── checkpoints      # Master分解Job到Task的checkpoint点记录
│           │   └── 0
│           │       └── ED09636A6EA24A292460866AFDD7A89A.cpt
│           ├── dispatched       # 已经分配给Worker尚未运行完成的Task
│           │   └── 192.168.1.6
│           ├── failed_tasks     # 运行失败的Task
│           │   └── A41506C07BF1DF2A3EDB4CE31756B93F_1499348973217@192.168.1.6
│           │       ├── audit.log     # Task运行日志,通过该日志可以查看错误原因
│           │       ├── DONE          # Task运行成功标志,失败为空
│           │       ├── error.list    # Task错误列表,可以查看错误文件列表
│           │       ├── STATUS        # 任务状态标志文件,内容为Failed或Completed,表示子任务失败或成功
│           │       └── TASK          # Task描述信息
│           ├── pending_tasks    # 尚未分配的Task
│           └── succeed_tasks    # 成功运行的Task
│               └── A41506C07BF1DF2A3EDB4CE31756B93F_1499668462358@192.168.1.6
│                   ├── audit.log    # Task运行日志,通过该日志可以查看错误原因
│                   ├── DONE         # Task运行成功标志
│                   ├── error.list   # Task错误列表,成功为空
│                   ├── STATUS       # 任务状态标志文件,内容为Failed或Completed,表示子任务失败或成功
│                   └── TASK         # Task描述信息
└── worker  # Worker正在运行的Task状态,运行完成后由Master管理
    └── jobs
        ├── local_test2
        │   └── tasks
        └── local_test_4
            └── tasks

提示

  • Job运行状态查看 logs/tracker.log ,Worker的运行日志查看 logs/worker.log,Master的运行日志查看 logs/master.log
  • Task的失败原因,可以查看master/jobs/${JobName}/failed_tasks/${TaskName}/audit.log
  • Task的失败文件,可以查看master/jobs/${JobName}/failed_tasks/${TaskName}/error.list

常见错误及排除

请参看 常见错误及排除。

相关文章:OssImport系列之一——架构

时间: 2024-10-27 21:10:58

OssImport系列之三——分布式部署的相关文章

RDS SQL Server死锁(Deadlock)系列之三自动部署Profiler捕获死锁

问题引入 系列SQL Server死锁系列文章之二,讲的是如何手动部署Profiler来捕获死锁以及对死锁发时场景重现,这篇文章是将这个手动部署的过程自动化话,实现一键部署,既快捷方便,又简单适用.上一篇文章,参见:使用Profiler捕获死锁. 自动部署Profiler 废话不多说,直接上代码,只需要初始化下面的Profiler停止时间@stop_time即可: use master GO set nocount on declare @trace_folder nvarchar(256) ,

OssImport系列之一——架构

相关文章:OssImport系列之二--单机部署相关文章:OssImport系列之三--分布式部署 概述 OssImport工具可以将本地.其它云存储的数据迁移到OSS,它有以下特点: 支持的丰富的数据源,有本地.七牛.百度BOS.AWS S3.Azure Blob.又拍云.腾讯云COS.金山KS3.HTTP.OSS等,并可根据需要扩展: 支持断点续传: 支持流量控制: 支持迁移指定时间后的文件.特定前缀的文件: 支持并行数据下载.上传: 支持单机模式和分布式模式,单机模式部署简单使用方便,分布

Docker生态系统系列之三:服务发现和分布式配置存储

本文讲的是Docker生态系统系列之三:服务发现和分布式配置存储,[编者的话]本文介绍了服务发现与全局可读配置存储两部分内容,不仅介绍了工作原理和工作方式,也介绍了与之相关的故障检测.重配置和安全问题,最后还介绍了常用的服务发现项目.整篇文章将这个知识点介绍的很全面细致,让读者能够对服务发现和全局可读配置存储有一个全面的认识,值得学习. 介绍 容器给寻找大规模设计与部署应用的需求提供了一个优雅的解决方案.在Docker提供实际容器技术的同时,许多其他的项目也在协助开发在部署环境中所需要的引导和沟

OssImport系列之二——单机部署

相关文章:OssImport系列之一--架构 下载 单机部署支持Linux.Windows. 单机版本下载地址 ossimport-2.2.1.zip ,下载到本地后,使用工具或命令unzip,解压后的文件结构如下: ossimport ├── bin │   └── ossimport2.jar # 包括Master.Worker.TaskTracker.Console四个模块的总jar ├── conf │   ├── local_job.cfg # Job配置文件 │   └── sys.

OssImport系列之四——最佳实践

相关文章:OssImport系列之一--架构 本文主要介绍,OssImport在典型场景下应用,典型需求的实现. 单机与分布式 OssImport有 单机模式 和 分布式模式 两种部署方式.对于小于 30TB 的小规模数据数据迁移,单机模式即可完成.对于大规模的数据迁移,请使用分布式模式. 分时限流 Worker有限流功能,通过修改配置文件sys.properties的配置项workerMaxThroughput(KB/s)实现,该配项不是动态生效的,修改后需要重启服务才能生效.分布式部署情况下

完成端口(CompletionPort)详解 - 手把手教你玩转网络编程系列之三

转载自 PiggyXP(小猪) 完成端口(CompletionPort)详解 - 手把手教你玩转网络编程系列之三 手把手叫你玩转网络编程系列之三    完成端口(Completion Port)详解                                                              ----- By PiggyXP(小猪) 前 言         本系列里完成端口的代码在两年前就已经写好了,但是由于许久没有写东西了,不知该如何提笔,所以这篇文档总是在酝酿之中

web标准实现高效开发系列之三

web|web标准 先点击这里下载Editplus CSS语法自动完成文件 先点击这里下载Editplus xHTML语法自动完成文件应版中朋友的要求我编写了一下xHtml的自动完成文件.下载后解压到EP的根目录下,然后在EP的首选项的语法中设定这个文件.然后用EP打开这个文件,看一下就清楚怎么用了. 举例:打一个"d"然后空格,然后EP就会把这个"d"变成<div></div> 先点击这里下载TopStyle 剪贴库文件 软件下载:TopS

ASP.NET企业开发框架IsLine FrameWork系列之三--七种武器

IsLine FrameWork Provider介绍 其中IsLine.Data.IsLine.AppLog是我要重点介绍的,不过现在先来简单说说各个Provider的作用. DataProvider 与其他框架一样,DataProvider为项目提供了与数据库交互的能力,它的优点在这里不再阐述,这里 只说一下它与其他框架的数据访问层不同的地方. DataProvider同时兼容SQL SERVER与ORACLE两种数据库,并开放IDBOperater接口,用户只要实现 IDBOperater

大型网站架构系列:分布式消息队列(一) (转)

以下是消息队列以下的大纲,本文主要介绍消息队列概述,消息队列应用场景和消息中间件示例(电商,日志系统). 本次分享大纲 消息队列概述 消息队列应用场景 消息中间件示例 JMS消息服务(见第二篇:大型网站架构系列:分布式消息队列(二)) 常用消息队列(见第二篇:大型网站架构系列:分布式消息队列(二)) 参考(推荐)资料(见第二篇:大型网站架构系列:分布式消息队列(二)) 本次分享总结(见第二篇:大型网站架构系列:分布式消息队列(二)) 一.消息队列概述 消息队列中间件是分布式系统中重要的组件,主要