现有架构中通过Scribe直接向HDFS中写入数据,大部分的对数据的操作都是通过Hive来进行的,所以需要在数据进入HDFS之后就能通过Hive来访问到具体的数据,这就需要以数据驱动来添加元数据。以前使用的方式是通过按照固定的时间间隔来执行一个并行批量添加元数据的Java程序,不过那样做可能会漏掉一些没有过来的partition的添加,为此我们还必须在第二天再一次执行,确保所有的数据都被映射到了Hive中。这样以时间驱动执行的方式在实现上很简单:批量扫描原始数据目录,根据目录名称添加数据分区。但是在实时性上没法保证,如果一次执行结束之后,这是一个新的partition下的数据才开始收到,这样就需要等到下次批量处理时才能将这些新数据映射到Hive中。现有架构中通过Scribe直接向HDFS中写入数据,大部分的对数据的操作都是通过Hive来进行