Уводзіны ў MapReduce у Big Data

MapReduce прапануе эфектыўны, больш хуткі і эканамічна эфектыўны спосаб стварэння прыкладанняў.

У гэтай мадэлі выкарыстоўваюцца перадавыя канцэпцыі, такія як паралельная апрацоўка, лакальнасць даных і г.д., каб даць шмат пераваг праграмістам і арганізацыям.

Але на рынку так шмат мадэляў праграмавання і фрэймворкаў, што зрабіць выбар становіцца складана.

І калі справа даходзіць да Big Data, вы не можаце проста выбраць што-небудзь. Вы павінны выбраць такія тэхналогіі, якія могуць апрацоўваць вялікія блокі дадзеных.

MapReduce – выдатнае рашэнне для гэтага.

У гэтым артыкуле я распавяду, што такое MapReduce на самай справе і якую карысць ён можа прынесці.

Пачнем!

Што такое MapReduce?

MapReduce – гэта мадэль праграмавання або праграмная структура ў рамках Apache Hadoop. Ён выкарыстоўваецца для стварэння прыкладанняў, здольных апрацоўваць масіўныя даныя паралельна на тысячах вузлоў (так званых кластарах або сетках) з адмоваўстойлівасцю і надзейнасцю.

Гэтая апрацоўка даных адбываецца ў базе дадзеных або файлавай сістэме, дзе яны захоўваюцца. MapReduce можа працаваць з файлавай сістэмай Hadoop (HDFS) для доступу і кіравання вялікімі аб’ёмамі даных.

Гэты фрэймворк быў прадстаўлены Google у 2004 годзе і папулярызаваны Apache Hadoop. Гэта ўзровень апрацоўкі або механізм у Hadoop, на якім працуюць праграмы MapReduce, распрацаваныя на розных мовах, уключаючы Java, C++, Python і Ruby.

Праграмы MapReduce у воблачных вылічэннях працуюць паралельна, таму падыходзяць для правядзення аналізу даных у вялікіх маштабах.

MapReduce накіравана на раздзяленне задачы на ​​больш дробныя некалькі задач з дапамогай функцый “map” і “reduce”. Ён будзе адлюстроўваць кожную задачу, а затым зводзіць яе да некалькіх эквівалентных задач, што прыводзіць да меншай вылічальнай магутнасці і накладных выдаткаў на сетку кластара.

Прыклад: выкажам здагадку, што вы рыхтуеце ежу для поўнага дома гасцей. Такім чынам, калі вы паспрабуеце прыгатаваць усе стравы і выканаць усе працэсы самастойна, гэта стане мітуслівым і адбярэ шмат часу.

Але выкажам здагадку, што вы прыцягваеце некаторых сваіх сяброў або калег (не гасцей), каб дапамагчы вам прыгатаваць ежу, размеркаваўшы розныя працэсы іншаму чалавеку, які можа выконваць задачы адначасова. У такім выпадку вы будзеце рыхтаваць ежу хутчэй і прасцей, пакуль госці яшчэ ў доме.

MapReduce працуе падобным чынам з размеркаванымі задачамі і паралельнай апрацоўкай, каб забяспечыць больш хуткі і просты спосаб выканання зададзенай задачы.

Apache Hadoop дазваляе праграмістам выкарыстоўваць MapReduce для выканання мадэляў на вялікіх размеркаваных наборах даных і выкарыстання перадавых метадаў машыннага навучання і статыстыкі для пошуку заканамернасцей, прагназавання, кропкавай карэляцыі і г.д.

Асаблівасці MapReduce

