基于Hadoop实现通用的并行任务处理
2011-03-03 14:50
411 查看
利用
Hadoop
云技术框架实现通用的并行任务处理功能,
将原本只是单机程序改造成最终运行在
Hadoop
云平台里。
l
优点
:
1.
分布并行运行
基于
MapReduce
及
dfs
(分布式文件系统)实现了分布并行运行,可实现一个
NoSplitInputFormat
类用于支持单个
Map
任务运行
。
2.
出错自动重试
Hadoop
框架具备可配置的出错任务自动重试功能,配置参数为:
mapred.map.max.attempts
。
3.
可保留原始输入重复运行以用于调试
当尝试手动再次运行或调试上一个任务时,
Hadoop
提供的
IsolationRunner
可
实现保留原始输入本地再次执行的功能。相应配置参数为:
keep.task.files.pattern
。
4.
网页端运行状态实时监控,比如可以实时动态显示处理进度
可实现
CustomerProcess
类,通过调用
TaskReporter
的
setProgress
方法实现
网页端进度条控制,可在
Map
任务的
setup
里启用一个心跳任务执行
CustomerProcess
功能。
5.
方便的网页端日志查询
Hadoop
强大的网页监控功能可提供日志的实时收集。
6.
Hadoop
框架其它的优点,如大数据量存储及处理
利用大集群,大存储实现单机可能没法完成的任务。
l
缺点:
1.
只能直接处理来自
dfs
上的文件
由于任务的分布式运行特征,数据只能预先存储在
dfs
上,当然也可以利用
Hadoop
的
fuse-dfs
模块实现
dfs
上的数据映射到本地文件系统。如调用
oracle
的
sqlldr
工具加载数据时,可采取这种形式,从而避免数据由
dfs
转移至本地文件系
统这一过程。
注:由于
fuse-dfs
自身的的限制,有些任务可能没法这样实现,特别是牵涉到
写文件功能时,如解压缩功能等。
2.
不能直接支持对文件的随机写功能
由于某些
dfs
本身的限制无法提供输出流的随机写功能(
api
上直接没有提供
seek
功能),对于需要经常改写较大文件的内容时,这时就没有比较直接的处理方
式了。
l
注意事项:
1.
要注意利用
Hadoop DistributedCache
技术实现依赖包和配置的分布
由于任务的分布运行特性,为了保证产品的易维护性,可以将产品所依赖的
jar
包和配置文件分发到
dfs
上。
Hadoop
框架分别提供了:
DistributedCache.addFileToClassPath
,可用于分发
jar
包
DistributedCache.addArchiveToClassPath
,可用于分发配置文件。
2.
利用序列化将参数传入每一个
map
任务
由于
Map
任务是以单独的进程运行,在传入参数时应采用
Hadoop
提供的序列
化功能实现有可能跨机器不同进程间的参数传入。
Hadoop
框架分别提供了:
DefaultStringifier.store
,
可用于序列化
DefaultStringifier.load
,
可用于反序列化
3.
利用持久化将返回参数传出
在
Map
任务返回参数时也应采用序列化的方式将参数序列化至
dfs
上存储。
4.
应仔细设计传入参数
在设计传入给每一个
Map
任务的参数时应仔细斟酌。比如设计
FTP
下载功能时,应采取如下策略:同时执行多个
Map
任务实现多个文件同时下载,而不是同时执行多个
Hadoop Job
,或是在一个
Map
任务里多线程运行。具体实现可利用
Hadoop
的
InputFormat.getSplits
自行实现可控的支持并发运行多个
Map
任务的功能
。
5.
开发调试时可以让
Hadoop
以
Local
方式运行
在做开发调试时,为避免多机器分布运行带来的调试不便,可通过设置如下参
数以支持
Hadoop
任务单机单进程运行:
fs.default.name
为
file:///
mapred.job.tracker
为
local
Hadoop
云技术框架实现通用的并行任务处理功能,
将原本只是单机程序改造成最终运行在
Hadoop
云平台里。
l
优点
:
1.
分布并行运行
基于
MapReduce
及
dfs
(分布式文件系统)实现了分布并行运行,可实现一个
NoSplitInputFormat
类用于支持单个
Map
任务运行
。
2.
出错自动重试
Hadoop
框架具备可配置的出错任务自动重试功能,配置参数为:
mapred.map.max.attempts
。
3.
可保留原始输入重复运行以用于调试
当尝试手动再次运行或调试上一个任务时,
Hadoop
提供的
IsolationRunner
可
实现保留原始输入本地再次执行的功能。相应配置参数为:
keep.task.files.pattern
。
4.
网页端运行状态实时监控,比如可以实时动态显示处理进度
可实现
CustomerProcess
类,通过调用
TaskReporter
的
setProgress
方法实现
网页端进度条控制,可在
Map
任务的
setup
里启用一个心跳任务执行
CustomerProcess
功能。
5.
方便的网页端日志查询
Hadoop
强大的网页监控功能可提供日志的实时收集。
6.
Hadoop
框架其它的优点,如大数据量存储及处理
利用大集群,大存储实现单机可能没法完成的任务。
l
缺点:
1.
只能直接处理来自
dfs
上的文件
由于任务的分布式运行特征,数据只能预先存储在
dfs
上,当然也可以利用
Hadoop
的
fuse-dfs
模块实现
dfs
上的数据映射到本地文件系统。如调用
oracle
的
sqlldr
工具加载数据时,可采取这种形式,从而避免数据由
dfs
转移至本地文件系
统这一过程。
注:由于
fuse-dfs
自身的的限制,有些任务可能没法这样实现,特别是牵涉到
写文件功能时,如解压缩功能等。
2.
不能直接支持对文件的随机写功能
由于某些
dfs
本身的限制无法提供输出流的随机写功能(
api
上直接没有提供
seek
功能),对于需要经常改写较大文件的内容时,这时就没有比较直接的处理方
式了。
l
注意事项:
1.
要注意利用
Hadoop DistributedCache
技术实现依赖包和配置的分布
由于任务的分布运行特性,为了保证产品的易维护性,可以将产品所依赖的
jar
包和配置文件分发到
dfs
上。
Hadoop
框架分别提供了:
DistributedCache.addFileToClassPath
,可用于分发
jar
包
DistributedCache.addArchiveToClassPath
,可用于分发配置文件。
2.
利用序列化将参数传入每一个
map
任务
由于
Map
任务是以单独的进程运行,在传入参数时应采用
Hadoop
提供的序列
化功能实现有可能跨机器不同进程间的参数传入。
Hadoop
框架分别提供了:
DefaultStringifier.store
,
可用于序列化
DefaultStringifier.load
,
可用于反序列化
3.
利用持久化将返回参数传出
在
Map
任务返回参数时也应采用序列化的方式将参数序列化至
dfs
上存储。
4.
应仔细设计传入参数
在设计传入给每一个
Map
任务的参数时应仔细斟酌。比如设计
FTP
下载功能时,应采取如下策略:同时执行多个
Map
任务实现多个文件同时下载,而不是同时执行多个
Hadoop Job
,或是在一个
Map
任务里多线程运行。具体实现可利用
Hadoop
的
InputFormat.getSplits
自行实现可控的支持并发运行多个
Map
任务的功能
。
5.
开发调试时可以让
Hadoop
以
Local
方式运行
在做开发调试时,为避免多机器分布运行带来的调试不便,可通过设置如下参
数以支持
Hadoop
任务单机单进程运行:
fs.default.name
为
file:///
mapred.job.tracker
为
local
相关文章推荐
- 基于Spring打造简单高效通用的异步任务处理系统
- PHP5实现多任务并行处理
- Hive数据分析——Spark是一种基于rdd(弹性数据集)的内存分布式并行处理框架,比于Hadoop将大量的中间结果写入HDFS,Spark避免了中间结果的持久化
- 基于视频处理的DSP系统通用设计模式及其实现
- 利用BackgroundWorker实现通用并行处理进度对话框
- 基于ServletContextListener以及TimerTask实现Java/WEB的定时任务处理
- PHP使用QPM实现多进程并行任务处理程序
- PHP使用QPM实现多进程并行任务处理程序
- 基于Hadoop的分布并行加法的实现
- 基于Spring打造简单高效通用的异步任务处理系统
- PHP 使用 QPM 实现多进程并行任务处理程序
- SpringBoot 多任务并行+线程池处理的实现
- 基于Hadoop的分布并行加法的实现
- oozie fork多mapreduce任务并行处理示例
- Hadoop Yarn内存资源隔离实现原理——基于线程监控的内存隔离方案
- Linux 基于IPC机制实现进程间的共享内存处理
- 单片机中基于时间片的多任务的实现
- [置顶] 基于Red5与ffmpeg实现rtmp处理NVR或摄像头的监控视频处理方案
- 基于Spring4+Hibernate4的通用数据访问层(Dao层)设计与实现!
- 大数据框架对比:Hadoop、Storm、Samza、Spark和Flink--容错机制(ACK,RDD,基于log和状态快照),消息处理at least once,exactly once两个是关键