English 中文(简体)
Spring-Batch for a massive nightly / hourly Hive / MySQL data processing
原标题:

I m looking into replacing a bunch of Python ETL scripts that perform a nightly / hourly data summary and statistics gathering on a massive amount of data.

What I d like to achieve is

  • Robustness - a failing job / step should be automatically restarted. In some cases I d like to execute a recovery step instead.
  • The framework must be able to recover from crashes. I guess some persistence would be needed here.
  • Monitoring - I need to be able to monitor the progress of jobs / steps, and preferably see history and statistics with regards to the performance.
  • Traceability - I must be able to understand the state of the executions
  • Manual intervention - nice to have... being able to start / stop / pause a job from an API / UI / command line.
  • Simplicity - I prefer not to get angry looks from my colleagues when I introduce the replacement... Having a simple and easy to understand API is a requirement.

The current scripts do the following:

  • Collect text logs from many machines, and push them into Hadoop DFS. We may use Flume for this step in the future (see http://www.cloudera.com/blog/2010/07/whats-new-in-cdh3b2-flume/).
  • Perform Hive summary queries on the data, and insert (overwrite) to new Hive tables / partitions.
  • Extract the new summaries data into files, and load (merge) into MySql tables. This is data needed later for on-line reports.
  • Perform additional joins on the newly added MySql data (from MySql tables), and update the data.

My idea is to replace the scripts with spring-batch. I also looked into Scriptella, but I believe it is too simple for this case.

since I saw some bad vibes on Spring-Batch (mostly old posts) I m hoping to get some inputs here. I also haven t seen much about spring-batch and Hive integration, which is troublesome.

最佳回答

If you want to stay within the Hadoop ecosystem, I d highly recommend checking out Oozie to automate your workflow. We (Cloudera) provide a packaged version of Oozie that you can use to get started. See our recent blog post for more details.

问题回答

Why not use JasperETL or Talend? Seems like the right tool for the job.

I ve used Cascading quite a bit and found it be quite impressive:

Cascading

It is a M/R abstraction layer, and runs on Hadoop.





相关问题
SQL SubQuery getting particular column

I noticed that there were some threads with similar questions, and I did look through them but did not really get a convincing answer. Here s my question: The subquery below returns a Table with 3 ...

please can anyone check this while loop and if condition

<?php $con=mysql_connect("localhost","mts","mts"); if(!con) { die( unable to connect . mysql_error()); } mysql_select_db("mts",$con); /* date_default_timezone_set ("Asia/Calcutta"); $date = ...

php return a specific row from query

Is it possible in php to return a specific row of data from a mysql query? None of the fetch statements that I ve found return a 2 dimensional array to access specific rows. I want to be able to ...

Character Encodings in PHP and MySQL

Our website was developed with a meta tag set to... <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> This works fine for M-dashes and special quotes, etc. However, I ...

Pagination Strategies for Complex (slow) Datasets

What are some of the strategies being used for pagination of data sets that involve complex queries? count(*) takes ~1.5 sec so we don t want to hit the DB for every page view. Currently there are ~...

Averaging a total in mySQL

My table looks like person_id | car_id | miles ------------------------------ 1 | 1 | 100 1 | 2 | 200 2 | 3 | 1000 2 | 4 | 500 I need to ...

热门标签