Skip to main content

Hadoop. Разное.

Hadoop - набор утилит, библиотек и framework для разработки и выполнения распределенных программ, работающих на кластерах. Состоит из:

  1. Hadoop Common
  2. HDFS - распределенная файловая система
  3. Hadoop MapReduce - фреймворк для реализации MapReduce вычислений. Первая версия - MRv1, вторая - YARN.
Компания Сloudera выпускает CDH - Cloudera Distrubution for Hadoop - сборки под разные ОС.


Статьи по теме в порядке убывания полезности:
  1. Лучшее руководство: http://developer.yahoo.com/hadoop/tutorial/module4.html
  2. Как работает MapReduce на примере MRv1: http://www.cloudera.com/wp-content/uploads/2010/01/4-ProgrammingWithHadoop.pdf
  3. Русскоязычный блог:  http://ruhadoop.blogspot.com/2012/07/hadoop-api.html,   http://ruhadoop.blogspot.com/2012/07/map-reduce-20-e.html
  4. Англоязычный блог:  http://www.thecloudavenue.com/2012/01/getting-started-with-nextgen-mapreduce_11.html
  5. Официальное руководство: http://hadoop.apache.org/common/docs/current/hadoop-yarn/hadoop-yarn-site/WritingYarnApplications.html 

Разное:

1. Maven-dependency для включения в программу:
  <dependency>
     <groupId>org.apache.hadoop</groupId>
     <artifactId>hadoop-client</artifactId>
     <version>VERSION</version>
   </dependency>


2. MapReduce передает данные между map, reduce и другими частями. Эти данные реализуют интерфейс Writable.

3.  The TaskTracker executes the Mapper/Reducer task as a child process in a separate JVM. Так что передать разные вычисленные параметры в разные мапперы не получится. Максимум возможного: передать параметры всем через Configuration. Configuration is serialized and distributed before running the job.

4. Если у вас n нодов в кластере, HDFS распределит файл по всем этим нодам. При старте новой задачи по умолчанию будет n мапперов. Благодаря Hadoop, mapper на машине будет обрабатывать ту часть файла, которая хранится на этой машине. Если много данных оказалось на одном ноде, соседняя нода может помочь, пересылку данных неявно выполнит HDFS. Сомнения: Может это и есть Rack awareness?. Хотя, в других источниках пишут, что HDFS по умолчанию каждый блок файла записывает в 3х местах (replication factor = 3). И вполне может быть, что скажем 4-му ноду куска файла не достанется.

5. Как работает Mapper в новом API (yarn)? Примерно так:

public void run(Context context) throws IOException, InterruptedException {
   setup(context);
   while (context.nextKeyValue()) {
    map(context.getCurrentKey(), context.getCurrentValue(), context);
   }
   cleanup(context);
 }

6. Если вам не нравится, что в map приходит одна строка из входного файла, то пора почитать про InputSplit и RecordReader. InputSplit делит файл на большие куски для разных Mapper'ов (Mapper - это больше чем функция map, скорее это вся работа на ноде, связанная с выполнением map'ов). ResordReader поставляет данные для каждой функции map: key и value.

Можно переопределить FileInputFormat - он отвечает за создание RecordReader'a и InputSplit'ов. RecordReader можно рассматривать как обертку для handler'а, читающего с диска. Функция getSplit должна вернуть список областей файла(файлов), описывающий границы, куда ставить указатель начала чтения файла / таблицы...
http://jerryjcw.blogspot.com/2009/10/on-hbase-table-join-dabblers.html

7. Где искать логи? Где-то в районе:
/var/log/hadoop-yarn/containers/application_1347017182049_0001/container_1347017182049_0001_01_000002
Там 3 файла: что было выведено через System.out.printl() в sysout, syslog - то что выведено через commons-logging Log, syserr - тоже ясно. 
Появились эти файлы там после дописывания в /etc/hadoop/conf.pseudo/mapred-site.xml следующего свойства:

<property>
  <name>mapreduce.task.userlog.limit.kb</name>
  <value>10</value>
</property>


Кроме того в /yarn-site.xml была дописана 10-минутная задержка удаления логов: 

<property>
  <name>yarn.nodemanager.delete.debug-delay-sec</name>
  <value>600</value>
</property>


Кстати конфигурацию текущую можно посмотреть через web-интерфейс -> Tools -> Configuration или http://<url_машины>:8088/conf. Там кстати видно, что log.level = INFO. Можно поменять.

8. You can kill a job on the command line with hadoop job -kill <jobid>


Comments

Popular posts from this blog

Блочный, строчный, ...

Сборник советов: 1. Прижать элемент к нижнему краю контейнера: 2 . Две колонки: 3 . Что означает символ ">" в селекторе? Означает, что будут выбраны только прямые потомки. По-умному, direct descendant combinator. Иными словами, если есть: То "div a {color: blue;}" изменит цвет всех ссылок, а "div > a {color: blue;}" - только первой и третьей. 4 . TODO

Hibernate

1. Hibernate Session . Javadoc называет её главным интерфейсом между java-приложением и Hibernate. Иногда её называют единицей работы или логической транзакцией. Основная функция сессии - обеспечить операции создания, чтения, удаления объектов. Объекты могут находиться в одном из 3 состояний (см. 2) Сессия создается с помощью SessionFactory. SessionFactory знает конфигурацию ORM, её внутреннее состояния immutable. При вызове Configuration().configure() загружается файл hibernate.cfg.xml. После того, как конфигурация загружена, можно изменить настройки программно. Данные корректировки возможны только до создания экземпляра фабрики сессий. // Initialize the Hibernate environment Configuration cfg = new Configuration().configure(); // Create the session factory ServiceRegistryBuilder srb = new ServiceRegistryBuilder(); ServiceRegistry sr = srb.applySettings(cfg.getProperties()).buildServiceRegistry(); SessionFactory factory = cfg.buildSessionFactory(sr); // Obtain the new session obj...

Первые шаги в Selenium

Цель расплывчата: понять и сделать хоть что-нибудь =) Selenium Selenium - группа продуктов. Отличное описание в статье Что такое Selenium? Selenium IDE - плагин для Firefox, позволяет записать тест, выполняя действия в браузере. Казалось бы, Selenium WebDriver должен дать больше возможностей: всё таки не из графического интерфейса тесты пишем, а с помощью языка программирования, но интересная мысль в другой статье того же автора  Что такое Selenium WebDriver? : "... WebDriver не имеет прямого отношения к тестированию. Он всего лишь предоставляет автотестам доступ к браузеру. На этом его функции заканчиваются.Структурирование, группировку и запуск тестов, а также генерацию отчётов о тестировании, обеспечивает фреймворк тестирования, такой как JUnit или TestNG для Java, .."  Локаторы Выбрать элемент на странице можно используя локаторы. Локаторы (в Selenium IDE в поле target) используют DOM, XPath или CSS (или просто ищут по id/name). Полезное: XPath: XML Path La...