数据采集的时效性,指的是可进行数据采集的时间与Hadoop中工具可访问数量的时间之间的间隔.采集架构的时间分类会对存储媒介和采集方法造成很大的影响.
一般来说,在设计应用的采集构架之前建议使用以下分类中的一种.
大型批处理
通常指15分钟到数小时的任务,有时可能指时间跨度达到一天的任务
小型批处理
通常指每2分钟发送一次的任务,但是总的来说不会超过15分钟
近实时决策支持
接受信息后”立即做出反应”,并在2秒至2分钟之内发送数据
实时
不超过100毫秒内响应
需要注意的是,随着任务的实现时间达到实时,实现的复杂性和成本也会大大增加.从批量处理处罚(比如使用简单文件传输)通常是个不错的选择.选择更加复杂的采集方法之前要先使用简单的方法
HDFS对时效性的要求比较宽松,所以可能更加适合成为主要存储位置.而一个简单文件传输或者Sqoop任务则适合作为采集数据的工具.
当用户的需要从简单的批处理转向更高频率的更新时,就应该考虑Flume或Kafka之类的工具.在这里,传输时间要求不超过2分钟,所以Sqoop与文件转换器不适用.而且,因为要求时间不超过2分钟,所以存储层可能需要变为HBase或Solr,这样插入与读取操作会获得更细粒度.当要求提高到实时水平时,我们首先应该考虑内存,然后是永久性存储.全世界所有的平行化处理都不会有助于将反应要求控制在500毫秒以内,只要硬盘驱动器保持处理操作的状态.基于这一点,开始进入流处理领域,采用Storm或Spark Steaming之类的工具.这里要强调的是,这些工具应该真正用于数据处理,而不是像Flume或Sqoop那样用于数据采集