Некаторыя з асноўных функцый MapReduce:

  • Карыстальніцкі інтэрфейс: вы атрымаеце інтуітыўна зразумелы карыстальніцкі інтэрфейс, які забяспечвае разумныя звесткі аб кожным аспекце структуры. Гэта дапаможа вам бесперашкодна канфігураваць, прымяняць і наладжваць свае задачы.

  • Карысная нагрузка: прыкладанні выкарыстоўваюць інтэрфейсы Mapper і Reducer, каб уключыць функцыі карты і скарачэння. Mapper адлюстроўвае ўваходныя пары “ключ-значэнне” ў прамежкавыя пары “ключ-значэнне”. Рэдуктар выкарыстоўваецца для скарачэння прамежкавых пар ключ-значэнне, якія маюць агульны ключ, да іншых меншых значэнняў. Ён выконвае тры функцыі – сартаванне, ператасаванне і скарачэнне.
  • Partitioner: ён кіруе падзелам прамежкавых ключоў вываду карты.
  • Рэпарцёр: гэта функцыя для паведамлення пра прагрэс, абнаўлення лічыльнікаў і ўстаноўкі паведамленняў аб стане.
  • Лічыльнікі: гэта глабальныя лічыльнікі, якія вызначае прыкладанне MapReduce.
  • OutputCollector: гэтая функцыя збірае выхадныя даныя з Mapper або Reducer замест прамежкавых вынікаў.
  • RecordWriter: ён запісвае вывад даных або пары ключ-значэнне ў выходны файл.
  • DistributedCache: ён эфектыўна распаўсюджвае вялікія файлы толькі для чытання, якія з’яўляюцца спецыфічнымі для прыкладання.
  • Сціск даных: Аўтар прыкладанняў можа сціскаць як выходныя дадзеныя заданняў, так і прамежкавыя выхадныя карты.
  • Прапуск няправільных запісаў: Вы можаце прапусціць некалькі няправільных запісаў падчас апрацоўкі ўваходных дадзеных карты. Гэтай функцыяй можна кіраваць праз клас SkipBadRecords.
  • Адладка: вы атрымаеце магчымасць запускаць вызначаныя карыстальнікам скрыпты і ўключаць адладку. Калі задача ў MapReduce не выконваецца, вы можаце запусціць сцэнар адладкі і знайсці праблемы.
Праверце гэта:  Як праглядаць фатаграфіі iCloud у Інтэрнэце

Архітэктура MapReduce

Давайце разбярэмся ў архітэктуры MapReduce, паглыбіўшыся ў яе кампаненты:

  • Праца: заданне ў MapReduce – гэта фактычная задача, якую хоча выканаць кліент MapReduce. Ён складаецца з некалькіх меншых задач, якія аб’ядноўваюцца ў канчатковую задачу.
  • Сервер гісторыі заданняў: гэта працэс-дэман для захоўвання і захавання ўсіх гістарычных даных аб дадатку або задачы, такіх як журналы, створаныя пасля або да выканання задання.
  • Кліент: кліент (праграма або API) перадае заданне ў MapReduce для выканання або апрацоўкі. У MapReduce адзін або некалькі кліентаў могуць бесперапынна адпраўляць заданні ў MapReduce Manager для апрацоўкі.
  • MapReduce Master: MapReduce Master дзеліць працу на некалькі больш дробных частак, гарантуючы, што задачы выконваюцца адначасова.
  • Часткі задання: падзаданні або часткі задання атрымліваюцца шляхам падзелу асноўнага задання. Яны прапрацоўваюцца і ў выніку аб’ядноўваюцца для стварэння канчатковай задачы.
  • Уваходныя даныя: гэта набор даных, які падаецца ў MapReduce для апрацоўкі задач.
  • Выхадныя дадзеныя: гэта канчатковы вынік, атрыманы пасля апрацоўкі задачы.

Такім чынам, што сапраўды адбываецца ў гэтай архітэктуры, кліент адпраўляе заданне MasterReduce Master, які дзеліць яго на меншыя роўныя часткі. Гэта дазваляе хутчэй апрацоўваць задачы, паколькі апрацоўка меншых задач займае менш часу, чым больш буйных задач.

Аднак пераканайцеся, што задачы не падзелены на занадта дробныя задачы, таму што калі вы гэта зробіце, вам, магчыма, прыйдзецца сутыкнуцца з большымі накладнымі выдаткамі на кіраванне раздзяленнямі і страціць на гэта шмат часу.

Затым часткі заданняў становяцца даступнымі для выканання задач Map і Reduce. Акрамя таго, задачы Map і Reduce маюць адпаведную праграму, заснаваную на выпадку выкарыстання, над якім працуе каманда. Праграміст распрацоўвае лагічны код для выканання патрабаванняў.

