Hadoop | это... Что такое Hadoop? (original) (raw)
Apache Hadoop
Тип | Система для распределённых вычислений |
Разработчик | Apache Software Foundation |
Написана на | Java |
Операционная система | Кроссплатформенное программное обеспечение |
Последняя версия | 1.0.3 (16 мая 2012) |
Тестовая версия | 2.0.1-alpha (26 июля 2012) |
Лицензия | Apache License 2.0 |
Сайт | hadoop.apache.org |
Hadoop — проект фонда Apache Software Foundation, свободно распространяемый набор утилит, библиотек и программный каркас для разработки и выполнения распределённых программ, работающих на кластерах из сотен и тысяч узлов. Используется для реализации поисковых и контекстных механизмов многих высоконагруженных веб-сайтов, в том числе, для Yahoo! и Facebook[1]. Разработан в рамках вычислительной парадигмы MapReduce, согласно которой приложение разделяется на большое количество одинаковых элементарных заданий, выполнимых на узлах кластера и естественным образом сводимых в конечный результат.
По состоянию на 2011 год Hadoop состоит из трёх подпроектов — Hadoop Common (связующее программное обеспечение — набор инфраструктурных программных библиотек и утилит, используемых для других подпроектов и родственных проектов), HDFS (распределённая файловая система) и Hadoop MapReduce (фреймворк для реализации MapReduce-вычислений), ранее в Hadoop входили целый ряд других проектов, ставших самостоятельными в рамках системы проектов Apache Software Foundation.
Содержание
- 1 История
- 2 Hadoop Common
- 3 HDFS
- 4 Hadoop MapReduce
- 5 Коммерциализация
- 6 См. также
- 7 Примечания
- 8 Ссылки
- 9 Литература
История
Разработка была инициирована в начале 2005 года Дугом Каттингом (англ. Doug Cutting) с целью построения программной инфраструктуры распределённых вычислений для проекта Nutch (англ.) — свободной программной поисковой машины на Java, её идейной основой стала публикация сотрудников Google Джеффри Дина и Санжая Гемавата[2] о вычислительной концепции MapReduce[3]. Новый проект был назван в честь игрушечного слонёнка ребёнка основателя проекта [4].
В течение 2005—2006 годов Hadoop развивался усилиями двух разработчиков — Каттинга и Майка Кафареллы (Mike Cafarella) в режиме частичной занятости[3], сначала в рамках проекта Nutch, затем — проекта Lucene. В январе 2006 года корпорация Yahoo пригласила Каттинга возглавить специально выделенную команду разработки инфраструктуры распределённых вычислений, к этому же моменту относится выделение Hadoop в отдельный проект. В феврале 2008 года Yahoo запустила кластерную поисковую машину на 10 тыс. процессорных ядер, управляемую средствами Hadoop.
В январе 2008 года Hadoop становится проектом верхнего уровня системы проектов Apache Software Foundation. В апреле 2008 года Hadoop побил мировой рекорд производительности в стандартизованном бенчмарке сортировки данных — 1 ТБайт был обработан за 209 сек. на кластере из 910 узлов[5]. С этого момента начинается широкое применение Hadoop за пределами Yahoo — технологию для своих сайтов внедряют Last.fm, Facebook, The New York Times[6], проводится адаптация для запуска Hadoop в облаках Amazon EC2.
В сентябре 2009 года Каттинг переходит в калифорнийский стартап Cloudera, который, благодаря такому переходу, комментаторы характеризуют как «нового знаменосца Hadoop», несмотря на то, что основная часть проекта была создана всё-таки сотрудниками Facebook и Yahoo[7].
В апреле 2010 года корпорация Google предоставила Apache Software Foundation права на использование технологии MapReduce, через три месяца после её защиты в патентном бюро США, тем самым избавив организацию от возможных патентных претензий[8].
Начиная с 2010 года Hadoop неоднократно характеризуется как ключевая технология «больших данных», прогнозируется его широкое распространение для массово-параллельной обработки данных, и, наряду с Cloudera, появилась серия технологических стартапов, целиком ориентированных на коммерциализацию Hadoop[9][10]. В течение 2010 года несколько подпроектов Hadoop — Avro, HBase, Hive, Pig, Zookeeper — последовательно стали проектами верхнего уровня фонда Apache. В марте 2011 года Hadoop удостоен ежегодной инновационной награды медиагруппы Guardian, на церемонии вручения технология была названа «швейцарским армейским ножом XXI века»[11].
Hadoop Common
В Hadoop Common входят библиотеки управления файловыми системами, поддерживаемыми Hadoop и сценарии создания необходимой инфраструктуры и управления распределённой обработкой, для удобства выполнения которых создан специализированный упрощённый интерпретатор командной строки (FS shell, filesystem shell), запускаемый из оболочки операционной системы командой вида: hdfs dfs -_command_ _URI_
, где _command_
— команда интерпретатора, а _URI_
— список ресурсов с префиксами, указывающими тип поддерживаемой файловой системы, например hdfs://example.com/file1
или file:///tmp/local/file2
. Бо́льшая часть команд интерпретатора реализована по аналогии с соответствующими командами Unix (таковы, например, [cat](42202)
, [chmod](241945)
, [chown](392274)
, [chgrp](30297)
, [cp](110375)
, [du](310754)
, [ls](15830)
, [mkdir](177408)
, [mv](100046)
, [rm](100008)
, [tail](78936)
, притом, поддержаны некоторые ключи аналогичных Unix-команд, например ключ рекурсивности -R
для chmod
, chown
, chgrp
), есть команды специфические для Hadoop (например, count
подсчитывает количество каталогов, файлов и байтов по заданному пути, expunge
очищает корзину, а setrep
модифицирует коэффициент репликации для заданного ресурса).
HDFS
HDFS (Hadoop Distributed File System) — файловая система, предназначенная для хранения файлов больших размеров, поблочно распределённых между узлами вычислительного кластера. Все блоки в HDFS (кроме последнего блока файла) имеют одинаковый размер, и каждый блок может быть размещён на нескольких узлах, размер блока и коэффициент репликации (количество узлов, на которых должен быть размещён каждый блок) определяются в настройках на уровне файла. Благодаря репликации обеспечивается устойчивость распределённой системы к отказам отдельных узлов. Файлы в HDFS могут быть записаны лишь однажды (модификация не поддерживается), а запись в файл в одно время может вести только один процесс. Организация файлов в пространстве имён — традиционная иерархическая: есть корневой каталог, поддерживается вложение каталогов, в одном каталоге могут располагаться и файлы, и другие каталоги.
Развёртывание экземпляра HDFS предусматривает наличие центрального узла имён (англ. name node), хранящего метаданные файловой системы и метаинформацию о распределении блоков, и серии узлов данных (англ. data node), непосредственно хранящих блоки файлов. Узел имён отвечает за обработку операций уровня файлов и каталогов — открытие и закрытие файлов, манипуляция с каталогами, узлы данных непосредственно отрабатывают операции по записи и чтению данных. Узел имён и узлы данных снабжаются веб-серверами, отображающими текущий статус узлов и позволяющими просматривать содержимое файловой системы. Административные функции доступны из интерфейса командной строки.
Hadoop MapReduce
Hadoop MapReduce — программный каркас для кодирования и выполнения распределённых вычислений в рамках парадигмы MapReduce, а также набор Java-классов и исполняемых утилит для создания пакетных заданий на MapReduce-обработку.
Разработчику приложения для Hadoop MapReduce необходимо реализовать базовый обработчик, который на каждом вычислительном узле кластера обеспечит преобразование исходных пар «ключ-значение» в промежуточный набор пар «ключ-значений» (класс, реализующий интерфейс Mapper
, назван по функции высшего порядка Map), и обработчик, сводящий промежуточный набор пар в окончательный, сокращённый набор (свёртку, класс, реализующий интерфейс Reducer
). Каркас передаёт на вход свёртки отсортированные выводы от базовых обработчиков, сведе́ние состоит из трёх фаз — shuffle (тасовка, выделение нужной секции вывода), sort (сортировка, группировка по ключам выводов от распределителей — досортировка, требующаяся в случае, когда разные атомарные обработчики возвращают наборы с одинаковыми ключами, при этом, правила сортировки на этой фазе могут быть заданы программно и использовать какие-либо особенности внутренней структуры ключей) и собственно reduce (усечение) — получения результирующего набора. Для некоторых видов обработки свёртка не требуется, и каркас возвращает в этом случае набор отсортированных пар, полученных базовыми обработчиками.
В руководстве Hadoop указывается, что приемлемым уровнем параллелизма является использование 10-100 экземпляров базовых обработчиков на узел кластера, а для задач, не требующих значительных затрат процессорного времени — до 300; для свёрток считается оптимальным использование их по количеству узлов, умноженному на коэффициент из диапазона от 0,95 до 1,75 и константу mapred.tasktracker.reduce.tasks.maximum
. С бо́льшим значением коэффициента наиболее быстрые узлы, закончив первый раунд сведения, раньше получат вторую порцию промежуточных пар для обработки, таким образом, увеличение коэффициента избыточно загружает кластер, но при этом обеспечивает более эффективную балансировку нагрузки.
Hadoop MapReduce позволяет создавать задания как с базовыми обработчиками, так и со свёртками, написанными без использования Java: утилиты Hadoop streaming позволяют использовать в качестве базовых обработчиков и свёрток любой исполняемый файл, работающий со стандартным вводом-выводом операционной системы (например, утилиты командной оболочки UNIX), есть также SWIG-совместимый прикладной интерфейс программирования Hadoop pipes на C++. Также, в состав дистрибутивов Hadoop входят реализации различных конкретных базовых обработчиков и свёрток, наиболее типично используемых в распределённой обработке.
Коммерциализация
См. также
Примечания
- ↑ Вэнс, 2009, It controls the top search engines and determines the ads displayed next to the results. It decides what people see on Yahoo’s homepage and finds long-lost friends on Facebook
- ↑ Dean, Jeffrey and Ghemawat, Sanjay MapReduce: Simplified Data Processing on Large Clusters (англ.) // OSDI ’04: 6th Symposium on Operating Systems Design and Implementation. — USENIX, 2004. — С. 137-149. — DOI:10.1145/1327452.1327492
- ↑ 1 2 Cutting, Doug Hadoop: a brief history (англ.). Yahoo! (24 March 2008). Архивировано из первоисточника 11 марта 2012. Проверено 25 декабря 2011.
- ↑ Вэнс, 2009, Doug Cutting with the stuffed elephant that inspired the name Hadoop
- ↑ Уайт, 2011, In April 2008, Hadoop broke a world record to become the fastest systems to sort a terabyte of data. Running on a 910-node cluster, Hadoop sorted one terabyte in 209 seconds, pp. 10-11
- ↑ Уайт, 2011, by this time, Hadoop was being used by many other companies, besides Yahoo!, such as Last.fm, Facebook, and the New York Times, p. 10
- ↑ Handy, Alex Hadoop creator goes to Cloudera (англ.). SD Times (9 October 2009). Архивировано из первоисточника 11 марта 2012. Проверено 25 декабря 2011.
- ↑ Metz, Cade Google blesses Hadoop with MapReduce patent license (англ.). The Register (27 April 2010). Архивировано из первоисточника 11 марта 2012. Проверено 30 декабря 2011.
- ↑ Мец, 2011, But it was very obvious, very quickly that being able to manage ‘Big Data’ is the biggest problem that CIOs have to solve … It was clear that Hadoop was the way they wanted to solve the problem”
- ↑ Моррисон, Алан и др. Большие Данные: как извлечь из них информацию (рус.). Технологический прогноз. Ежеквартальный журнал, российское издание, 2010 выпуск 3. PricewaterhouseCoopers (17 декабря 2010). Архивировано из первоисточника 11 марта 2012. Проверено 12 ноября 2011.
- ↑ Winckler, Marie Apache Hadoop takes top prize at Media Guardian Innovation Awards (англ.). The Guardian (25 March 2011). Архивировано из первоисточника 11 марта 2012. Проверено 25 декабря 2011.
Ссылки
- hadoop.apache.org — официальный сайт Hadoop
Литература
- Vance, Ashlee. Hadoop, a Free Software Program, Finds Uses Beyond Search (англ.) (HTML), N. Y.: The New York Times (17 March 2009), стр. B3. Проверено 25 декабря 2011.
- Prickett Morgan, Timothy Cloudera floats commercial Hadoop distro (англ.). The Register (16 March 2009). Архивировано из первоисточника 11 марта 2012. Проверено 25 декабря 2011.
- Metz, Cade How Yahoo Spawned Hadoop, the Future of Big Data (англ.). Wired (18 October 2011). Архивировано из первоисточника 11 марта 2012. Проверено 25 декабря 2011.
- White, Tom Hadoop: The Definitive Guide. — 2-nd edition. — Sebastopol: O’Reilly Media, 2011. — 600 p. — ISBN 978-1-449-38973-4
Apache Software Foundation | |
---|---|
Проекты верхнего уровня | ActiveMQ • Ant • Apache HTTP Server • APR • Beehive • Cassandra • Cayenne • Camel • Commons • Cocoon • CouchDB • DB • Directory • Excalibur • Forrest • Geronimo • Gump • Hadoop • Harmony • HBase • HiveMind • HttpComponents • iBATIS • Jackrabbit • James • JMeter • Lenya • Maven • Mina • mod perl • MyFaces • Nutch • OFBiz • OpenOffice.org • POI • Portals • Santuario • ServiceMix • Shale • Shiro • SpamAssassin • Struts • Subversion • Tapestry • Tcl • Tomcat • Turbine • Velocity • WebWork 2 • Wicket • Xalan • Xerces • XMLBeans |
Подпроекты | Apache Commons BCEL • BSF • JCS Apache Lucene Lucene Java • Lucene4c • Lucy• Solr Apache DB Derby • Torque • DdlUtils • OJB • JDO |
Apache Web Services | Axis • Axis2 • CXF • WS-Commons • EWS • JaxMe • jUDDI • Kandula • Mirae • Muse • Pubscribe • Sandesha • Scout • SOAP • Synapse • TSIK • Tuscany • Woden • WSIF • WSRF • WSS4J • XML-RPC |
Другие проекты | Batik • FOP •Log4j |
Развивающиеся проекты (Incubator) | XAP • River • OpenEJB • OpenJPA • Graffito • Tuscany • Log4Net • Roller • Felix • Abdera • CeltiXfire • FtpServer • Heraldry • Ivy • JuiCE • Kabuki • Lokahi • Lucene.Net • mod_ftp • NMaven • Ode • stdcxx • Woden • WSRP4J • Yoko • WADI • Qpid • stdcxx • TripleSoup • UIMA• Adobe Flex |
Списанные проекты (Attic) | AxKit • Cactus • ECS • Jakarta • ORO • Regexp • Slide • Taglibs |
Лицензия: Лицензия Apache • Сайт: apache.org |
Файловые системы (список • сравнение) | |
---|---|
Дисковые | ADFS • AdvFS • BeFS • Btrfs • EFS • ext • ext2 • ext3 • ext3cow • Next3 • ext4 • FAT • FATX • VFAT • FFS • Files-11 • GFS • HFS • HFS Plus • XFSX • HPFS • ISO 9660 • JFS • LFS • MFS (Macintosh) • MFS (Tivo) • Minix • MUFS • NWFS • NILFS • NSS • NTFS • Protogon (В разработке) • PFS • Qnx4fs • Qnx6fs • ReiserFS • Reiser4 • SFS • SpadFS • UFS • UFS2 • UDF • VxFS • WinFS • WAFL • XFS • ZFS • Больше... Оптические диски ISO 9660 • UDF Флеш-память/SSD FAT • exFAT (FAT64) • TFAT • FFS2 • JFFS • JFFS2 • LogFS • NVFS • UDF • YAFFS Кластерные Files-11 • GFS • OCFS • QFS • Xsan • Больше... |
Распределённые(сетевые) | AFS • OpenAFS • AFP • Ceph • DFS • GlusterFS • GPFS • Google File System • Lustre • NCP • NFS • POHMELFS • Hadoop • Kosmos • HAMMER • SMB (CIFS) • Больше... |
Специальные | cramfs • FUSE • Squashfs • UMSDOS • UnionFS • Больше... Псевдо- и виртуальные configfs • devfs • procfs • specfs • sysfs • tmpfs • WinFS Шифрованные EncFS • EFS • FSFS • SSHFS • SolFS • ZFS |