2013-02-19 2 views
7

Привет Я новичок в Hadoop и это FileSystem. Я видел два разных примера WordCount, используя JobConf и Configuration. В чем разница.JobConf v/s Конфигурация для Hadoop 1.0.4

Я изучил, что JobConf был частью старого пакета org.apache.hadoop.mapred (который устарел в 0.20.x), но Конфигурация является частью нового пакета org.apache.hadoop.mapreduce. Но теперь в версии 1.0.4 он устарел.

В настоящее время у нас есть два способа запустить работу по сокращению карты в java, один - с использованием (расширения) классов в пакете org.apache.hadoop.mapreduce, а другой - путем реализации классов в пакете org.apache.hadoop.mapred.

Я хочу знать:

  1. В чем разница между mapred и mapreduce пакет структуры и почему mapred является не-устаревшим?

  2. Какой подход лучше использовать для v1.0.4 и почему? JobConf или Configuration?

  3. Что лучше для v1.0.4? mapred или mapreduce?

+0

Возможный дубликат [лучше использовать картуд или пакет mapreduce для создания задания Hadoop?] (Http://stackoverflow.com/questions/7598422/is-it-better-to-use-the- mapred-or-the-mapreduce-package-to-create-a-hadoop-job) –

+0

Я прочитал этот ответ. Этот подход был для v0.20 и v0.21/22. Но здесь я спрашиваю о версии 1.0.4. Не связывайтесь с этим. И не принимайте никакого решения до полного понимания. –

+0

1.0 - это не что иное, как версия от 0.20 до 0.22. Смотрите это как полированная версия 20.x. Вы должны искать существующие ответы перед добавлением нового вопроса, не говоря уже об исследовании нумерации версий. –

ответ

6

Если вы смотрите в the releases page, вы можете увидеть, что 1.0.4 соответствует чему-то около 0.20.20x

Чтобы дать некоторый контекст, вот что обсуждается on the mailing list:

The "old" MapReduce API in org.apache.hadoop.mapred was deprecated in the 0.20 
release series when the "new" (Context Objects) MapReduce API was added in 
org.apache.hadoop.mapreduce. Unfortunately, the new API was not complete in 0.20 
and most users stayed with the old API. This has led to the confusing situation 
where the old API is generally recommended, even though it is deprecated. 

Итак, как вы можете видеть, это в основном вопрос ретро-совместимости.

Таким образом, нижняя линия, если вы начинаете ваше приложение теперь с 1.0.4 вы должны использовать mapreduce и не mapred, так как это наиболее предпочтительный способ в настоящее время, но вы можете до сих пор используют старую mapred, если у вас есть устаревшие приложения. Это означает, что вы должны использовать Configuration.

Что касается разницы между mapred и mapreduce, как объяснено в экстракте выше она в основном идет от введения Context объектов, но есть куча других изменений и новых классов, которые не доступны в старом mapred.

Смежные вопросы