Пасля гэтага ўваходныя даныя перадаюцца ў задачу карты, каб карта магла хутка згенераваць вывад у выглядзе пары ключ-значэнне. Замест таго, каб захоўваць гэтыя даныя ў HDFS, для іх захоўвання выкарыстоўваецца лакальны дыск, каб выключыць верагоднасць рэплікацыі.

Пасля таго, як задача выканана, вы можаце выкінуць вынік. Такім чынам, рэплікацыя стане лішкам, калі вы захоўваеце вывад на HDFS. Выхад кожнай задачы карты будзе перададзены задачы скарачэння, а выхад карты будзе прадастаўлены машыне, на якой выконваецца задача скарачэння.

Затым вывад будзе аб’яднаны і перададзены функцыі памяншэння, вызначанай карыстальнікам. Нарэшце, паменшаны выхад будзе захаваны ў HDFS.

Акрамя таго, працэс можа мець некалькі задач Map і Reduce для апрацоўкі дадзеных у залежнасці ад канчатковай мэты. Алгарытмы Map і Reduce аптымізаваны, каб мінімальна займаць час або прастору.

Паколькі MapReduce у першую чаргу ўключае задачы Map і Reduce, мэтазгодна даведацца пра іх больш. Такім чынам, давайце абмяркуем этапы MapReduce, каб атрымаць дакладнае ўяўленне аб гэтых тэмах.

Фазы MapReduce

Карта

На гэтым этапе ўваходныя даныя адлюстроўваюцца ў выходныя або пары ключ-значэнне. Тут ключ можа спасылацца на ідэнтыфікатар адраса, а значэнне можа быць фактычным значэннем гэтага адраса.

Ёсць толькі адна, але дзве задачы на ​​гэтай фазе – расколы і адлюстраванне. Раздзяленне азначае падраздзяленні або часткі працы, аддзеленыя ад асноўнай працы. Яны таксама называюцца падзелам уводу. Такім чынам, раздзяленне ўводу можна назваць ўваходным блокам, які спажываецца картай.

Праверце гэта:  10 інструментаў для выдалення вадзяных знакаў для выдалення лагатыпаў, тэкстаў і штампаў

Далей адбываецца заданне па адлюстраванні. Гэта лічыцца першым этапам пры выкананні праграмы памяншэння карты. Тут даныя, якія змяшчаюцца ў кожным падзеле, будуць перадавацца функцыі карты для апрацоўкі і стварэння вываду.

Функцыя – Map() выконваецца ў сховішчы памяці на ўваходных парах ключ-значэнне, ствараючы прамежкавую пару ключ-значэнне. Гэтая новая пара ключ-значэнне будзе працаваць у якасці ўваходных дадзеных для функцыі Reduce() або Reducer.

Паменшыць

Прамежкавыя пары ключ-значэнне, атрыманыя на этапе адлюстравання, працуюць у якасці ўваходных дадзеных для функцыі Reduce або Reducer. Падобна фазе адлюстравання, тут задзейнічаны дзве задачы – ператасаваць і паменшыць.

Такім чынам, атрыманыя пары ключ-значэнне сартуюцца і перамешваюцца для падачы ў рэдуктар. Далей Reducer групуе або аб’ядноўвае даныя ў адпаведнасці са сваёй парай ключ-значэнне на аснове алгарытму рэдуктара, напісанага распрацоўшчыкам.

Тут значэнні з фазы ператасоўкі аб’ядноўваюцца для вяртання выхаднога значэння. На гэтым этапе падсумоўваецца ўвесь набор даных.

Цяпер поўны працэс выканання задач Map і Reduce кантралюецца некаторымі суб’ектамі. Гэтыя:

  • Job Tracker: простымі словамі, Job Tracker дзейнічае як майстар, які адказвае за поўнае выкананне прадстаўленай працы. Праграма адсочвання заданняў кіруе ўсімі заданнямі і рэсурсамі ў кластары. Акрамя таго, трэкер заданняў плануе кожную карту, дададзеную ў трэкер задач, якая працуе на пэўным вузле дадзеных.
  • Некалькі трэкераў задач: простымі словамі, некалькі трэкераў задач працуюць як падпарадкаваныя, выконваючы заданне ў адпаведнасці з інструкцыямі Job Tracker. Адсочванне задач разгортваецца на кожным вузле асобна ў кластары, які выконвае задачы Map і Reduce.

Гэта працуе, таму што заданне будзе падзелена на некалькі задач, якія будуць выконвацца на розных вузлах дадзеных з кластара. Job Tracker адказвае за каардынацыю задачы шляхам планавання задач і выканання іх на некалькіх вузлах дадзеных. Затым праграма адсочвання задач, размешчаная на кожным вузле дадзеных, выконвае часткі задання і даглядае за выкананнем кожнай задачы.

Акрамя таго, трэкеры заданняў адпраўляюць справаздачы аб выкананні на трэкер заданняў. Акрамя таго, Task Tracker перыядычна пасылае сігнал «сэрцабіцця» Job Tracker і паведамляе ім аб стане сістэмы. У выпадку любога збою трэкер заданняў можа перанесці заданне на іншы трэкер задач.

Фаза вываду: калі вы дасягнеце гэтай фазы, у вас будуць канчатковыя пары ключ-значэнне, згенераваныя з рэдуктара. Вы можаце выкарыстоўваць праграму фарматавання вываду, каб перавесці пары ключ-значэнне і запісаць іх у файл з дапамогай прылады запісу.

Навошта выкарыстоўваць MapReduce?

Вось некаторыя перавагі MapReduce з тлумачэннем прычын, чаму вы павінны выкарыстоўваць яго ў сваіх праграмах для вялікіх даных:

Паралельная апрацоўка

Вы можаце падзяліць заданне на розныя вузлы, дзе кожны вузел адначасова апрацоўвае частку гэтага задання ў MapReduce. Такім чынам, падзел вялікіх задач на больш дробныя памяншае складанасць. Акрамя таго, паколькі розныя задачы выконваюцца паралельна на розных машынах, а не на адной машыне, апрацоўка даных займае значна менш часу.

Лакальнасць дадзеных

У MapReduce вы можаце перамяшчаць апрацоўшчык да дадзеных, а не наадварот.

Традыцыйнымі спосабамі даныя дастаўляліся для апрацоўкі ў блок апрацоўкі. Аднак з хуткім ростам даных гэты працэс стаў ствараць шмат праблем. Некаторыя з іх былі больш высокімі коштам, большай працаёмкасцю, нагрузкай на галоўны вузел, частымі збоямі і зніжэннем прадукцыйнасці сеткі.

Але MapReduce дапамагае пераадолець гэтыя праблемы, прытрымліваючыся адваротнага падыходу – пераносячы апрацоўшчык да дадзеных. Такім чынам, даныя размяркоўваюцца паміж рознымі вузламі, дзе кожны вузел можа апрацоўваць частку захаваных даных.

Праверце гэта:  Як змяніць колер наведаных спасылак у пошуку Google у Firefox

У выніку гэта забяспечвае рэнтабельнасць і скарачае час апрацоўкі, паколькі кожны вузел працуе паралельна з адпаведнай часткай дадзеных. Акрамя таго, паколькі кожны вузел апрацоўвае частку гэтых даных, ні адзін вузел не будзе перагружаны.

Бяспека

Мадэль MapReduce прапануе больш высокую бяспеку. Гэта дапамагае абараніць ваша прыкладанне ад несанкцыянаваных дадзеных, адначасова павышаючы бяспеку кластара.

Маштабаванасць і гнуткасць

MapReduce – гэта шырокамаштабуемая структура. Гэта дазваляе запускаць праграмы з некалькіх машын, выкарыстоўваючы дадзеныя памерам у тысячы тэрабайт. Ён таксама забяспечвае гібкасць апрацоўкі дадзеных, якія могуць быць структураванымі, паўструктураванымі або неструктураванымі і мець любы фармат і памер.

Прастата

Вы можаце пісаць праграмы MapReduce на любой мове праграмавання, такой як Java, R, Perl, Python і інш. Такім чынам, любому лёгка вывучаць і пісаць праграмы, забяспечваючы пры гэтым выкананне патрабаванняў да апрацоўкі даных.

Прыклады выкарыстання MapReduce

  • Поўнатэкставае індэксаванне: MapReduce выкарыстоўваецца для паўнатэкставага індэксавання. Яго Mapper можа адлюстраваць кожнае слова або фразу ў адным дакуменце. А Рэдуктар выкарыстоўваецца для запісу ўсіх адлюстраваных элементаў у індэкс.
  • Разлік Pagerank: Google выкарыстоўвае MapReduce для разліку Pagerank.
  • Аналіз часопісаў: MapReduce можа аналізаваць файлы часопісаў. Ён можа разбіць вялікі файл часопіса на розныя часткі або разбіць, пакуль картаграфічны сродак шукае вэб-старонкі, да якіх можна атрымаць доступ.

Пара ключ-значэнне будзе перададзена ў рэдуктар, калі вэб-старонка будзе заўважана ў журнале. Тут вэб-старонка будзе ключом, а індэкс «1» – значэннем. Пасля выдачы пары ключ-значэнне Reducer розныя вэб-старонкі будуць аб’яднаны. Канчатковым вынікам з’яўляецца агульная колькасць зваротаў для кожнай вэб-старонкі.

  • Зваротны графік вэб-спасылак: фреймворк таксама знаходзіць выкарыстанне ў графіку зваротных вэб-спасылак. Тут Map() дае мэтавы URL і крыніцу і прымае ўвод з крыніцы або вэб-старонкі.

Далей Reduce() аб’ядноўвае спіс кожнага зыходнага URL, звязанага з мэтавым URL. Нарэшце, ён выводзіць крыніцы і мэта.

  • Падлік слоў: MapReduce выкарыстоўваецца для падліку таго, колькі разоў слова сустракаецца ў дадзеным дакуменце.
  • Глабальнае пацяпленне: арганізацыі, урады і кампаніі могуць выкарыстоўваць MapReduce для вырашэння праблем глабальнага пацяплення.

Напрыклад, вы можаце даведацца аб павышэнні тэмпературы акіяна з-за глабальнага пацяплення. Для гэтага вы можаце сабраць тысячы дадзеных па ўсім свеце. Дадзенымі могуць быць высокая тэмпература, нізкая тэмпература, шырыня, даўгата, дата, час і г. д. Для гэтага спатрэбіцца некалькі карт і скарачацца задачы для разліку выхаду з дапамогай MapReduce.

  • Выпрабаванні лекаў: традыцыйна навукоўцы і матэматыкі працавалі разам, каб распрацаваць новы прэпарат, які можа змагацца з хваробай. З распаўсюджваннем алгарытмаў і MapReduce ІТ-аддзелы ў арганізацыях могуць лёгка вырашаць праблемы, якімі займаліся толькі суперкампутары, доктар філасофіі. навукоўцы і г. д. Цяпер вы можаце праверыць эфектыўнасць лекаў для групы пацыентаў.
  • Іншыя прыкладанні: MapReduce можа апрацоўваць нават буйнамаштабныя даныя, якія інакш не змяшчаюцца ў рэляцыйнай базе даных. Ён таксама выкарыстоўвае інструменты навукі аб дадзеных і дазваляе запускаць іх на розных размеркаваных наборах даных, што раней было магчыма толькі на адным кампутары.

У выніку надзейнасці і прастаты MapReduce знаходзіць прымяненне ў арміі, бізнесе, навуцы і г.д.

Заключэнне

MapReduce можа стаць прарывам у тэхналогіях. Гэта не толькі больш хуткі і просты працэс, але таксама эканамічна эфектыўны і займае менш часу. Улічваючы яго перавагі і рост выкарыстання, ён, верагодна, стане сведкам больш шырокага прыняцця ў галінах і арганізацыях.

Вы таксама можаце вывучыць некаторыя лепшыя рэсурсы, каб даведацца аб Big Data і Hadoop.