Ela.kpi.ua
Нац?ональний техн?чний ун?верситет Укра?ни?Ки?вський пол?техн?чний ?нститут ?мен? ?горя С?корського?Факультет ?нформатики та обчислювально? техн?киКафедра обчислювально? техн?ки?На правах рукопису??До захисту допущено?УДК Зав?дувач кафедриСт?ренко С.Г.(п?дпис) (?н?ц?али, пр?звище)“” 2019 р.Маг?стерська дисертац?яз? спец?альност?: 121. ?нженер?я програмного забезпечення _____________(код та назва напряму п?дготовки або спец?альност?)Спец?ал?зац?я:121.Програмне забезпечення високопродуктивних кипю’терних систем та мереж _____________________________на тему: Метод п?двищення ефективност? обробки даних великого обсягуВиконав: студент 2 курсу, групи ?П-84мп (шифр групи) Козловський ?ван Олекс?йович(пр?звище, ?м’я, по батьков?)(п?дпис) Науковий кер?вник с.н.с., професор Горд??нко Ю.Г.(посада, науковий ступ?нь, вчене звання, пр?звище та ?н?ц?али)(п?дпис) Консультант (назва розд?лу)(посада, вчене звання, науковий ступ?нь, пр?звище, ?н?ц?али)(п?дпис) Рецензент (посада, науковий ступ?нь, вчене звання, науковий ступ?нь, пр?звище та ?н?ц?али)(п?дпис) Засв?дчую, що у ц?й маг?стерськ?й дисертац?? нема? запозичень з праць ?нших автор?в без в?дпов?дних посилань.Студент (п?дпис)Ки?в – 2019 рокуНац?ональний техн?чний ун?верситет Укра?ни?Ки?вський пол?техн?чний ?нститут ?мен? ?горя С?корського?Факультет (?нститут) ?нформатики та обчислювально? техн?ки (повна назва)Кафедра Обчислювально? техн?ки (повна назва)Р?вень вищо? осв?ти – другий (маг?стерський) за осв?тньо-профес?йною програмоюСпец?альн?сть 121. ?нженер?я програмного забезпечення (код ? назва)Спец?ал?зац?я 121. Програмне забезпечення високопродуктивних кипю’терних систем та мереж ____________________________ (код ? назва)ЗАТВЕРДЖУЮЗав?дувач кафедриСт?ренко С.Г.(п?дпис)(?н?ц?али, пр?звище)?? 2019 р.ЗАВДАННЯна маг?стерську дисертац?ю студенту Козловському ?вану Олекс?йовичу(пр?звище, ?м’я, по батьков?)1. Тема дисертац?? ?Метод п?двищення ефективност? обробки даних великого обсягу? Науковий кер?вник дисертац?? с.н.с., професор Горд??нко Ю.Г.(пр?звище, ?м’я, по батьков?, науковий ступ?нь, вчене звання)затверджен? наказом по ун?верситету в?д ?28 ? _жовтня 2019 р. № 3770-с 2. Строк подання студентом дисертац?? _____________3. Об’?кт досл?дження Обробка даних великого обсягу.4. Предмет досл?дження Метод п?двищення ефективност? обробки даних великого обсягу. ___________________________________5. Перел?к завдань, як? потр?бно розробити:досл?дження предметно? област?, проектування та програмна реал?зац?я системи, розробка стартап-проекту 6. Консультанти розд?л?в дисертац??: Розд?лПр?звище, ?н?ц?али та посада консультантаП?дпис, датазавдання видавзавдання прийнявнормоконтрольд.т.н., професор Жаб?н В.?.7. Дата видач? завдання Календарний план№ з/пНазва етап?в виконання маг?стерсько? дисертац??Строк виконання етап?в дисертац?? Прим?тка1Досл?дження л?тератури та документац??08.09.20192Огляд ?снуючих р?шень15.09.20193Анал?з теоретичних метод?в 15.09.20194Проектування системи22.09.20195Програмна реал?зац?я системи27.10.20196Тестування та виправлення помилок17.11.20197Оформлення документац??17.11.2019Студент ______________ Козловський ?.О. (п?дпис) (?н?ц?али, пр?звище)Науковий кер?вник дисертац?? Горд??нко Ю.Г.__ (п?дпис) (?н?ц?али, пр?звище)РефератМаг?стерська дисертац?я: 75 с., рис. 18, табл. 22, 1 додаток, джерел 18.Актуальн?сть. В останн? роки все б?льше зроста? ?нтерес до збер?гання та використання ?нформац?? в великому обсягу, з кожним роком к?льк?сть генеруймо? людиною ?нформац?? зроста?. В?дпов?дно, управл?ння структурованими ? неструктурованими дан? за допомогою сучасних технолог?й - сфера яка все б?льше ста? попитовою. Але р?зноман?тн? дан? як? пост?йно зростають та поповнюються не мають единого метода обробки та анал?зу, тому поста? питання метод?в обробки ? роботи з даними та п?двищення ефективност? роботи з ними. Тому, тема для маг?стерсько? роботи, а саме метод п?двищення ефективност? обробки даних великого обсягу ? надзвичайно актуальною. Дана та схож? проблеми досл?джуються щоб п?двищити ефективн?сть обробки та анал?з даних для кращого розум?ння ? обслуговування к?нцевого користувача.Мета досл?дження. Отримати р?шення, що буде вм?ти працювати з великою к?льк?стю даних та розташовуватися на системах з можлив?стю розпаралелення обчислень та вм?ти анал?зувати запити споживач?в.Об’?кт досл?дження. Обробка даних великого обсягу.Предмет досл?дження. Метод п?двищення ефективност? обробки даних великого обсягу.Наукова новизна одержаних результат?в. Отримання програмного продукту, що призначений для обробки даних о в?део з можлив?стью анал?зу коментар?в на тональн?сть, аналог?в якого на даний момент не ?сну?.Ключов? слова. Метод п?двищення ефективност? обробки даних великого обсягу, обробки даних.AbstractMaster's dissertation: 75 pp., 18 figures, 22 tables, 1 supplement, 18 sources.The urgency of the problem. In recent years, there has been an increasing interest in the storage and use of information on a large scale, with the increasing number of human-generated information every year. Accordingly, managing structured and unstructured data with the help of modern technologies is an area that is increasingly in demand. However, the ever-expanding and up-to-date data does not have a single method of processing and analysis, which raises the question of the methods of processing and working with data and improving their efficiency. Therefore, the topic for master's work, namely the method of improving the efficiency of large-scale data processing is extremely relevant. This and related issues are being explored to improve processing efficiency and data analysis for better understanding and maintenance of the end user.Purpose and tasks of the research. Make decisions that will be able to handle a large amount of data and be located on systems with the ability to parallel calculations and be able to analyze customer requests.Object of study. High volume data processing.Subject of study. Method for Increasing Efficiency of Big Data ProcessingThe novelty of the results. Obtaining a software product that is designed to process video data with the ability to analyze comments on a tone that currently has no analogues.Keywords. A method of improving the efficiency of large-scale data processing.ЗМ?СТ TOC \o "1-3" \h \z \u СПИСОК УМОВНИХ СКОРОЧЕНЬ PAGEREF _Toc26560615 \h 8РОЗД?Л 1ДОСЛ?ДЖЕННЯ ПРИНЦИП?В ОБРОБКИ ДАНИХ ВЕЛИКОГО ОБСЯГУ PAGEREF _Toc26560616 \h 101.1. Концепция великих даних PAGEREF _Toc26560617 \h 101.2. Технологии та обробка PAGEREF _Toc26560618 \h 141.2.1. NoSQL PAGEREF _Toc26560619 \h 141.2.2. MapReduce PAGEREF _Toc26560620 \h 181.2.3. Hadoop PAGEREF _Toc26560621 \h 211.3. Анал?з тональност? тексту PAGEREF _Toc26560622 \h 241.3.1. Задача анал?зу PAGEREF _Toc26560623 \h 241.3.2. Види класиф?кац?? PAGEREF _Toc26560624 \h 251.3.3. Методи класиф?кац?? тональност? PAGEREF _Toc26560625 \h 26Висновки до розд?лу 1 PAGEREF _Toc26560626 \h 28РОЗД?Л 2РОЗРОБКА МОДЕЛ? МЕТОДУ ОБРОБКИ ТА АНАЛ?ЗУ ДАНИХ ВЕЛИКОГО ОБСЯГУ PAGEREF _Toc26560627 \h 292.1. Обробка та пошук PAGEREF _Toc26560628 \h 292.2. Анал?з тоналност? тексту PAGEREF _Toc26560629 \h 402.3. Структура модел? PAGEREF _Toc26560630 \h 42Висновки до розд?лу 2 PAGEREF _Toc26560631 \h 44РОЗД?Л 3РЕАЛ?ЗАЦ?Я МЕТОДУ П?ДВИЩЕННЯ ЕФЕКТИВНОСТ? ОБРОБКИ ДАНИХ ВЕЛИКОГО ОБСЯГУ PAGEREF _Toc26560632 \h 453.1. Вимоги до програмного продукту PAGEREF _Toc26560633 \h 453.2. Структура програмного продукту PAGEREF _Toc26560634 \h 463.3. Огляд роботи PAGEREF _Toc26560635 \h 49Висновки до розд?лу 3 PAGEREF _Toc26560636 \h 55РОЗД?Л 4РОЗРОБКА СТАРТАП ПРОЕКТУ PAGEREF _Toc26560637 \h 564.1. Опис ?де? проекту PAGEREF _Toc26560638 \h 564.2. Технолог?чний аудит ?де? проекту PAGEREF _Toc26560639 \h 584.3. Анал?з ринкових можливостей запуску стартап-проекту PAGEREF _Toc26560640 \h 594.4. Розроблення ринково?? стратег??? проекту PAGEREF _Toc26560641 \h 674.5. Розроблення маркетингово?? програми стартап-проекту PAGEREF _Toc26560642 \h 69Висновки до розд?лу 4 PAGEREF _Toc26560643 \h 73ВИСНОВКИ PAGEREF _Toc26560644 \h 74ДОДАТОК А Л?СТИНГ СИСТЕМИ PAGEREF _Toc26560645 \h 78СПИСОК УМОВНИХ СКОРОЧЕНЬAPI – Аpplication programming interface – Прикладний програмний ?нтерфейсJDK – Java Development Kit – комплект для розробки JavaSQL – Structured Query Language – Мова структурованих запит?вHDFS – Hadoop Distributed File System – це розпод?лена файлова система, яка забезпечу? високошвидк?сний доступ до даних ? ? одним з ключових компонент?в платформи Hadoop.ВСТУПВ останн? роки все б?льше зроста? ?нтерес до збер?гання та використання ?нформац?? в великому обсягу, з кожним роком к?льк?сть генеруймо? людиною ?нформац?? зроста?. В?дпов?дно, управл?ння структурованими ? неструктурованими дан? за допомогою сучасних технолог?й - сфера яка все б?льше ста? попитовою. Але р?зноман?тн? дан? як? пост?йно зростають та поповнюються не мають единого метода обробки та анал?зу, тому поста? питання метод?в обробки ? роботи з даними та п?двищення ефективност? роботи з ними.П?двищений ?нтерес до дано? проблеми мають ф?рми та компан?? як? пост?йно збирають, обробляють ? анал?зують р?зноман?тн? дан? для сво?х потреб, щоб за допомогою анал?зу з?брано? ?нформац?? зрозум?ти потреби споживач?в , потреба в цьому сприя? швидкому зростанню даних та важкост? ?х обробки. Зазвичай ?снуюч? р?шення працюють на центрах для збереження даних та хмарних обчислювальних цетрах. Отриман? р?шення повинн? вм?ти працювати з великою к?льк?стю даних та розташовуватися на системах з можлив?стю розпаралелення обчислень та вм?ти анал?зувати запити споживач?в.Тому, тема для маг?стерсько? роботи, а саме метод п?двищення ефективност? обробки даних великого обсягу ? надзвичайно актуальною. Дана та схож? проблеми досл?джуються щоб п?двищити ефективн?сть обробки та анал?з даних для кращого розум?ння ? обслуговування к?нцевого користувача. ДОСЛ?ДЖЕННЯ ПРИНЦИП?В ОБРОБКИ ДАНИХ ВЕЛИКОГО ОБСЯГУ Концепция великих даних В даний час ?нформац?я накопичу?ться в б?знес? (як у великому, так ? невеликому) з великою швидк?стю. Сховище даних - це актив компан??, в якому приховано дуже багато ц?нно? ?нформац??.Велик? дан? - це сукупн?сть п?дход?в, ?нструмент?в ? метод?в обробки структурованих ? неструктурованих даних величезних обсяг?в ? значного р?зноман?ття для отримання сприймаючих людиною результат?в, ефективних в умовах безперервного приросту, розпод?лу по численних вузл?в обчислювально? мереж? [1-2].У широкому сенс? про ?великих даних? говорять як про соц?ально-економ?чному феномен, пов'язаний з появою технолог?чних можливостей анал?зувати величезн? масиви даних, в деяких проблемних областях - весь св?товий обсяг даних, ? що випливають ?з цього трансформац?йних насл?дк?в.Рис. 1.1 Св?товий технолог?чний потенц?ал для збер?гання, передач? ? обчислення ?нформац?йних данихДля даних великого обсягу зазвичай використову?ться характеристика трех V - за обсягом ф?зично? величини, швидк?стю приросту обробки, та необх?дност? високошвидк?сно? обробки ? р?зноман?ття структурованих та нап?вструктурованих даних для для обробки р?зних тип?в даних одночасно; в заздалег?дь були створен? р?зн? типи та ?нтерпретац?? дано? ознаки [3-4].До основних перевага використання технолог?? можна в?днести:За допомогою комплексного анал?зу великого обсягу ?нформац?? в одному сховищ? отримають як?сних нових знань;П?дтримка б?знесу за рахунок пост?йного розширення спектра функц?й ?снуючих ?нформац?йних комп'ютерних систем;П?двищення ефективност? використання апаратних ресурс?в комп'ютерних систем;Зниження м?н?муму вартост? використання вс?х вид?в ?нформац??.Критика великих Даних пов'язана з тим, що ?х збер?гання не завжди призводить до отримання вигоди, а швидк?сть в?дновлення даних ? ?актуальний? годин ?нтервал не завжди розумно пор?внянн? [2].З точки зору ?нформац?йних технолог?й в сукупн?сть п?дход?в та ?нструмент?в спочатку включалися засоби масово?-паралельно? обробки невизначено? к?лькост? структурованих даних, перш за все, комп'ютерними системами управл?ння базами даних категор?? NoSQL, такими алгоритмами MapReduce ? реал?зують ?х програмними каркасами ? б?бл?отеками проекту Hadoop. Надал? до сер?? технолог?й великих даних стали в?дносити р?зноман?тн? ?нформац?йно-технолог?чн? р?шення, в т?й чи ?нш?й м?р? забезпечують под?бн? за характеристиками можливост? по обробц? надвеликих масив?в даних.Широке поширення ? популяризац?я терм?на ?велик? дан?? стали можливими завдяки редактору журналу ?Природа? Кл?ффорду Линчу, який 3 вересня 2008 року написав спец?альний випуск ?Як може вплинути на велик? науков? дан? майбутн? науки?? [5] У випуску були з?бран? матер?али, в яких говориться про явище безпрецедентне зб?льшення р?зноман?тност? даних, обсяг?в ? техн?чних перспектив в парадигм? стрибкопод?бного зм?ни якост? [2-11].Незважаючи на те, що цей терм?н був введений в академ?чному середовищ? ? в основному торкався проблеми зростання ? р?зноман?тност? наукових даних, з 2009 року цей терм?н набув широкого поширення в д?лов?й прес?, а до 2010 року в?дноситься до появи перших продукт?в. ? р?шення, як? пов'язан? виключно з проблемами обробки даних великих обсяг?в. До 2011 року б?льш?сть найб?льших ?Т-провайдер?в для орган?зац?й використовують концепц?? великих даних в сво?х б?знес-стратег?ях, в тому числ? IBM, Oracle, Microsoft, Hewlett-Packard, EMC ? пров?дн? анал?тики ?Т-ринку зосереджуються на спец?альних концепц?ях досл?джень [6].У 2011 роц? Gartner назвав велик? дан? другим напрямком в ?нфраструктур? ?нформац?йних технолог?й (п?сля в?ртуал?зац?? ? б?льш значущим, н?ж енергозбереження ? мон?торинг) [7]. У той же час було п?двищено, що впровадження технолог?й даних великих обсяг?в надасть найб?льший вплив на сферу ?нформац?йних технолог?й у охорон? здоров'я, виробництв?, уряд?, торг?вл?, а також в областях ? галузях, де ре?струються окрем? перем?щення ресурс?в.Починаючи з 2013 року велик? дан? як академ?чний предмет вивчаються в що з'явилися вуз?вських програмах з науки про дан? ? обчислювальним наук ? ?нженер?? [6].?нтернет речей та соц?альн? мед?а визнан? класичними джерелами великих даних, також вважа?ться, що велик? дан? можуть надходити з внутр?шньо? ?нформац?? п?дпри?мств та орган?зац?й (генеровано? в ?нформац?йних нос?ях, але ран?ше не збер?га?ться ? не анал?зу?ться), з пол?в медицини та б?о?нформатики, з астроном?чних спостережень [8].Прикладами джерел появи великих даних ? под?? з рад?очастотних ?дентиф?катор?в, безперервно отриман? дан? в?д вим?рювальних прилад?в, метеоролог?чн? дан?, потоки пов?домлень ?з соц?альних мереж, дан? дистанц?йного зондування Земл?, потоки даних про м?сцезнаходження абоненти ст?льникових мереж, пристро? ауд?о- та в?деозапис?в. Оч?ку?ться, що розробка та початок широкого використання цих джерел покладуть початок поширення технолог?й великих даних як у досл?дження та розробки, так ? в комерц?йний сектор та державне управл?ння.Методи ? способи анал?зу великих даних вид?лен? у зв?т? McKinsey [8-9]:методи класу Data Mining: вивчення правил асоц?ац??, класиф?кац?я (методи категоризац?й нових даних при використан? принцип?в, що ран?ше застосовувалися до ?снуючих даних), регрес?йний анал?з, кластерний анал?з;краудсорс?нг - класиф?кац?я та накопичення даних великим, невизначеним колом ос?б, що беруть участь в публ?чн?й оферт?, не вступаючи в трудов? в?дносини;об'?днання та ?нтеграц?я даних - наб?р метод?в, як? дозволяють ?нтегрувати р?зноман?тн? дан? з р?зних джерел для глибокого анал?зу, наприклад, приклади метод?в, що складають цей клас метод?в, включають цифрову обробку сигнал?в ? обробку на природн?й мов? (включаючи анал?з тон?в);машинне навчання, включаючи п?дготовку вчител?в ? не-викладач?в, а також ансамблевий навчання - використання моделей на основ? машинного навчання або машинного навчання для отримання складних прогноз?в за допомогою базових моделей (в пор?внянн? з? статистичними ансамблями в статистичн?й механ?ц?)анал?з мереж, штучн? нейронн? мереж?, оптим?зац??, в тому рахунку генетичн? алгоритми;розп?знавання та анал?з образ?в;анал?тика та прогнози;?м?тац?йне моделювання;анал?з простору - класс метод?в, що використовуються тополог?чною, геометричною та географ?чною ?нформац??ю в даних;статистичний анал?з, анал?з часових ряд?в як приклади метод?в наведен? A/B-тестування;в?зуал?зац?я анал?тичних даних - подання конкретно? ?нформац?? як креслення, д?аграми з використанням ?нтерактивних функц?й та ан?мац?? для отримання результат?в, та використання в вигляд? необроблених даних для анал?зу.Технологии та обробкаНайб?льш часто вказують в якост? базового принципу обробки великих даних горизонтальну масштабован?сть, забезпечу? обробку даних, розпод?лених на сотн? ? тисяч? обчислювальних вузл?в, без деградац?? продуктивност?; зокрема, цей принцип включений у визначення великих даних в?д NIST. Також McKinsey, кр?м розглянутих б?льш?стю анал?тик?в технолог?? Hadoop, MapReduce, R, NoSQL ма? в соб? контекст застосовност? для обробки даних великих обсяг?в та технолог?й Business Intelligence ? реляц?йн? системи управл?ння базами даних з п?дтримкою мови SQL [3-17].NoSQL NoSQL – це терм?н, який в?дноситься до ряду п?дход?в, спрямованих на реал?зац?ю систем управл?ння базами даних, як? мають сутт?в? в?дм?нност? в?д моделей, що використовуються в традиц?йних реляц?йних базах даних з доступом до даних через SQL. Застосову?ться до баз даних, як? намагаються вир?шити проблеми масштабованост? та доступност? за допомогою атомарности ? узгодженост? даних.Спочатку слово NoSQL було абрев?атурою в?д двох англ?йських сл?в: ?no? ? ?SQL?, що дало терм?н ?в?дмова SQL?. Ц?лком можливо, що перший, хто використовував цей терм?н, хот?в сказати ?Н? СУБД? або ?Н? реляц?йних?, але NoSQL звучав краще ? в к?нц? к?нц?в звик. NoSQL став загальним терм?ном для р?зних баз даних ? сховищ, але в?н не належить н? до одн??? конкретно? технолог?? або продукту [12-17].Сама по соб? ?дея реляц?йних баз даних не нова, ? використання нереляц?йних репозитар??в почалося на зор? комп'ютер?в. Нереляц?йн? бази даних процв?тали за час?в мейнфрейм?в, ? п?зн?ше, п?д час дом?нування реляц?йних баз даних, використовувалися в спец?ал?зованих сховищах, таких як служби ??рарх?чних каталог?в [17]. Поява нереляц?йних систем баз даних наступного покол?ння обумовлено необх?дн?стю створення паралельних розпод?лених систем для масштабованих ?нтернет-додатк?в, таких як пошуков? системи.Починаючи з 2000-х рок?в Google створила свою масштабируемую пошукову систему ? програми: Google Earth, Google Maps, GMail ? т.д. [9], Призначен? для масштабованост? ? паралельно? обробки даних великих обсяг?в. В результат? була створена розпод?лена файлова система ? розпод?лена система координац??, репозитор?й с?мейства стовпц?в, виконавець на основ? алгоритму MapReduce. Публ?кац?я Google опис?в цих технолог?й викликала сплеск ?нтересу серед розробник?в в?дкритого вих?дного коду [9], що призвело до створення Hadoop ? пов'язаних з ним проект?в, призначених для створення технолог?й, под?бних Google. Р?к по тому, в 2007 роц?, наприклад, Google покинув , опубл?кувавши статт? про високодоступних баз? даних Amazon DynamoDB [9].П?дтримка галузевих г?гант?в менш н?ж за п'ять рок?в привела до широкого впровадження технолог?й NoSQL для управл?ння великими даними ? ?нших великих ? малих компан?й, таких як IBM, Facebook, Netflix, eBay, Hulu, Yahoo! , З ?х власними ? в?дкритими р?шеннями [10].Основн? особливост?Традиц?йна СУБД фокусу?ться на вимогах ACID для системи транзакц?й: атомарность, узгоджен?сть, ?золяц?я, над?йн?сть, тод? як в NoSQL зам?сть ACID можна розглядати наб?р властивостей BASE [17]:базова доступн?сть - запити усп?шно виконан? (усп?шно чи безусп?шно).гнучкbq стан. Стан системи може зм?нюватися з часом, нав?ть без введення нових даних, для забезпечення узгодженост? даних.можлива узгоджен?сть - дан? можуть бути несум?сними протягом деякого часу, але через деякий час д?йти згоди.Терм?н ?BASE? був придуманий Ер?ком Брю?ром, автором теореми CAP, зг?дно з яким в розпод?лених обчисленнях можна забезпечити т?льки два з трьох властивостей: узгоджен?сть даних, доступн?сть або стаб?льн?сть под?лу [17].Звичайно, BASE-системи не можуть бути використан? н? в одному додатку: ?сну? необх?дн?сть в робот? б?ржових ? банк?вських систем. У той же час властивост? ACID, якими б бажаними вони не були, практично неможливо надати в системах з багатом?льйонно? веб-аудитор??ю, таких як [12]. Таким чином, розробники систем NoSQL жертвують узгоджен?стю даних для досягнення двох ?нших властивостей теореми CAP. Деяк? бази даних, так? як Riak, дозволяють налаштувати необх?дн? характеристики узгодженост? доступност? нав?ть для окремих запит?в, вказавши к?льк?сть вузл?в, необх?дних для п?дтвердження усп?шност? транзакц??.Р?шення NoSQL не т?льки масштабируются в дизайн?. ?нш? особливост? р?шень NoSQL:Застосування р?зних тип?в сховищ.Можлив?сть розробки бази даних без завдання схеми.Л?н?йна масштабован?сть (додавання процесор?в зб?льшу? продуктивн?сть).?нновац?я: ?не т?льки SQL? в?дкрива? безл?ч можливостей для збер?гання ? обробки даних.Опис схеми даних при використанн? р?шень NoSQL може бути виконано з використанням р?зних структур даних: хеш-таблиць, дерев та ?нших Залежно в?д модел? даних ? п?дход?в до розпод?леност? ? репл?кац?? в NoSQL-рус? вид?ляються чотири основних типи систем: ?ключ - значення?, документоор??нтован?, ?с?мейство стовпц?в?, графов?.Ключ - значенняМодель ?ключ-значення? ? найпрост?шим вар?антом, що використовують ключ для доступу до значення. Так? системи використовуються для збер?гання зображень, створення спец?ал?зованих файлових систем, як кешей для об'?кт?в, а також в системах, спроектованих з приц?лом на масштабован?сть. Приклади таких сховищ - Berkeley DB, MemcacheDB , Redis, Riak, Amazon DynamoDB [17].C?мейство стовпц?в?нший тип систем - ?с?мейство стовпц?в?, прабатько цього типу - система Google BigTable. У таких системах дан? збер?гаються у вигляд? розр?джен?й матриц?, рядки ? стовпц? яко? використовуються як ключ? [17]. Типовим застосуванням цього типу СУБД ? веб-?ндексування, а також завдання, пов'язан? з великими даними, з? зниженими вимогами до узгодженост?. Прикладами СУБД даного типу ?: Apache HBase, Apache Cassandra, ScyllaDB, Apache Accumulo, Hypertable.Системи типу ?с?мейство стовпц?в? ? документно-ор??нтован? системи мають близьк? сценар?? використання: системи управл?ння вм?стом, блоги, ре?страц?я под?й. [13] Використання тимчасових м?ток дозволя? використовувати цей вид систем для орган?зац?? л?чильник?в, а також ре?страц?? та обробки р?зних даних, пов'язаних з часом .На в?дм?ну в?д столбцовую збер?гання, що застосову?ться в деяких реляц?йних СУБД, що збер?гають дан? по стовпцях в стислому вигляд?, в зв'язку з чим ефективн? для OLAP-сценар??в, модель ?с?мейство стовпц?в? збер?га? дан? по рядках, ? забезпечу? високу продуктивн?сть, перш за все, в оперативних сценар?ях, тод? як для запит?в, що вимагають обходу великого обсягу даних з агрегац??ю результат?в, як правило, неефективна.Документо Ор??нтован? СУБД служать для збер?гання ??рарх?чних структур даних. Знаходять сво? застосування в системах управл?ння вм?стом, видавнич?й справ?, документальному пошуку. Приклади СУБД даного типу - CouchDB, Couchbase, MongoDB, eXist, Berkeley DB XML [17].Графов? СУБД застосовуються для задач, в яких дан? мають велику к?льк?сть зв'язк?в, наприклад, соц?альн? мереж?, виявлення шахрайства. Приклади: Neo4j, OrientDB, AllegroGraph, Blazegraph, InfiniteGraph, FlockDB, Titan. [17]Так як ребра графа матер?ал?зован?, тобто, ? збереженими, обх?д графа не вимага? додаткових обчислень , але для знаходження початково? вершини обходу потр?бна наявн?сть ?ндекс?в. Графов? СУБД як правило п?дтримують ACID, а також п?дтримують спец?ал?зован? мови запит?в, так? як Gremlin, Cypher, SPARQL, GraphQL [17].MapReduceMapReduce - це модель програмування яка пов'язана з реал?зац?я для обробки та генерац?? великих набор?в даних з паралельним розпод?леним алгоритмом на кластер? [14-15].MapReduce - це фреймворк для обробки паралельних завдань у великих наборах даних за допомогою велико? к?лькост? комп'ютер?в (вузл?в), що разом називаються кластером (якщо вс? вузли ? в одн?й локальн?й мереж? та використовують аналог?чне обладнання) або с?ткою (якщо вузли под?ляються м?ж географ?чно та адм?н?стративно розпод?леними системами та використовують б?льш неоднор?дне обладнання). Обробка може в?дбуватися на даних, що збер?гаються або у файлов?й систем? (неструктурован?), або в баз? даних (структурован?). MapReduce може скористатися локальн?стю даних, обробляючи ?х поблизу м?сця, де вони збер?гаються, щоб м?н?м?зувати накладн? зв’язки.Фреймворк (або система) MapReduce зазвичай склада?ться з трьох операц?й (або крок?в):Map: кожен робочий вузол застосову? функц?ю map до локальних даних ? запису? вих?д у тимчасове сховище. Головний вузол забезпечу? обробку лише одн??? коп?? надлишкових вх?дних даних.Shuffle: робоч? вузли перерозпод?ляють дан? на основ? вих?дних ключ?в (створених функц??ю map) таким чином, що вс? дан?, що належать одн?й Shuffle, розташован? на одному робочому вузл?.Reduce: робоч? вузли тепер обробляють кожну групу вих?дних даних, за ключем, паралельно.Лог?чний виглядФункц?? Map ? Reduce MapReduce визначаються щодо даних, структурованих у (ключ, значення) пар. Карта прийма? одну пару даних ?з типом в одному домен? даних та поверта? список пар у ?ншому домен?.Функц?я Map застосову?ться паралельно до кожно? пари у вх?дному набор? даних. Це створю? список пар для кожного виклику. П?сля цього фреймворк MapReduce збира? вс? пари з однаковим ключем з ус?х списк?в ? групу? ?х разом, створюючи одну групу для кожного ключа.Пот?м функц?я зменшення застосову?ться паралельно до кожно? групи, що, в свою чергу, створю? наб?р значень в одному домен?:Кожен виклик зменшення зазвичай вида? або одне значення, або порожн? повернення, хоча одному виклику дозволено повернути б?льше одного значення. В?дкликання вс?х дзв?нк?в збира?ться як потр?бний список результат?в.Таким чином, структура MapReduce перетворю? список (ключ, значення) пар у список значень. Така повед?нка в?др?зня?ться в?д типово? функц?онально? програмування ? зменшу? комб?нац?ю, яка прийма? список дов?льних значень ? поверта? одне ?дине значення, що по?дну? вс? значення, повернен? картою.Необх?дно, але недостатньо мати реал?зац?ю Map та зменшити абстракц?? для реал?зац?? MapReduce. Розпод?лена реал?зац?я MapReduce вимага? засоб?в п?дключення процес?в, що виконують фази Map ? Reduce. Це може бути розпод?лена файлова система. Можлив? й ?нш? вар?анти, так? як пряма потокова передача в?д картограф?чних пристро?в до редуктор?в або процесори в?дображення для подання ?х результат?в для редуктор?в, як? ?х запитують.Доступн? реал?зац??:Google реал?зував MapReduce в C++ з ?нтерфейсами Python та Java;Greenplum - комерц?йна реал?зац?я з п?дтримкою Python, Perl, SQL та ?нших;GridGain - безкоштовна реал?зац?я з в?дкритим кодом на Java;Проект Apache Hadoop - безкоштовна програма з в?дкритим кодом MapReduce впровадження на Java;Phoenix - реал?зац?я MapReduce в C з використанням розпод?лено? пам'ят?;MapReduce також реал?зований у Cell Broadband Engine в C;MapReduce реал?зований у граф?чних процесорах Nvidia за допомогою CUDA;Qt Concurrent - спрощена верс?я фреймворку, реал?зовано? Qt в C++, яка використову?ться для под?лу завдання м?ж дек?лькома ядрами одного комп’ютера;CouchDB використову? MapReduce для визначення перегляд?в над розпод?леними документами;MongoDB дозволя? використовувати MapReduce для обробки дек?лькох запит?в сервера одночасно;Skynet - реал?зац?я з в?дкритим кодом Ruby;Disco - це реал?зац?я, створена Nokia, ?? ядро ??написано в Erlang, а програми для нього можуть бути написан? в Python;Apache Hive - додаток з в?дкритим кодом з в?дкритим кодом Facebook, який по?дну? Hadoop та доступ до даних на SQL-под?бн?й мов?;Qizmt - реал?зац?я з в?дкритим кодом з MySpace, написана на C#;DryadLinq - реал?зац?я, створена Microsoft Research на основ? паралельно? верс?? Linq та Microsoft Dryad;YAMR (ще одне зменшення карти) - реал?зац?я Яндекс для внутр?шнього використання.HadoopApache Hadoop - це сукупн?сть утил?т?в програмного продукт з в?дкритим кодом, як? полегшують використання мереж? багатьох комп’ютер?в для вир?шення проблем, як? пов’язаних з даних велико? к?лькост? та обчисленнями [14]. В?н нада? програмну основу для розпод?леного збер?гання ? обробки даних великого обсягу на основ? модел? програмування MapReduce. Спочатку розроблений для комп'ютерних систем, побудованих ?з товарного обладнання [14] - для загального використання - в?н також знайшов застосування у кластерах апаратного забезпечення вищого класу [14-15]. Модул? в Hadoop розроблен? з принциповим припущенням, що збо? в апаратному забезпеченн? ? звичайними явищами та повинн? автоматично оброблятися фреймворком [14].Терм?н Hadoop часто використову?ться як для базових модул?в, так ? для п?дмодул?в, а також для екосистеми або колекц?? додатних програмних пакет?в, що можливо встановити поверх або разом з Hadoop, наприклад Apache Phoenix, Apache HBase, Apache Hive, Apache Pig, Apache Spark, Apache ZooKeeper[14]HDFS - це файлова система, створена для ман?пулювання великими обсягами файл?в, розпод?лених м?ж вузлами комп'ютерно? системи. Вс? загальн? папки HDFS мають однаковий обсяг, ? кожен розд?л може бути перенесений на к?лька вузл?в, а обсяг частинок ? коеф?ц??нт дублювання розп?знаються в налаштуваннях р?вня файлу. Дублювання забезпечу? ст?йк?сть розпод?лено? системи до збо?в розпод?лених вузл?в. Файли в HDFS можуть бути записан? т?льки один раз (модиф?кац?я не п?дтриму?ться), ? запис в файл може займати т?льки один процес за раз. Орган?зац?я файл?в в простор? ?мен - це традиц?йна ??рарх?я: ?сну? коренево? каталог, п?дтримуються вкладення в каталогах, файли та ?нш? каталоги можуть бути розташован? в одному каталоз?.Розгортання прим?рника HDFS включа? в себе наявн?сть центрального вузла ?мен, в якому збер?гаються метадан? файлово? системи ? мета?нформац?я про розпод?л блок?в, а також ряд вузл?в даних (безпосередньо) для безпосереднього збер?гання файлових блок?в. Вузол ?мен? в?дпов?да? за обробку операц?й на р?вн? файл?в ? каталог?в - в?дкриття ? закриття файл?в, управл?ння каталогами та вузлами даних, безпосередньо виконують операц?? запису ? читання. Вузол ?мен? ? вузол даних надаються веб-серверами, як? в?дображають поточний стан вузл?в ? дозволяють переглядати вм?ст файлово? системи. Адм?н?стративн? функц?? доступн? з ?нтерфейсу командного рядка.HDFS ? нев?д'?мною частиною проекту, однак, оск?льки Hadoop п?дтриму? ?нш? розпод?лен? файлов? системи без використання HDFS, п?дтримка Amazon S3 ? CloudStore в основному поширю?ться. З ?ншого боку, HDFS може використовуватися не т?льки для виконання завдань MapReduce, але ? в якост? розпод?лено? файлово? системи загального призначення, зокрема, на н?й реал?зована розпод?лена СУБД HSQL, заснована на HSQL, ? масштабована система машинного навчання Apache Mahout. працю? в сво?му середовищ?. Рис. 1.2 Розпод?л роб?тApache Spark - це система кластерно-обчислювальних технолог?й загального призначення з в?дкритим кодом. Spark нада? доступ для програмування кластер?в з неявним паралел?змом даних ? ст?йк?сть до в?дмов. Розроблений В Кал?форн?йському ун?верситет?, AMPLab Беркл?, база код?в Spark згодом була передана Фонду програмного забезпечення Apache, який п?дтриму? його з тих п?р.Apache Spark ? сво?ю арх?тектурною основою ст?йким розпод?леним набором даних (RDD), багаточисельним набором даних, розпод?леним по кластеру машин, який п?дтриму?ться в?дмовою [15]. API Dataframe був випущений як абстракц?я поверх RDD, п?сля чого API Dataset. У Spark 1.x RDD був основним ?нтерфейсом програмування прикладних програм (API), але, як ? для Spark 2.x, рекоменду?ться використовувати API набору даних, нав?ть якщо API RDD не застар?ло. Технолог?я RDD все ще лежить в основ? API набору даних. Spark та його RDD були розроблен? у 2012 роц? у в?дпов?дь на обмеження в парадигм? обчислювального кластера MapReduce, яка змушу? певну л?н?йну структуру потоку даних на розпод?лених програмах: Програми MapReduce читають вх?дн? дан? з диска, в?дображають функц?ю у вс?х даних, зменшують результати Map та збер?гати результати зменшення на диску. RDD-коди Spark функц?онують як робочий наб?р для розпод?лених програм, який пропону? (навмисно) обмежену форму розпод?лено? сп?льно? пам'ят?.Apache Spark потребу? менеджера кластер?в ? розпод?лено? системи збер?гання. Для управл?ння кластером Spark п?дтриму? автономний (р?дний кластер Spark, де ви можете запустити кластер як вручну, так ? використовувати сценар?? запуску, передбачен? пакетом встановлення. Також можна запустити ц? демони на одн?й машин? для тестування), Hadoop YARN, Apache Mesos або Kubernetes. Для розпод?леного збер?гання Spark може вза?мод?яти з великою р?зноман?тн?стю, включаючи Alluxio, розпод?лену файлову систему Hadoop (HDFS), Файлова система MapR (MapR-FS), Cassandra, OpenStack Swift, Amazon Файлова система S3, Kudu, Luster, або власн? р?шення можуть бути реал?зован?[16]. Spark також п?дтриму? псевдо розпод?лений локальний режим, зазвичай використову?ться лише для ц?лей розробки або тестування, де розпод?лене сховище не потр?бно ? зам?сть цього може використовуватися локальна файлова система; у такому сценар?? Spark запуска?ться на одн?й машин? з одним виконавцем на ядро ??CPU.Анал?з тональност? текстуАнал?з тональност? тексту (також в?домий як розробка думки чи емоц?я AI) в?дноситься до використання природних обробок мови, анал?зу тексту, обчислювально? л?нгв?стики та б?ометрики для систематичного визначення, вилучення, к?льк?сно? оц?нки та вивчення афективних стан?в та суб'?ктивно? ?нформац??. Анал?з почутт?в широко застосову?ться для озвучення матер?ал?в замовника, таких як огляди та в?дпов?д? на опитування, ?нтернет та соц?альн? мед?а та матер?али охорони здоров’я для додатк?в, що вар?юються в?д маркетингу до обслуговування кл??нт?в до кл?н?чно? медицини.Тональн?сть - це емоц?йне статус автора, що говорить до будь-якого об'?кта (об'?кта реального св?ту,або ?х силам / атрибутам) вираз в текст?. Емоц?йн? компоненти, поворот на р?вн? лексеми чи комун?кативност? фрагменту, назива?ться лексичною тональн?стю. Тональн?сть всього тексту в ц?лому можна в?зуал?зувати як функц?ю (в найпрост?ших випадках суми) лексично? тональност? його одиниць (висловлювань) ? правил ?х об'?днання.Задача анал?зу Основна мета анал?зу тональност? - знайти думки в текст? ? визначити ?х властивост?. Як? властивост? будуть досл?джен?, залежить в?д поставленого завдання. Наприклад, метою анал?зу може бути автор, тобто людина, як?й належить ?дея.Думки под?ляются на два типи:безпосередн? думку;пор?вняння.Безпосередн? думку м?стить висловлювання автора про об'?кт. Формальне визначення безпосереднього думки вигляда? так: "безпосередн?м думкою назива?ться кортеж з елемент?в:сутн?сть - об'?кт тональност? що до яко? висловлю?ться автор або його властивост?;емоц?йна позиц?я - емоц?йна позиц?я автора щодо згадано? теми;автор- суб'?кт тональност?, тобто кому належить ця думка);момент часу time, коли було залишено думку.Приклади тональних оц?нок:позитивна;негативна;нейтральна.П?д ?нейтрально?? ма?ться на уваз?, що текст не м?стить емоц?йного забарвлень. Також можуть ?снувати й ?нш? тональн? оц?нки [6].Види класиф?кац??В сучасних системах автоматичного визначення емоц?йно? оц?нки тексту найчаст?ше використову?ться одновим?рний прост?р: позитивне або негативне (хороший чи поганий). Однак, усп?шн? випадки використання багатовим?рних простор?в в?дом?.Основне завдання в анал?з? тональност? - класиф?кувати полярн?сть даного документа, тобто визначити, чи ? висловлення думки в документ? або пропозиц?? позитивним, негативним або нейтральним. Б?льш розвинена ?поза полярност?? класиф?кац?я тональност? виража?ться, наприклад, в таких емоц?йних станах, як ?зло?, ?смуток? ? ?щастя?.Комп'ютери можуть виконувати автоматичний анал?з текст?в з використанням елемент?в машинного навчання, прихований семантичний анал?з, метод опорних вектор?в, пакет сл?в ? семантична ор??нтац?я в ц?й област?. Б?льш складн? методи намагаються визначити власника настрою (тобто людини) ? мети (тобто суть, за допомогою яко? виражаються почуття). Граматичн? в?дносини м?ж словами використовуються для визначення думки на основ? контексту.Сп?вв?дношення граматично? зв'язност? виходять на основ? глибокого структурного анал?зу тексту. Анал?з настрою можна под?лити на дв? окрем? категор??:анал?з тональност? експертамиавтоматизований анал?з настро?в.Найб?льш пом?тн? р?зниця м?ж ними полягають в ефективност? методу та точност? анал?зу. Комп'ютерн? програми для автоматичного анал?зу тональност? використовують алгоритми машинного навчання, статистику та ?нструменти обробки природно? мови ? можуть обробляти велик? обсяги тексту, онлайн-новини, веб-стор?нки, тексти дискус?йних груп та соц?альн? мереж?.Методи класиф?кац?? тональност?Методи заснован? на словниках та правилах такий метод спира?ться на пошуку лексично? тональност? в текстах по заздалег?дь створених тональним словник?в та правилах ?з використанням л?нгв?стичного анал?зу. В сукупност? знайдених лексичних тональностей текст може бути оц?нений за шкалою, яке м?стить к?льк?сть позитивних та негативних сл?в. Такий метод може використовувати як сукупн?сть правил, п?дставляючих в вигляд? регулярного виразу, так ? спец?альн? правила об'?днання тональностей всередин? вираз?в. Для Проанал?зування тексту, можна використовувати алгоритм: спочатку кожному слову у текст? призначити його значення тональност? з словника, якщо воно ? в словнику, та пот?м порахувати загальну тональн?сть всього тексту шляхом п?дсумовування значення тональностей окремих вираз?в.Головною проблемою методу, заснованих на правилах та словниках, ? трудом?стким процесом створення словника. Для того, щоб отримати вираз, який класиф?ку? документ з малою похибкою, терми словника повинн? мати цифрове значення, адекватний предметно? област? документа. Тому такий метод вимага? великих затрат, так як для добро? роботи систем? необх?дно створити велику безл?ч правил. ?сну? ряд метод?в, як? дозволяють автоматизувати створення словник?в для конкретно? певно? област?.Машинне навчання в наш час найб?льш часто використовуваними в досл?дженнях, основними методами ? методи на основ? машинного навчання за допомогою кер?вником або вчителя. Ц?ллю даних метод?в ? те, що на початковому етап? машинний класиф?катор навча?ться на основ? заздалег?дь заготовлених та розм?чених текстах, та пот?м використовують одержану модель для анал?з? нових документ?в. Приклад короткого алгоритму:заздалег?дь створюется колекц?я документ?в, на основ? яко? машинний класиф?катор навча?ться ;кожен документ конвертують у вигляд вектору аспект?в, за якими в?н буде оброблятися;в?дзнача?ться необх?дний тип тональност? для кожного тексту;проводиться виб?р алгоритму класиф?кац?? ? метод для навчання класиф?катора;натренерована модель використову?ться для визначення тональност? текст?в ново? виб?рки.Машинне навчання без використання вчителя, ?де? цього п?дходу поляга? в тому, що терми, як? част?ше за ?нших зустр?чаються в текстах та присутн? в мал?й к?лькост? текст?в у по вс?й колекц??, отримують найб?льшу вагу в текст?. В?дм?тивши дан? терми, та п?сля цього, визначивши ?х вагу та тональн?сть, можна зробити висновок про тональност? всього тексту.Висновки до розд?лу 1Першому розд?л присвячений досл?дженню технолог?й обробки великих даних, платформи та ?нструменти, розглянуто стан ? перспективи ?х застосування в рамках дано? задач?, розглянуто приклади усп?шного впровадження л?дерами ринку р?шень з використання метод?в обчислення даних великого обсягу, що дозволя? скласти картину сучасного стану та можлив?сть поставлених задач.Проведено досл?дження сучасного стану розвитку технолог?й MapReduce в р?зних ?х реал?зац?я на р?зних платформах.Визначено основн? переваги та недол?ки платформ Apache Hadoop та Apache Spark.Було розглянуто способи анал?зу тональност? тексту, вказан? ?хн? переваги, недол?ки та вид?лен? т? способ, що можуть бути використан? для анал?зу.Спираючись на проведений анал?з та досл?дження метод?в обробки даних великого обсягу, ?х механ?зми та модел?, необх?дно зосередити увагу на розв'язання наступних завдань розробки способу оптим?зац?? механ?зму MapReduce, що розроблен? на основ? платформи Apache Hadoop та Apache Spark.розробка програмного модуля для анал?зу тональност? тексту.оц?нити ефективн?сть запропонованого п?дходу, вид?лити переваги та недол?к, а також вказати. РОЗРОБКА МОДЕЛ? МЕТОДУ ОБРОБКИ ТА АНАЛ?ЗУ ДАНИХ ВЕЛИКОГО ОБСЯГУ Обробка та пошук Для обробки даних великого обсягу ми будемо використовувати Apache Spark, с використанням на основ? платформи Apache Hadoop, та методом обробки даних MapReduce. Спочатку Hadoop був, в першу чергу, ?нструментом для збер?гання даних ? запуску MapReduce-задач, зараз же Hadoop ? великий стек технолог?й, так чи ?накше пов'язаних з обробкою великих даних (не т?льки за допомогою MapReduce).? Hadoop, ? Spark - це проекти з в?дкритим кодом, заснованими програмним фондом Apache, ? обидва ? пров?дними продуктами в анал?тиц? великих даних. Hadoop л?диру? на ринку великих даних б?льше 5 рок?в [14].Насправд?, ключова в?дм?нн?сть Hadoop MapReduce в?д Spark поляга? в п?дход? до обробки: Spark може робити це в пам'ят?, тод? як Hadoop MapReduce повинен читати ? записувати на диск. В результат? швидк?сть обробки значно в?др?зня?ться - Spark може бути до 100 раз?в швидше за Hadoop [14]. Однак обсяг оброблюваних даних також в?др?зня?ться: Hadoop MapReduce здатний працювати з набагато б?льшими наборами даних, н?ж Spark. Тепер давайте детальн?ше розглянемо завдання, для яких добре п?дходить фреймворк. Якщо завдання поляга? в обробц? даних знову ? знову - Spark перемага? Hadoop MapReduce. Резистентн? розпод?лен? набори даних (Resilient Distributed Datasets) Spark дають змогу виконувати к?лька операц?й з Map в пам'ят?, тод? як Hadoop MapReduce повинен записувати пром?жн? результати на диск. Якщо б?знесу потр?бна негайна ?нформац?я, тод? в?н повинен вибрати Spark та його обробку в пам'ят?.Компоненти MapReduce та HDFS Apache Hadoop були натхнен? документами Google щодо MapReduce та файлово? системи Google. [16]Сам фреймворк Hadoop в основному написаний мовою Java, з деяким власним кодом на C та утил?тах командного рядка, написаними у вигляд? скрипт?в оболонки. Хоча код JavaReduce Java ? загальним, будь-яка мова програмування може використовуватися з Hadoop Streaming для реал?зац?? карти та зменшення частин програми користувача. ?нш? проекти в екосистем? Hadoop в?дкривають б?льш багат? користувацьк? ?нтерфейси.Hadoop включа? в себе пакети Hadoop Common, що забезпечу? файлов? системи та абстракц?? р?вня операц?йно? системи, механ?зм MapReduce ? розпод?лену файлову систему HDFS. Hadoop Common включае в себе файли ? сценар?? Java ARchive, необх?дн? для запуску Hadoop [16].Для ефективно? орган?зац?? роботи кожна файлова система, сум?сна з Hadoop, повинна забезпечувати об?знан?сть про м?сцеположення, що ? ?менем ст?йки, зокрема мережевим комутатором, де знаходиться вузол робочого. Програми на основ? Hadoop доступна можлив?сть використовування ц??? ?нформац?? для виконання на вузлах, де ? дан?, та, якщо цього не в?дбува?ться, на т?й сам?й ст?йц? / комутатор?, щоб зменшити траф?к хребта. HDFS викону? цей метод при репл?кац?? даних для надм?рност? даних у к?лькох стелажах. Цей п?дх?д зменшу? вплив в?дключення живлення ст?йки або в?дмови комутатора; у раз? виникнення одного з цих апаратних збо?в, дан? залишатимуться доступними.Невеликий кластер Hadoop включа? в себе одного головного ? дек?лькох вузл?в роб?тник?в. Головний вузол склада?ться з в?дстежувача завдань, в?дстеження завдань, ?мен? NameNode та DataNode. Ведений або вузол робочий виступа? як TaskTracker, так ? DataNode, хоча можливе ?снування лише робочих вузл?в, що працюють лише для даних та обчислень. Зазвичай вони використовуються лише в нестандартних програмах.Hadoop потрибу? Java Runtime Environment 1.6 або вище. Стандартн? сценар?? запуску та в?дключення вимагають, щоб захищена оболонка (SSH) була встановлена ??м?ж вузлами кластеру. У б?льшому кластер?, вузлами HDFS управля?ться через вид?лений сервер NameNode для розм?щення ?ндексу каталог?в файлово? системи та вторинного NameNode, що може створювати зн?мки структур пам'ят? призначеного призначення, тим самим запоб?гаючи пошкодженню файлово? системи та втрат? даних. Аналог?чно, окремий сервер JobTracker може управляти плануванням роботу на вузлах. Якщо Hadoop MapReduce використову?ться з альтернативною файловою системою, NameNode, вторинна арх?тектура NameNode та DataNode HDFS зам?нюються в?дпов?дними для файлово? системи екв?валентами.Hadoop Common - це наб?р б?бл?отек управл?ння файловою системою на основ? Hadoop ? автоматичного створення необх?дно? бази даних ? орган?зац?? розпод?леного управл?ння, для простоти обробки яких ? спец?ал?зований спрощений ?нтерпретатор командного рядка, який працю? з операц?йно? системи.Hadoop YARN - платформа, в?дпов?дальна в кластер? за управл?ння обчислювальними ресурсами та ?х використання для використання програми користувачем;Hadoop MapReduce - це реал?зац?я модель програмування MapReduce для обробки даних.Основна частина Apache Hadoop склада?ться з збер?гання, тако? як розпод?лена файлова система HDFS, та модул? обробки, що ? модулем програмування на основ? MapReduce. В?н розбива? файли на блоки та розпод?ля? ?х по вузлах кластеру. Пот?м в?н переда? упакований код на вузли що паралельно обробляють дан?. Такий метод використову? перевагу локальност? даних, де вузли ман?пулюють даними, до яких вони мають доступ. Що дозволя? обробляти сукупн?сть даних швидше та ефективн?ше, н?ж це було б у б?льш звичайн?й арх?тектур? суперкомп'ютера, яка спира?ться на паралельну файлову систему, де обчислення та дан? поширюються за допомогою високошвидк?сних мереж. Базовий фреймворк Hadoop м?стить в соб? наступн? модул?:Hadoop Common - що включа? в себе утил?ти ? б?бл?отеки, необх?дн? для ?нших модул?в Hadoop;Hadoop Distributed File System - це розпод?лена файлова система, що збер?га? дан? на машинах, забезпечуючи високу сукупну пропускну здатн?сть по кластеру;Hadoop MapReduce - це програмне середовище для програмування розпод?лених обчислень в рамках парадигми MapReduce. Розробник програми для Hadoop MapReduce повинен реал?зувати базовий обробник, який перетворю? пар ключ-значення в пром?жний наб?р пар ключ-значення (клас, який реал?зу? ?нтерфейс Mapper, названий на честь вищою функц?? Map) на кожному кластерному обчислювальному вузл?. ? обробник, який переводить пром?жний наб?р пар в остаточний скорочений наб?р (згортка, клас, який реал?зу? ?нтерфейс редуктора). Кадр переда? в?дсортован? виходи в?д базових процесор?в на вх?д згортки, зведення склада?ться з трьох етап?в - випадкового порядку (сортування, виб?р бажано? секц?? виведення), сортування (сортування, угруповання по ключу виход?в в?д розпод?льник?в - сортування потр?бно в раз? р?зних набор?в атомарних фрейм?в з однаковими ключами , в цьому випадку правила сортування на цьому етап? можна запрограмувати ? використовувати будь-як? особливост? внутр?шньо? структури ключ?в) ? фактично зменшити (м?н?м?зувати список) - отримати результат на ra. Для деяких тип?в обробки згортка не потр?бно, ? кадр пот?м поверта? наб?р в?дсортованих пар, отриманих базовими процесорами.Hadoop MapReduce дозволя? створювати завдання з використанням як базових оброблювач?в, так ? згорток, написаних без Java: потоков? утил?ти Hadoop дозволяють використовувати в якост? базового обробника ? згортки будь виконуваний файл, який працю? з? стандартними операц?йними системами введення-виведення. У дистрибутиви Hadoop також входять реал?зац?? р?зних конкретн? базов? процесори ? згортки, найчаст?ше використовуван? в розпод?лено? обробки.MapReduce був розроблений Google як модель програмування для обробки великих набор?в даних з паралельним розпод?леним алгоритмом на кластер?. Хоча MapReduce спочатку був власницькою технолог??ю Google[15]. Програма MapReduce склада?ться з Map процедури (або методу), яка викону? ф?льтрац?ю та сортування (сортування учн?в за пр?звищем у черги, одна черга на кожне ?м’я) та метод зменшення, який викону? операц?ю п?дсумк?в (наприклад, п?драхунок к?лькост? учн?в у кожн?й черз?, даючи частоту ?мен). "Система MapReduce" (також ?? називають "?нфраструктура" або "фреймворк") орган?зу? обробку шляхом маршалування розпод?лених сервер?в, паралельно виконуючи р?зн? завдання, керуючи ус?ма комун?кац?ями та передачею даних м?ж р?зними частинами системи та забезпечуючи ефективност? та в?дмовост?йк?сть[14].Модель явля? собою спец?ал?зац?ю стратег?? розд?льного застосування та об'?днання для анал?зу даних. В?н натхненний картою та скороченням функц?й, як? зазвичай використовуються у функц?ональному програмуванн?, хоча ?х призначення в рамках MapReduce не таке, як у ?хн?х початкових формах. Ключовий внесок у структуру MapReduce - це не фактична карта та функц?? зменшення (як?, наприклад, нагадують стандарт стандарту ?нтерфейсу передач? пов?домлень 1995 року, зменшують та розкидають), а масштабован?сть та в?дмовост?йк?сть. досягнуто для р?зноман?тних застосувань шляхом оптим?зац?? механ?зму виконання [15]. Таким чином, однопотокова реал?зац?я MapReduce зазвичай не швидша, н?ж традиц?йна (не MapReduce) реал?зац?я; будь-як? вигоди, як правило, спостер?гаються лише при багатопотокових реал?зац?ях на багатопроцесорних пристроях. Використання ц??? модел? ? виг?дним лише тод?, коли вступають у д?ю оптим?зован? операц?? розпод?леного перем?щення (що зменшу? варт?сть мережевого зв’язку) та функц?? в?дмовост?йкост? рамки MapReduce. Оптим?зац?я вартост? зв'язку ? важливим для хорошого алгоритму MapReduce. Б?бл?отеки MapReduce написан? багатьма мовами програмування з р?зним р?внем оптим?зац??. Популярна реал?зац?я з в?дкритим кодом, яка п?дтриму? розпод?лен? перетасовки, ? частиною Apache Hadoop. ?м'я MapReduce спочатку посила?ться на власну технолог?ю Google, але з тих п?р отримало загальну генерац?ю. До 2014 року Google б?льше не використовував MapReduce як ?х основну модель обробки великих даних , а розробка Apache Mahout перейшла до б?льш спроможних та менш дисково ор??нтованих механ?зм?в, як? включали повну карту та зменшували можливост?.Запуст?ть наданий користувачем код Map - Map запуска?ться р?вно один раз для кожно? значення, генеруючи висновок, орган?зований ключем."Перем?шайте" виведення Map на процесори Reduce система MapReduce познача? зменшити процесори, признача? ключ, над яким повинен працювати кожен процесор, ? нада? цьому процесору вс? дан?, створен? на Map, пов'язан? з цим ключем.Запуст?ть наданий користувачем код зменшення - Reduce запуска?ться р?вно один раз для кожного ключа, що створю?ться кроком Map.Отримайте к?нцевий вих?д - система MapReduce збира? весь результат Reduce та сорту? його, щоб отримати к?нцевий результат.Ц? п’ять крок?в лог?чно можна вважати запущеними посл?довно - кожен етап почина?ться лише п?сля того, як попередн?й крок виконаний, - хоча на практиц? вони можуть бути переплетен? до тих п?р, поки на остаточний результат не вплине.У багатьох ситуац?ях вх?дн? дан?, можливо, вже були розпод?лен? м?ж багатьма р?зними серверами, ? в цьому випадку крок 1 ?нод? може бути значно спрощений шляхом призначення сервер?в, як? оброблять м?сцев? вх?дн? дан?. Аналог?чно, крок 3 ?нод? може бути просунутий, призначивши зменшити процесори, максимально наближен? до даних, створених на Map, як? вони потребують для обробки.сервер - велика ферма сервер?в може використовувати MapReduce для сортування петабайт даних лише за к?лька годин. [14] Паралел?зм також пропону? певну можлив?сть в?дновлення п?сля частково? в?дмови сервер?в або збер?гання п?д час роботи: якщо один Map або Reduce редуктор виходять з ладу, робота може бути перенесена - якщо припустити, що вх?дн? дан? все ще доступн?.Ще один спос?б дивитися на MapReduce - це 5-кроковий паралельний ? розпод?лений обчислення:П?дготуйте вх?д Map () - система "MapReduce" познача? процесори Map, признача? вх?дний ключ, над яким би працював кожен процесор, ? нада? цьому процесору вс? вх?дн? дан?, пов'язан? з цим ключем.MapReduce дозволя? розпод?ляти обробку map та операц?? shuffle. Map можуть виконуватися паралельно, за умови, що кожна операц?я з картографуванням не залежить в?д ?нших; на практиц? це обмежено к?льк?стю незалежних джерел даних та/або к?льк?стю ЦП б?ля кожного джерела. Аналог?чно, наб?р 'редуктор?в' може виконувати фазу shuffleза умови, що вс? виходи операц?? з картою, як? под?ляють один ? той же ключ, представлен? одному ? тому ж редуктору або якщо функц?я shuffle асоц?ативна. Хоча цей процес часто виявля?ться неефективним пор?вняно з алгоритмами, як? ? б?льш посл?довними (оск?льки потр?бно запустити к?лька прим?рник?в процесу скорочення), MapReduce можна застосувати до значно б?льших набор?в даних, н?ж може обробляти один "товарний" MapReduce зазвичай м?стить розпод?лен? сервери, ? в?н викону? р?зн? завдання паралельно один одному. ?снують р?зн? компоненти, як? керують зв’язком м?ж р?зними вузлами даних ? забезпечують високу доступн?сть та в?дмовост?йк?сть. Програми, написан? у функц?ональних стилях MapReduce, автоматично паралел?зуються та виконуються на товарних машинах. MapReduce п?клу?ться про детал? розпод?лу даних та виконання процес?в на розпод?леному сервер? п?д час виконання. П?д час цього процесу, якщо ? якась катастрофа, фреймворк забезпечу? високу доступн?сть, а ?нш? доступн? режими дбають про в?дпов?дальн?сть за несправний вузол. Рис. 2.1 MapReduse механ?зм роботиОтже, типова реал?зац?я цього алгоритму отриму? на вх?д 3 аргументу: вих?дну колекц?ю, Map-функц?ю, Reduce-функц?ю, - ? поверта? нову колекц?ю даних п?сля обробки. Алгоритм склада?ться з дек?лькох крок?в. В якост? першого кроку викону?ться Map-функц?я до кожного елементу вих?дно? колекц??. На дан?й стад?? дан? обробляються при допомоз? функц?? Map, що визнача? користувач. Робота Дано? стад?? поляга? в обробц? та ф?льтрац?? даних. Процедура дуже схожа на операц?ю Map в функц?ональних мовах програмування - призначена для користувача функц?я застосову?ться до кожно? вх?дного в?др?зку [15]. Map поверне нуль або створить екземпляри ключ-значення об'?кт?в. Що буде знаходиться в ключ? ? в значенн? - вир?шувати користувачу, але ключ - дуже важлива р?ч, так як дан? з одним ключем в майбутньому потрапляють в один екземпляр функц?? reduce. Тобто, можна сказати, що обов'язок Map-функц?? конвертувати елементи вих?дно? колекц?? в нуль або дек?лька прим?рник?в ключ-значення об'?кт?в. Це продемонстровано нижче на зображенн?. Рис. 2.2 Робота Map Наступним кроком, алгоритм сорту? вс? пари ключ-значення ? створить нов? екземпляри об'?кт?в, де все значення будуть згрупован? по ключу. Ця стад?я проходить непом?тно для користувача. У ц?й стад?? висновок функц?? map ?розбира?ться по кошиках? - кожний Shuffle (корзина) в?дпов?да? одному ключу виведення стад?? map. Надал? ц? кошики послужать входом для reduce.Рис. 2.3 Робота Shuffle Останн?м кроком викона?ться функц?я Reduce - для кожного згрупованого прим?рника ключ-значення об'?кта. Функц?я Reduce зада?ться користувачем ? обчислю? ф?нальний результат для окремого Shuffle. Безл?ч вс?х значень, повернутих функц??ю Reduce, ? ф?нальним результатом MapReduce-завдання. У висновку, функц?я Reduce поверне новий екземпляр об'?кта, який буде включений в результуючу колекц?ю.Рис. 2.4 робота Reduse Для п?двищення ефективност? обробки даних великого обсягу нам потр?бно буде розглянути методи оптим?зац?? MapReduce-задачи. Для вир?шення завданя, а також показати деяк? особливост? Hadoop та Spark, як? дозволяють спростити розробку або ?стотно прискорити виконання MapReduce-завдання на кластер?.Як було розглянуто, MapReduce склада?ться з стад?й Map, Shuffle ? Reduce. Як правило, в практичних завданнях найважчою виявля?ться стад?я Shuffle, так як на ц?й стад?? в?дбува?ться сортування даних. Насправд? ?сну? ряд завдань, в яких можна об?йтися т?льки стад??ю Map. Рис. 2.5 завдання Map-Only Так? завдання вир?шуються за допомогою Map-Only. При створенн? Map-Only завдання в Hadoop потр?бно вказати нульове к?льк?стю Reduce.Ось приклади таких завдань:Ф?льтрац?я даних ;Перетворення даних;Завантаження ? вивантаження даних з зовн?шнього джерела .Як було розглянуто, найчаст?ше б?льш ресурсо затратний етап при робот? Map-Reduce - це стад?я shuffle. Трапля?ться це тому, що пром?жний результат записуються на диск, упорядковано та транслю?ться по мереж?. Але ?снують здач?, до яких така повед?нка вида?ться не дуже рац?ональною. Наприклад, в т?й же задач? п?драхунку сл?в у документах можна попередньо предагрег?ровать результати виход?в к?лькох mapper'ов на одному вузл? map-reduce завдання, ? передавати на reducer вже п?дсумован? значення по кожн?й машин?.Рис. 2.6 завдання з CombinerУ hadoop для цього можна визначити комб?ну? функц?ю, яка буде обробляти вих?д частини mapper-?в. Комб?ну? функц?я дуже схожа на reduce - вона прийма? на вх?д вих?д частини mapper'ов ? вида? агрегований результат для цих mapper'ов, тому дуже часто reducer використовують ? як combiner. Важлива в?дм?нн?сть в?д reduce - на комб?ну? функц?ю потрапляють в повному обсяз? значення, в?дпов?дн? одному ключу.Б?льш того, hadoop не гаранту? того, що комб?ну? функц?я взагал? буде виконана для виходу mapper'a. Тому що комб?ну? функц?я не завжди може бути застосована, наприклад, в раз? пошуку за мед?анне значення по ключу. Проте, в тих завданнях, де комб?ну? функц?я може бути застосована, ?? використання дозволя? домогтися ?стотного приросту до швидкост? виконання MapReduce-завдання.Бувають ситуац??, коли для вир?шення задач? одним MapReduce не об?йтись. Для того, щоб виконати посл?довн?сть MapReduce-завдань на hadoop, досить просто в якост? вх?дних даних для другого завдання вказати папку, яка була вказана в якост? output для першо? ? запустити ?х по черз?.Рис. 2.7 Ланцюг MapReduce-задач На практиц? ланцюжка MapReduce-задач можуть являти собою досить складн? посл?довност?, в яких MapReduce-завдання можуть бути п?дключен? як посл?довно, так ? паралельно один одному.Анал?з тоналност? текстуДля анал?зу ми будемо використовувати заздалег?дь натренерована нейромережу. Вона буде анал?зувати коментар?, п?сля цього буде в?дправляти пот?к проанал?зованих коментар?в. Для цього ми будемо використовувати Apache Kafka. Apache Kafka - розпод?лена стриминговая платформа. Насправд? ?дея Кафки дуже проста. У велик?й розпод?лено? систем? зазвичай багато серв?с?в, як? генерують р?зн? под??: логи, дан? мон?торингу, пом?чен? спроби доступу до секретних ресурс?в, ? т.д. З ?ншого боку, ? серв?си, яким ц? дан? дуже потр?бн?. Рис. 2.9 Д?аграма роботи Kafka Kafka вм?? передавати дан? т?льки одним способом - через патерн видавець-передплатник. На в?дм?ну в?д черг, як? видаляють пов?домлення в?дразу ж п?сля усп?шно? доставки, Kafka збер?га? ?х ст?льки, ск?льки скажуть. По-замовчуванню - тиждень. Це зручно, тому що п?дписуючись на топ?к в Kafka можна отримати ? т? пов?домлення, як? публ?кувалися позавчора.[18] Нав?ть один Kafka-брокер - це кластер. Для того, щоб додати йому другий, н?яких особливих налаштувань робити не треба. У тих чергах, як? п?дтримують кластеризац?ю, особлив? настройки зазвичай потр?бн?. Kafka завжди збер?га? пов?домлення на диск. Черги пов?домлень, як? це вм?ють, зазвичай вимагають збереження явно включати .Топ?ки з пов?домленнями можна розбити на розд?ли ? розпод?лити всередин? кластера, а пот?м ще включити ? репл?кац?ю. На виход? виросте пропускна здатн?сть, адже один топ?к тепер збер?га?ться ? обслугову?ться дек?лькома вузлами, ? нав?ть якщо один з вузл?в в?дмовить, то залишиться репл?ка його даних, ? все об?йдеться без втрат. Хоча деяк? черги пов?домлень теж вм?ють робити репл?кац?ю, яка вм?? розпод?ляти сво? логи на частини ? розпод?ляти по кластеру. Структура модел? Apache Kafka ?нструмент який ма? обширний спектор, що потр?бен для перенаправлення ?нформац?йних поток?в даних з одного м?сця в ?нше, з обробкою ? без. Проект досить зр?лий, ? серед тих, хто його активно використову?, повно г?гант?в в?тчизняно? промисловост? [15].Рис. 2.10 Структура модел? метода для обробки данихДан?, вилучен? з YouTube API та набору даних Kaggle, будуть збер?гаються у локальн?й файлов?й систем?. Дан? з локально? файлово? системи завантажуються в Spark за допомогою API Pyspark (python). Spark надсила? дан? та завдання (map, reduce) на робоч? вузли для паралельно? обробки. Map та Reduce задач? для нашого випадку використання схоже на алгоритм перерахунку сл?в. Нарешт?, ?скра в?дправля? результат назад у локальну систему, де вих?д пода?ться на таблицю для в?зуал?зац??, а результати використовуються для прийняття р?шень.П?сля цього натренерована нейромережа буде анал?зувати отриманн? дан? тег?в в?део, та анал?зувати коментар?. П?сля цього за допомогою Kafka серв?с буде отримувати пот?к даних про настр?й коментар?в в?д в?део. П?сля цього буде зроблен? MapReduce зад?ч?. Для об'?днання та групування результат?в анал?зу коментар?в, популярност? тег?в та к?лькост? перегляд?в.Висновки до розд?лу 2У рамках даного розд?лу було коротко розглянуто методи п?двищення ефективност? обробки великих даних за допомогою MapReduce, описано проблему застосування даних метод?в на основ? Apache Hadoop та Apache Spark, Було обумовлено виб?р методу обробки, розглянути його переваги та недол?ки.Для обробки даних було запропоновано використовувати модель посл?довних MapReduce, оск?льки дана задача буде пов?льно оброблятися при використан? одного складного обробника. Також було обрано платформу Apache Spark на основ? Apache Hadoop, оск?льки в?н набагато швидший при обробц? даних. Оск?льки може не записувати п?сля кожно? операц?? дан? на жорсткий диск а збер?гати ?х в операц?йн?й пам'ят?.Також для обробки тональност? коментар?в було обрано метод анал?зу нейронною мережею. Оск?льки вона швидше н?ж за сво? аналоги с словниковим механ?змом, та використання Apache kafka для отримання потоку даних в?д не?. РЕАЛ?ЗАЦ?Я МЕТОДУ П?ДВИЩЕННЯ ЕФЕКТИВНОСТ? ОБРОБКИ ДАНИХ ВЕЛИКОГО ОБСЯГУ Вимоги до програмного продукту Для демонстрац?? роботи запропонованого методу, було вир?шено розробити програмний продукт збору, обробки та анал?зу даних. Розроблена програма повинна бути проста, зрозум?ла у використанн? та забезпечувати виконання наступних завдань.Побудова програми для збору та анал?зу даних з сайту про видео, а саме збирати теги коментар? и тд.Анал?зувати коментар? к в?део на тональн?сть та групування результат?в.Побудова серв?су для обляду з?брано? та оброблено? ?нформац??.Для виконання дано? завдання, було обрано платформу Apache Hadoop та Apache Spark. Apache Spark з використанням платформи Apache Hadoop краще за все п?д?йде для обробки та анал?зу даних великого обсягу. В?н був обраний за свою швидкод?ю, оск?льки в?н не запису? результати сво?х п?драхунк?в на жорсткий диск, а може збер?гати результати в операц?йн?й пам'ят?. Для обробки коментар?в на тональн?сть ми будемо використовувати за вздалег?ть натренеровану неромережу. Ц? дан? ми будемо отримувати в потоц? який буде оброблятися Apache Kafka. Цей ?нструмент представляет собою серв?сом для запису лог?в та ?х групування. В?н буде збирати пот?к даних в?д нейромереж? та групувати их в орган?зован? дан?. Для коректно? роботи програми, було визначено м?н?мальн? характеристики комп'ютерно? системи:Двоядерний процесор з тактовою частотою 2 ГГц8 Гб RAM6 Гб Жорсткого диску Система на операц?йн?й систем? Linux або WindowsСтруктура програмного продукту В процес? розробки, було визнач 3 основн? частини: розробка лог?ки, налаштування потоку обробки коментар?в та розробка остаточного анал?зу коментар?в та ?х групування.Рис. 3.1 Арх?тектура проектуПроектне р?шення склада?ться з 2-ох модул?в:CommentsProviderSentimentAnalysisKafkaStream Модуль CommentsProvider явля?ться сукупн?стю ?нструмент?в для збору найпопулярн?ших ролик?в та ?х коментар?в. Цей модуль явля? собою сукупн?сть ланцюг?в MapReduse. MapReduce м?стить розпод?лен? серв?си, та викону? р?зн? завдання паралельно один одному. ? р?зн? модул?, як? керують зв’язком м?ж р?зними вузлами даних та забезпечують високу доступн?сть та в?дмовост?йк?сть. Програма, написана у функц?ональних стилях MapReduce, автоматично паралел?зуються та виконуються на комп'ютерн?й систем?. MapReduce п?клу?ться про детал? розпод?лу даних та виконання процес?в на розпод?леному серв?с? п?д час виконання. П?д час цього процесу, якщо ? якась катастрофа, фреймворк забезпечу? високу доступн?сть, а ?нш? доступн? режими дбають про в?дпов?дальн?сть за несправний вузол. Типова реал?зац?я цього алгоритму отриму? на вх?д 3 аргументу: вих?дну колекц?ю, Map-функц?ю, Reduce-функц?ю, - ? поверта? нову колекц?ю даних п?сля обробки. Алгоритм склада?ться з дек?лькох крок?в. В якост? першого кроку викону?ться Map-функц?я до кожного елементу вих?дно? колекц??. На даному ?тап? дан? обробляються за використанням функц?? map. Робота дано? стад?? склада?ться в ф?льтрац?? ? при обробц? даних. Дана процедура схожа з операц?ю map, призначена для виконавця дано? функц?? застосову?ться у кожному вх?дному в?др?зку. Map поверне створений екземпляр ключ-об'?кт?в або нуль. Яке буде збер?гатися в ключ? та значенн?, але ключ-значення дуже важливо, бо дан? з одним ключем в майбутньому потрапляють в один екземпляр функц?? reduce. Тобто, можна сказати, що обов'язок Map-функц?? конвертувати елементи вих?дно? колекц?? в нуль або дек?лька прим?рник?в ключ-значення об'?кт?в. Останн?м кроком викона?ться функц?я Reduce - для кожного згрупованого прим?рника ключ-значення об'?кта. Функц?я reduce зада?ться ? обчислюется ф?нальний результат для окремо? Shuffle. Сукупн?сть значень, поверта?ться функц??ю reduce, яка ? явля? собою к?нцевий результат MapReduce-завдання. У висновку, функц?я Reduce поверне новий екземпляр об'?кта, який буде включений в результуючу колекц?ю.Для п?двищення ефективност? обробки даних великого обсягу. Для вир?шення завданя, а також показати деяк? особливост? Hadoop та Spark, як? дозволяють спростити розробку або ?стотно прискорити виконання MapReduce-завдання на кластер?.MapReduce м?стить процедури Map та Reduce. Map процедури операц?? ф?льтрац?? та сортування даних щодо даних, де в якост? процедури Reduce викону?ться п?дсумкова операц?я даних. Ця модель заснована на модиф?кованих концепц?ях map та reduce функц?й, зазвичай доступних у функц?ональному програмуванн?.Як було розглянуто, MapReduce склада?ться з стад?й Map, Shuffle ? Reduce. Як правило, в практичних завданнях найважчою виявля?ться стад?я Shuffle, так як на ц?й стад?? в?дбува?ться сортування даних. Насправд? ?сну? ряд завдань, в яких можна об?йтися т?льки стад??ю Map. Бувають ситуац??, коли для вир?шення задач? одним MapReduce не об?йтись. Для того, щоб виконати посл?довн?сть MapReduce-завдань на hadoop, досить просто в якост? вх?дних даних для другого завдання вказати папку, яка була вказана в якост? output для першо? ? запуска? ?х по черз?.На практиц? ланцюжка MapReduce-задач можуть являти собою досить складн? посл?довност?, в яких MapReduce-завдання можуть бути п?дключен? як посл?довно, так ? паралельно один одному.Модуль SentimentAnalysis займа?ться аназ?зом тональност? сл?в за допомогую натренеровано? нейромереж?. Ми використову?мо анал?з настро?в для визначення критично? ?нформац??, яка дозволя? усв?домлювати ситуац?ю п?д час конкретних сценар??в у режим? реального часу. Чи ма? м?сце криза PR у соц?альних мед?а? Розлючений кл??нт, який ось-ось змусить? Система анал?зу настро?в може допомогти вам негайно визначити под?бн? ситуац?? та вжити заход?в.Зазвичай п?дходи, заснован? на правилах, визначають наб?р правил у певн?й мов? сценар??в, що визначають суб'?ктивн?сть, полярн?сть чи предмет думки.Spark полегшу? реал?зац?ю як ?теративних алгоритм?в, як? в?дв?дують наб?р даних дек?лька раз?в у цикл?, так ? ?нтерактивного / досл?дницького анал?зу даних, тобто повторного запиту даних у стил? бази даних. Затримка таких програм може бути зменшена на к?лька порядк?в пор?вняно з реал?зац??ю Apache Hadoop MapReduce. Серед класу ?теративних алгоритм?в - алгоритми навчання машинних систем навчання, як? сформували початковий поштовх для розвитку Apache Spark. Правила можуть використовувати р?зн? входи, так? як. Основним прикладом реал?зац?? на основ? правил ? наступний. Визначте два списки поляризованих сл?в (наприклад, негативн? слова, так? як поганий, г?рший, негарний тощо) та позитивн? слова, так? як хороший, найкращий, красивий тощо). Порахуйте к?льк?сть позитивних сл?в, що з’являються в текст?. Порахуйте к?льк?сть негативних сл?в, що з’являються в текст?. Якщо к?льк?сть появи позитивних сл?в б?льше, н?ж к?льк?сть негативних сл?в, поверта? позитивн? настро?, навпаки, поверта? негативн? настро?. В ?ншому випадку поверн?ться нейтрально.Модуль KafkaStream занимается тим що прийма? пот?к даних посилань в?д нейронно? мереж?. Apache Kafka це розпод?лена стр?м?нгова платформа. Для цього проекту було обрано використовувати модуль на основ? розпод?льно? системи Apache Kafka, для отримання велико? к?лькост? даних великого обсягу. В великих розпод?лених систем? зазвичай багато серв?с?в, як? генерують р?зн? под?й як? зазвичай можуть викликати труднощ? в обробц?, з пост?йним потоком невелико?, але швидк?стю поступлення. Kafka знаходится в програмному стан? м?ж продюсером ? даними користувача, збираючи дан? у перших, у себе в розпод?леному сховищ? по логам ? процесам. ?ншими словами, Kafka - це г?брид розпод?лено? бази даних ? черги пов?домлень. Apache Kafka дуже продуктивний ?нструмент, який потр?бен для перенаправлення поток?в даних з одного м?сця в ?нше, з обробкою ? без. Оск?льки було вир?шено для оптим?зац?? зменшити навантаження на нейрону мережу, та обробляти по одному комментарию, сервер на основ? Apache Kafka буде отримувати пост?йн? посилання в?д не? та обробляти ? збер?гати результат для подальшо? обробки. Огляд роботиВ цьому пункт? буде розглянуто методи роботи програмного продукту для обробки даних великого обсягу, на приклад? роботи програми. Для реал?зац?? дано? ?де?, в рамках дипломно? роботи та для демонстрац?? буде використовуватись - локально заготовлений сукупн?сть даних для обробки. В ц?лому принцип роботи програми можно роглянути на рис. 3.2.Рис 3.2 Принцип роботи програмиДивлячись на д?аграму опису роботи програми, можна визначити основн? задач? для програмного продукту. В першу чергу нам потр?бно отримати дан? для обробки, п?сля цього почина?ться формування даних для двох основних процес?в обробки даних. В першому випадку ми форму?мо дан? для зручно? обробки коментар?в в?део на тональн?сть, для анал?зу ключових сл?в ми аналог?чно прибираем, не потр?бн?, поля даних для легшо? обробки даних.Рис 3.3 Алгоритм обробки коментар?в на тональн?стьП?сля отримання необх?дних даних для анал?зу почина?ться етап анал?зу коментар?в на тональн?сть. Нейрона мережа почина? поступово отримувати коментар? в?д в?део, кожен коментар п?сля анал?зу на тональн?сть отриму? коеф?ц??нт настрою в?д 0 до 100, де 0 не повн?стю негативний, а 100 повн?стю позитивний. Оск?льки анал?з вс?х коментар?в для одного в?део за один раз, та формування его в ?диний результат, був би ресурсом?стким, для обробки та збер?гання в памят? тако? к?лькост? даних. Було прийнято р?шення оптим?зувати обробку даних великого обсягу розбиттям ц??? задач?. Для зменшення навантаження на анал?з було вир?шено, що нейрона мережа беде обробляти по одному коментарю, та в?дправляти дан? у вигляд? пов?домлення з номером в?део, та результатом синтаксичного анал?зу у вигляд? коеф?ц??нта. Для отримання та формування пов?домлень було використано сервер Kafka. В?н отриму? кожне пов?домлення в вигляд? списку та форму? дан?. П?сля отримання вс?х коментар?в в?д одного в?део в?н форму? дан? та запису? ?х, для наступного використання.Рис. 3.4 Алгоритм обробки популярних тег?вДля анал?зу популярност? в?део за тегами було використано такий метод анал?зу. Спочатку за допомогою Apache Spark сп?вв?дносяться тег та в?део в яких в?н присутн?й ? п?драхову?ться к?льк?сть перегляд?в на в?део до значення тегу. Оск?льки Spark викону? вс? операц?? збер?гаючи все в операц?йн?й пам'ят? так? п?драхунки виконуется достатньо швидко та не ресурсо мистко. П?сля отримання перел?ку популярност? тег?в за к?льк?стю перегляд?в, потр?бно додати тональн?сть до тег?в. Це дозволить б?льш детально зрозум?ти ?х настрий. Для сп?вв?дношення тег?в до ?х тональностей використову?ться такий же механ?зм, як из популярн?стью. Кожен тег сп?вв?дноситься до в?део в якому в?н зустр?ча?ться, та вирахову? значення тональность в?д 0 до 100. Рис. 3.5 Результат обробки тег?в на популярн?сть та тональн?стьП?сля отриманого результату ста? б?ль ясним походження популярност? залежн?сть тег?в в?д тональност?. Оск?льки для отримання поширення та п?двищення за?нтересованост? не завжди можуть виступати позитивн? реч? наприклад як правокац?? та конфл?кти, це дозволя? зрозум?ти настр?й популярних видео.Рис. 3.6 Головна стор?нка програмиП?сля обробки вс?х даних вони надсилаються на стор?нку користувача та представляють у вигляд? таблиць. Для б?льшо? зручност? в?дображення, стор?нка под?лена на дв? основн? таблиц?. С правого боку розташована таблиця для в?дображення найб?льш трендових тег?в за переглядами та ?х тональн?сть. З л?вого боку розташований таблиця з випадаючим описом в?део по натисканню.Висновки до розд?лу 3У рамках даного розд?лу було детально розглянут? аспекти розробки програмного продукту, об?рунтовано виб?р мови програмування та технолог?? для написання програми. Кр?м цього, в даному розд?л? було вир?шено наступн? завдання:Було висунут? вимоги до розроблюваного програмного продукту, вказан? необх?дн? системн? вимоги для машини, на як?й буде запускатися дана програма а також описан? основн? завдання, як? програма повинна вир?шувати. Було об?рунтовано виб?р мови програмування, технолог?? та б?бл?отек для розробки додатку, надан? коротк? в?домост? про Apache Spark та Apache Hadoop ? перерахован? ?х переваги, що спонукали до вибору дано? технолог?? для розробки програми.Проведено детальний опис основних компонент?в програми, вказано модул?, що за них в?дпов?дають та перерахован? основн? функц??, що забезпечують дан? модул? та способи ?х забезпечити. РОЗРОБКА СТАРТАП ПРОЕКТУ Опис ?де? проектуБ?знес анализу видео ролик?в вже не новий, незважаючи на в?дносну новизну. Але швидкий р?ст платформи для в?деохостингу YouTube, створю? попит для автор?в видео, як?м потр?бно в?дстежувати популярн? тенденц?? платформи, загалом за допомогою в?дстеження найпопулярн?ших та трендових в?деоролик?в на ресурс?. За допомогою анал?зу трендових в?део ?х тег?в та анал?зу тональност? коментар?в. Розроблений продукт для комп'ютерних систем призначений для демонстрац?? ?де? п?двищення ефективност? обробки даних великого обсягу для анал?зу даних та тональност? коментар?в та на даному ступен? розвитку продукту не може бути представлений як повноважний продукт придатний для ринку. Однак, при дов?льному розвитку, можливо створити план головно? положення та ?де? та скласти план д?й щоб розробити конкурентно спроможн?й продукт. В межах дипломного проекту, можливо реал?зувати ?дею веб-серв?су, який буде реал?зувати анал?з в?део, який буде вбирати в себе дан? з платформи в?деохостингу та проводити анал?з, в?део за тегами та тональн?стью ?х коментар?в. В цьому розд?л?, буде описано розробку стартап-проекту програмного продукту для п?двищення ефективност? анал?зу даних великого обсягу у вигляд? веб-серв?су для анал?зу в?део. В табл 4.1 викладено зм?ст ?де?, яка пропону?ться, можлив? напрямки застосування ?де?, основн? вигоди, яка може отримати к?нцевий користувач за допомогою ?де? та чим в?др?зня?ться ?дея в?д ?снуючих аналог?в.Таблиця 4.1. Опис ?де?? стартап-проектуЗм?ст ?де?Напрямки застосуванняВигоди для користувачаПрограмма для анал?зу в?део за тегами та тональн?стью коментар?в Анал? в?део по тегам на б?льш трендових в?део Анал? в?део по тегам на б?льш трендових в?део для мон?торингу найпопулярн?ших тенденц?й в?део на платформ? Анал?з в?део на тональность коментар?вАнал?з в?део на тональность коментар?в для мон?торингу позитивного або негативного в?дгуку на в?деоПрогнозування популярност? в?део тег?в Прогнозування популярност? в?део тег?в для розум?ння як? теги в видео збирають б?льше перегляд?в Анал?з потенц?и?них техн?ко-економ?чних переваг ?де?? (чим в?др?зня?ться в?д ?снуючих аналог?в та зам?нник?в). Попередн?м колом аналог?в ? так? ресурси як socialblade та keywordtool. Оск?льки проект даного типи зазвичай ? закритого типу, як? використовуються компан?ями для власного використання, оск?льки для кожно? задач? використовуються сво? методи анал?за.Таблиця 4.2. Визначення сильних, слабких та неи?тральних характеристик ?де?? проекту№Техн?ко-економ?чн? характеристики ?де?М?й проектКонкурентиWNS121Можлив?сть в?дстеження ключових сл?в+-++2В?дстеження трендових в?део ++-+3Анал?з коментар?в за тональн?стю тексту +--+4Анал?з канал?в загалом-+-+Визначении? перел?к неи?тральних, сильних та слабких характеристик ? особливостей ?де?? потенц?и?ного продукту ? основою для формування и?ого конкурентоспроможност?. Як можно побачити в таблиц? 4.2, основною перевагою розроблюваного продукту ? саме анал?з коментар?в за тональн?стю тексту, на що ? варто зробити ставку. В майбутньому варто врахувати основний недол?к розроблюваного продукту, а саме анал?з канал?в загалом.Технолог?чний аудит ?де? проектуТаблиця 4.3. Технолог?чна зд?и?сненн?сть ?де?? проекту№?дея проектуТехнолог?? ?? реал?зац??Наявн?сть технолог??Доступн?сть технолог?й1Программа для анал?зу в?део за тегами та тональн?стью коментар?в Мова програмування Python? в наявност?Доступн? безкоштовно2Б?бл?отека Youtube API? в наявност?Доступн? безкоштовно3Платформа Apache Hadoop та Spark? в наявност?Доступн? безкоштовно4Платформа Apache kafka? в наявност?Доступн? безкоштовноОбрана технолог?я реал?зац?? ?де? проекту: розробка програми на мов? програмування Python, б?бл?отека для створення створення з'?днання та отримання даних з платформи Youtube, платформа для обробки даних великого обсягу Spark на основ? Hadoop, та платформа kafka для отримання даних в?д анал?зу тональност? коментар?в. Анал?з ринкових можливостей запуску стартап-проектуВизначення ринкових можливостеи?, як? можна використати п?д час ринкового впровадження проекту, та загроз ринку, як? можуть перешкодити реал?зац??? проекту, дозволя? спланувати напрями розвитку проекту ?з урахуванням стану ринкового оточення, потреби к?нцевих кл??нт?в ? пропозиц?и? конкурентних проект?в. В таблиц? 4.4 наведена попередня характеристика можливого ринку для розробляючого стартап-проекту.Таблиця 4.4. Попередня характеристика потенц?и?ного ринку стартап-проекту№Показники стану ринкуХарактеристика1К?льк?сть головних гравц?в, од>102Динам?ка ринку (як?сна оц?нка)В сфер? анал?зу в?део та обробки даних великого обсягу ринок знаходиться на етап? стр?мкого зростання3Наявн?сть обмежень для входу (вказати характер обмежень)Мала к?льк?сть конкурент?в як в анал?зу в?деоролик?в, та велика для тих, хто розширю? наявн? продукти п?дтримкою анал?зу в?део контенту4Специф?чн? вимоги до стандартизац??? та сертиф?кац???Стандартизац??ю в сфер? обробки даних великого обсягу займаються орган?зац?? Apache License 2.0 и GNU GPLТаблиця 4.5. Характеристика потенц?и?них кл??нт?в стартап-проекту№Потреба, що форму? ринокЦ?льова аудитор?яВ?дм?нност? у повед?нц? р?зних потенц?йних ц?льових груп кл??нт?вВимоги споживач?в до товару1Стр?мке зр?ст в?деохостинг?в та ?х ?нтерес у користувач?в, та необх?дн?сть розум?ння аудитории Приватн? компан?? та автори в?део, що потребують в розум?нн? актуальних та популярних тенденц?й Створення та анал?з в?део контентуНеобх?дн?сть розум?ти тенденц?? ринку2Розум?ння тональност? ринку знати позитивну чи негативну реакц?юКорпоративн? кл??нти, що хочуть розум?ти лояльн?сть кл??нт?в та автори в?део для розум?ння аудиторииБезпосередн? використання для р?зних потребРозум?ння платформи для розповсюдження та ?х повед?нкуТаблиця 4.6. Фактори загроз№ФакторЗм?ст загрозиМожлива реакц?я компан??1Висока конкуренц?яНа даний момент ?сну? велика к?льк?сть аналог?в, як? в основному повторюють функц?онал одне одного, тому ? загроза не переманити кл??нтаШвидка реакц?я команди розробник?в на побажання потенц?йних кл??нт?в, пост?йне оновлення та розширення функц?оналу, спираючись на останн? тенденц?? потреб користувач?в2Вузький спектр функц?оналу ? можливостейНа ринок треба вийти якомога швидше, тому до цього моменту повинн? бути реал?зован? вс? основн? функц?? для забезпечення можливост? конкуренц?? та розширенню кл??нтсько? базиЗатримка моменту виходу на ринок, з метою розширення базового набору функц?оналу на момент старту поширення ?нструментар?я програми3Економ?чнийВ силу обмеженост? в ф?нансовому план?, можлив? накладки, так як до моменту виходу на ринок компан?я не да? жодного прибуткуПобудова ч?ткого б?знес-плану ?з залученням сприятливих ?нвестор?вТаблиця 4.7. Фактори можливостей№ФакторЗм?ст можливост?Можлива реакц?я компан??1Залучення ?нвестиц?йСклавши ч?ткий б?знес-план, можна залучити необх?дну к?льк?сть ?нвестиц?й, що дозволить розширити штат ? прискорити момент виходу на ринокЗб?льшити штат, прискорити вих?д на ринок, вийти на пер?од самоокупност? ран?ше2Розширення кл??нтсько? базиЗ допомогою продумано? PR-кампан??, можна переманити кл??нт?в конкурент?в запропонувавши б?льш виг?дн? умови та послугиСпланувати рекламну кампан?ю, проводити презентац?? на тему в?деоанал?тики, в яких для демонстрац?? буде використано розроблюваний продукт3Заключення контракт?в на роботиУкладання договори на надання послуг Отримати зв’язки з потенц?йними кл??нтами та використовувати розроблений продукт для анал?зу в?део тренд?вТаблиця 4.8. Ступеневии? анал?з конкуренц??? на ринкуОсобливост? конкурентного середовищаВ чому проявля?ться дана характеристикаВплив на д?яльн?сть п?дпри?мства (можлив? д??? компан???, щоб бути конкурентос- проможною)Складн?сть входу на ринокРинок ? новим та велика к?льк?сть конкурент?в не укр?пили сво? позиц??, не завели зв'язки та мають налагоджену кл??нтську базуПропонувати б?льш виг?дн? умови (нав?ть з можлив?стю працювати без прибутку), анал?зувати та впроваджувати нов? розробки в сфер? ран?ше конкурент?в, як?сна рекламна кампан?яЗагальнодоступн?сть ?нформац??Базовий анал?з буде доступний для вс?х користувач?в Критично важливо готувати оновлення в м?н?мальний п?сля оприлюднення стандарт?в терм?н, щоб мати перевагу перед конкурентамиСхож?сть продукт?в-зам?нник?вТак як продукти на обраному ринку виконують фактично одну ? ту ж функц?ю, важко сутт?во вир?знятися серед конкурент?вЕкспериментувати з ?деями для нових оновлень, впроваджувати нов? р?шення в м?н?мальний терм?нТаблиця 4.9. Анал?з конкуренц??? в галуз? за М. ПортеромСкладов? анал?зуПрям? конкуренти в галуз?Потенц?йн? конкуренти в галуз?ПостачальникиКл??нтиТовари-зам?нникиsocialblade, keywordtool та ?нш?keywordtool, Youtubesocialblade, keywordtoolАвтори в?део, приватн? компан??Open Source-р?шенняВисновки:?сну? не велика к?льк?сть р?зноман?тних р?шень у конкурент?в? маса додатк?в, що можуть виконувати так? ж операц??Постачальниками не ? св?тов? л?дери у сфер? в?деоанал?тики Б?льш?сть кл??нт?в уже давно на ринку та мають налагоджен? контакти з постачальниками? безкоштовн? р?шення розроблен? ентуз?астами для виконання анал?зу та обробки даних великого обсягуТаблиця 4.10. Об?рунтування фактор?в конкурентоспроможност?№Фактор конкурентоспроможност?Об?рунтування (наведення чинник?в, що роблять фактор для пор?вняння конкурентних проект?в значущим)1Зручний ?нтерфейсТак як проект на етап? розробки, можна врахувати переваги та недол?ки конкурент?в, щоб до виходу на ринок мати зручн?ший н?ж в ?нших ?нтерфейс користувача2Забезпечення доступн?сть через ?нтернетРозробка для обробки даних в ?нтернет? дозволя? зробити ресурс б?льш доступним . Створення продукт без необх?дность оновлюватись у користувача розширить кл??нтську базу, завдяки в?дв’язки програми в?д привязки к приладу користувача3Швидке реагування на в?дгукиНа етап? розробки неможливо передбачити вс? нюанси застосування. Завдяки забезпеченню швидкого в?дгуку, можна використовувати користувач?в у якост? бета-тестувальник?в, що дозволя? максимально швидко адаптувати додаток п?д потреби реальних кл??нт?в та завдяки розташуванню продукту в интернете не вимагати пост?йного оновлення з сторони користувачаТаблиця 4.11. Пор?вняльнии? анал?з сильних та слабких стор?н№Фактор конкурентоспроможност?Бали 1-20Реи?тинг товар?в-конкурент?в у по- р?внянн? з розроблюваним продуктом-3-2-101231Зручний ?нтерфейс12?2Забезпечення доступн?сть через ?нтернет17?3Швидке реагування на в?дгуки10?Таблиця 4.12. SWOT- анал?з стартап-проектуСильн? сторони: Зручний ?нтерфейсЗабезпечення доступн?сть через ?нтернет Можлив?сть врахування досв?ду конкурент?вШвидке реагування на побажання кл??нт?вСлабк? сторони:Наявн?сть opensource р?шеньНедов?ра великих кл??нт?вМожливост?:Отримати контракти на анал?з та обробку в?део тренд?в Загрози:Програти конкуренц?ю opensource проектамНе переманити кл??нт?в в?д уже наявних конкурент?вТаблиця 4.13. Альтернативи ринкового впровадження стартап-проекту№Альтернатива ринково? повед?нкиЙмов?рн?сть отримання ресурс?вСтроки реал?зац??1В?дкриття проекту та розповсюдження в рамках opensource л?ценз??Низька, так як в основному це будуть пожертви ентуз?аст?в. Можлив?сть продажу компан?? у випадку зац?кавленост? з боку великих компан?йПрактично митт?во2Розповсюдження проекту через конференц??, публ?чн? виступиВисока, оск?льки публ?чними заходами можна поширити ?дею проекту та завести знайомства з потенц?йними ?нвесторами та кл??нтамиДо року, з можлив?стю продовження3Участь в тендерах ? укладення договор?в з державними установамиСередня, так як на це впливають економ?чн?, пол?тичн?, особист? мотиви ? не можна гарантувати абсолютну прозор?сть та добросов?сну конкуренц?ю на цьому ринкуК?лька м?сяц?в, в залежност? в?д наявност? запиту з боку державиРозроблення ринково?? стратег??? проектуТаблиця 4.14.Виб?р ц?льових груп потенц?и?них споживач?в№Опис проф?лю ц?льово?? групи потенц?и?них кл??нт?вГотовн?сть споживач?в сприи?няти продуктОр??нтовнии? попит в межах ц?льово? групи (сегменту)?нтенсивн?сть конкуренц??? в сегмент?Простота входу у сегмент1Автори в?деоНе вс? користувач? готов? прийнятиПродукт необх?дний ужеКонкуренц?я середняВх?д пом?рно-складний2Приватн? компан??Не вс? користувач? готов? прийнятиПродукт необх?дний не вс?мКонкуренц?я середняВх?д складний3Навчальн? та досл?дницьк? програмиКористувач? готов? прийняти продуктНе вс? зац?кавлен? в продукт?Конкуренц?я середняВх?д не ? складнийЯк? ц?льов? групи обрано:Потр?бно працювати з? вс?ма ц?льовими групами, перевагу надати приватними компан?ямТаблиця 4.15. Визначення базово?? стратег??? розвитку№Обрана альтернатива розвитку проектуСтратег?я охоплення ринкуКлючов? конкурентос- проможн? позиц??? в?дпов?дно до обрано?? альтернативиБазова стратег?я розвитку1Розвиток шляхом маркетингов?й компан?? та публ?чн?й демонстрац?? можливост? продуктуВпливати на обран? ц?льов? групи в порядку значимост? та перспективВиступ на конференц?ях, в?льне розповсюдження для навчально-досл?дницьких ц?лейОперативно оновлювати продукт в?дпов?дно до побажань кл??нт?в Таблиця 4.16. Визначення базово?? стратег??? конкурентно?? повед?нки№Чи ? проект ?першопрох?дцем? на ринку?Чи буде компан?я шукати нових споживач?в, або забирати ?снуючих у конкурент?в?Чи буде компан?я коп?ювати основн? характеристики товару конкурента, ? як??Стратег?я конкурентно?? повед?нки1Н?, проект не ? ?першопрох?дцем?Необх?дно рухатись у р?зних напрямках, як шукати нових споживач?в, так ? в?дбирати ?снуючих у конкурент?вЧерез схож?сть функц?оналу, компан?я буде коп?ювати основн? характеристики у конкурент?вПропонувати функц?онал на кращих умовах, оперативно оновлювати в?дпов?дно до нових стандарт?вТаблиця 4.17. Визначення стратег??? позиц?онування№Вимоги до товару ц?льово?? аудитор???Базова стратег?я розвиткуКлючов? конкуренто- спроможн? позиц??? власного стартап- проектуВиб?р асоц?ац?и?, як? мають сфо- рмувати комплексну позиц?ю власного проекту (три ключових)1Висока частота оновлення, широкий функц?онал,доступн?сть через ?нтернетРозширити штат, досл?джувати новини щодо виходу нових функц?йОперативне виправлення недол?к?в та впровадження побажаньАнал?затор тренд?в, прогнозування тенденц?й, анал?з в?деоРозроблення маркетингово?? програми стартап-проектуТаблиця 4.18. Визначення ключових переваг концепц??? потенц?и?ного товару№ПотребаВигода, яку пропону? товарКлючов? переваги перед конкурентами (?снуюч? або так?, що потр?бно створити1Обробка даних великого обсягу в вигляд? анал?зу тренд?в в?део платформиМожлив?сть обробки велико? к?лькост? ?нформац?? о в?део трендах для анал?зу тенденц?й та популярност? в?део платформиМожлив?сть тональност? коментар?в в?део, обробка даних на в?даленому сервери в мереж? ?нтернет, що дозволяе оновлюватися, для як?сного анал?зу без потреби в витрат ресурс?в з? сторони користувача2Часте оновлення програмиВрахування побажань кл??нт?в та виправлення помилок в найкоротш? терм?ниСтворення в?дд?лу п?дтримки для анал?зування реагування на в?дгуки кл??нт?в3Формування зв?т?в з результатами обробки та анал?зу даних Можлив?сть формувати зв?ти по робот? ресурсу з детальним описом та оц?нкою тональност? ? популярност? ключових сл?вМодель для формування зв?ту анал?зу з результатами роботи ресурсу Таблиця 4.19. Опис трьох р?вн?в модел? товаруР?вн? товаруСутн?сть та складов??. Товар за задумомПрограмма для обробки та анал?зу даних великого обсягу в вигляд? в?део за тегами та тональн?стью коментар?в ??. Товар у реальному виконанн?Властивост?/характеристикиПотребаРесурс для анал?зу в?део тренд?в та популярност? ключових сл?в?нтернет з'?днання не велико? швидкост? Ресурс для анал?зу тональност? коментар?в на тональн?сть?нтернет з'?днання не велико? швидкост? Ресурс для в?дображення тенденц?й платформи за трендами?нтернет з'?днання не велико? швидкост? Як?сть: публ?чне тестування програми, логування збо?в та система зворотнього зв’язку для пов?домлення про неналежну роботу програмиПоширення: продаж послуг на веб-ресурс? Марка: назва орган?зац??-розробника та назва товару???. Товар ?з п?дкр?пленнямДо продажу: програмний код та послугиП?сля продажу: веб-ресурс доступний безкоштовно з обмеженням та рекламою ? можлив?стю придбання послуг За рахунок того що продукт буде у вигляд? веб-ресурсу в?н буде захищено в?д коп?юванняТаблиця 4.20. Визначення меж встановлення ц?ни№ п/пР?вень ц?н на товари-зам?нникиР?вень ц?н на товары-аналогиР?вень доход?в ц?льово? групи споживач?вВерхня та нижня меж? становлення ц?ни на товар/послугу10$ - 500$0$-500$>10000$/м?сяць100$-200$Таблиця 4.21. Формування системи збуту№ п/пСпециф?ка закуп?вельно?? повед?нки ц?льових кл??нт?вФункц??? збуту, як? ма? виконувати постачальник товаруГлибина каналу збутуОптимальна система збуту1Продаж послуг на ресурс? Можлив?сть авторизац?? та онлайн оплати послуг на платформ?Канал збуту однор?вневий Вертикальна (право власност? залиша?ться у розробника ПЗ)Таблиця 4.22. Концепц?я маркетингових комун?кац?й№ п/пСпециф?ка повед?нки ц?льових кл??нт?вКанали комун?кац?и?, якими користуються ц?льов? кл??нтиКлючов? позиц???, обран? для позиц?онуванняЗавдання рекламного пов?домленняКонцепц?я рекламного звернення1Куп?вля функц?? та послуг на ресурс?Тематичн? зустр?ч?, соц?альн? мереж?, конференц??, презентац?? тощоНадання послуг для обробки та анал?зу Демонстрац?я основних функц?й розробленого продуктуОхоплення аудитор??, пояснення функц?й та можливостей розробленого продукту та його перевагВисновки до розд?лу 4Четвертий розд?л призначений для розробки стартап-проекту для розробленого програмного продукту, створено опис ?де? продукту, наведено детальний анал?з конкурент?в та можливостей, що доступн? на даному ринку. Для досл?дження в рамках розробки стартап-проекту було обрано наступн? завдання:Наведено загальний опис ?де? продукту для виходу на ринок, описаний функц?? проекту, визначено основн? конкуренти та сп?вставлено функц?? конкурент?в для визначення переваг розроблюваного продукту над обраними конкурентами.Проанал?зовано ринков? можливост? для запуску проекту, пор?вняно перспективи запуску в пор?внянн? з конкурентами, встановлено план та ринкову стратег?ю розвитку продукту, визначено ц?льов? групи та способи просування проекту.Проведено техн?чний аудит проекту ? визначено можливост? реал?зац?? програмного продуктуРозроблено маркетингову програму для просування продукту на ринку, описано способи та основн? канали збуту, визначено пр?оритетн? ц?льов? групи та маркетингов? пов?домлення для розширення кл??нтсько? базиВ п?дсумку, було отримано стартап-проект для запуску розробленого програмного продукту на ринок, отримано навички створення стартап-проект?в, побудови маркетингово? стратег?? та анал?зу обраного ринку.ВИСНОВКИМаг?стерська робота була присвячена вир?шенню задач? п?двищення ефективност? обробки даних великого обсягу. Було проведено теоретичний огляд та анал?з особливостей обробки даних великого обсягу, виявлено основн? переваги та недол?ки ?? застосування.Також було розглянуто ?снуюч? способи та оптим?зац?? обробки даних великого обсягу та можливостей ?х застосування. Для дипломно? роботи було обрано масив структурованих даних про в?део в?д платформи Youtube, де важливою частиною даних е коментар? к в?део. Була розглянута проблема обробки даних великого обсягу, та можливий спос?б вир?шення дано? проблеми Apache Spark та Apache kafka, також було розглянуто методи анал?зу тональност? тексту ?х можливост? та застосування. Проведено теоретичне досл?дження, та анал?з ?снуючих р?шень п?дтвердив необх?дн?сть розробки нового п?дходу, до вир?шення задач?, п?двищенням ефективност? обробки даних великого обсягу з використа використанням анал?зу тональност? коментар?в, у зв'язку з недостатн?м можливостей обробки даних традиц?йних п?дходах, що зб?льшуе затримку при обробц? даних та не забезпечують р?вном?рне обчислення.Було обрано та аргументовано виб?р методу обробки даних великого обсягу, що базу?ться на Spark MapReduce, а також обрано метод анал?зу тональност? тексту коментар?в за допомогою натренеровано? нейроно? мереж?. Даний метод обробки даних на основ? Apache Spark направлений на п?двищення ефективност? обробки даних великого обсягу за рахунок збер?гання даних в операц?йн?й пам'ят?, та для анал?зу тональност? текст?в нейрона мережа найб?льше п?дходить для анал?зу завдяки тренування з розум?нням нових трендових сл?в.Для перев?рки результату роботи програми, було розроблено програмний продукт для анал?зу тренд?в Youtube, в як?й реал?зовано запропонований метод обробки. Программа дозволя? отримувати результати обробки даних у вигляд?, списку популярних тег?в, та список трендових в?део з можлив?стю в?дображення тональност? коментар?в.П?д час створення програмного продукту було створено ефективного п?двищення обробки даних великого обсягу з можлив?стю анал?зу тональност? коментар?в. Граф?чне в?дображення результату анал?зу в?део, популярност? та тональност? в?део, що запропонований метод п?двищення обробки даних, що судить про вир?шення проблеми п?двищення ефективност? обробки даних великого обсягу. СПИСОК ВИКОРИСТАНИХ ДЖЕРЕЛC.C. Aggarwal. // An introduction to social network data analytics // Social network data analytics, Springer, United States, -2011 pp. 1–15Hsinchun Chen, Roger H. L. // Chiang, Veda C. Storey. Business intelligence and analytics // From big data to big impact MIS Quarterly. -2012, pp. 1165-1188Cukier K. // The Economist, Data, data everywhere [Електронний ресурс] : A special report on managing information. -2010. -Режим доступу до ресурсу: Rojas, Héctor Pomares, Olga Valenzuela. // A personal perspective on the origin(s) and development of “big data” [Електронний ресурс]: The phenomenon, the term, and the discipline (Scholarly Paper No. ID 2202843) Social Science Research Networkccc. -2012. -Режим доступу до ресурсу: Fan, Fang Han, Han Liu. // Challenges of big data analysis National Science Review. -2014. pp. 293-314.Ronen Feldman. // Techniques and applications for sentiment analysis Communications of the ACM. -2013. pp. 82-89.C. Shan, F. Porikli, T. Xiang, S. Gong. // Video analytics for business intelligence, Springer, Berlin, Heidelberg. -2012. pp. 309-354.Dan Li, Wu He. // Social media competitive analysis and text mining // A case study in the pizza industry International Journal of Information Management. -2013. -№3. pp. 464-472.C.C. Aggarwal, C. Zhai. // Mining text data // Springer. -2012. pp. 11-41.Ohbyung Kwon, Nam Yeon Lee, Bongsik Shin. // Data quality management, data usage experience and acquisition intention of big data analytics // International Journal of Information Management. -2014. -3. pp. 387-394.Alexandros Labrinidis. // Challenges and opportunities with big data // Proceedings of the VLDB Endowment. -2012. -5. pp. 2032-2033.Bing Liu. // Sentiment analysis and opinion mining // Synthesis Lectures on Human Language Technologies. -2012. -5. pp. 1-167.Bo Pang, Lillian Lee. // Opinion mining and sentiment analysis // Foundations and Trends in Information Retrieval. -2008. -2. pp. 1-135.Apache Hadoop [Електронний ресурс] - Режим доступу до ресурсу: Spark [Електронний ресурс] - Режим доступу до ресурсу: ."Apache Hadoop YARN: Yet another resource negotiator" // Proc. 4th Annual Symp. Cloud Computing. -2013. pp. 5:1-5:16.Крис Фиайли. SQL // Руководство по изучению языка. — М.: Peachpit Press. -2003. — 456 с.Apache Kafka [Електронний ресурс] - Режим доступу до ресурсу: .ДОДАТОК А Л?СТИНГ СИСТЕМИSentimentAnalyzer.pyfrom pyspark import SparkContextfrom pyspark.streaming import StreamingContextfrom pyspark.streaming.kafka import KafkaUtilsdfrom vaderSentiment.vaderSentiment2 import SentimentIntensityAnalyzer, NEGATEimport pickleimport nltkimport refrom nltk.tokenize import word_tokenizefrom nltk.corpus import stopwordsfrom nltk.stem import PorterStemmerfrom nltk import WordNetLemmatizerfrom kafka import KafkaProducerclass SentimentAnalyzer: __MODELS__ = ['bnbc', 'dtc', 'lgc', 'lsvc', 'mnbc', 'nbc', 'rfc', 'sgdc'] def __init__(self): self.__load_models() self.stopwords = set(stopwords.words('english')) self.stemmer = PorterStemmer() self.lemmatizer = WordNetLemmatizer() self.sia = SentimentIntensityAnalyzer() self.__load_most_used_words() def __load_most_used_words(self): positive_file = open('./data/positive_reviews.txt', 'r') negative_file = open('./data/negative_reviews.txt', 'r') positive_reviews = [(review, 'pos') for review in positive_file.readlines()] negative_reviews = [(review, 'neg') for review in negative_file.readlines()] all_reviews = positive_reviews + negative_reviews all_words = [] for review in all_reviews: all_words.extend(self.extract_words(review[0])) all_words = nltk.FreqDist(all_words) self.most_used_words = [w[0] for w in sorted(all_words.items(), key=lambda x: x[1], reverse=True)][:10000] def __load_models(self): self.models = [] for model in self.__MODELS__: file = open('./models2.7/{}.pickle'.format(model), 'rb') self.models.append(pickle.load(file)) file.close() print('{} models loaded.'.format(len(self.models))) @staticmethod def __lowercase_negation(text): for neg in NEGATE: text = re.sub('(?i)' + re.escape(neg), neg, text) return text def remove_stopwords(self, words): filtered = [] for word in words: if word not in self.stopwords: filtered.append(word) return filtered def extract_words(self, text): words = [word for word in word_tokenize(text)] words = self.remove_stopwords(words) # words = [stemmer.stem(word) for word in words] words = [self.stemmer.stem(word.lower()) for word in words] return words def create_features(self, text): words = self.extract_words(text) features = dict([(muw, True if muw in words else False) for muw in self.most_used_words]) return features def classify(self, text): features = self.create_features(text) votes = [model.classify(features) for model in self.models] choice = max(votes, key=votes.count) conf = float(votes.count(choice)) / len(votes) return [choice, conf] def polarity_scores(self, text): return self.sia.polarity_scores(SentimentAnalyzer.__lowercase_negation(text)) def perform_sentiment_analysis(self, record): print(record) compound = self.polarity_scores(record[1])['compound'] classification = self.classify(record[1]) return record + [compound] + classificationsentiment_analyzer = SentimentAnalyzer()sa_producer = KafkaProducer(bootstrap_servers='localhost:9092')def send_rdd(rdd): records = rdd.collect() for record in records: record[1] = record[1].encode('utf-8') sa_producer.send('sa', '\t'.join([str(e) for e in record]))sc = SparkContext(appName='SentimentAnalysis')sc.setLogLevel('WARN')ssc = StreamingContext(sc, 5)kvs = KafkaUtils.createDirectStream(ssc, ['comments'], { 'bootstrap.servers': 'localhost:9092', 'auto.offset.reset': 'smallest'})comments = kvs.map(lambda text: text[1].split('\t'))sentiments = comments.map(lambda record: sentiment_analyzer.perform_sentiment_analysis(record))sentiments.pprint()sentiments.foreachRDD(send_rdd)ssc.start()ssc.awaitTermination()CommentsProvider.py from youtube.youtube_scraper import YoutubeScraperfrom kafka import KafkaProducerclass CommentsProvider: def __init__(self, api_key, search_q, n_vids): self.youtube = YoutubeScraper(api_key, search_q, n_vids, self.__on_comment) self.producer = KafkaProducer(bootstrap_servers='localhost:9092') def __on_comment(self, video_id, comment): self.producer.send('comments', bytes('{}\t{}'.format(video_id, comment), 'utf-8')) print(video_id, comment) def start(self): self.youtube.fetch_videos() print('Video Ids:', self.youtube.videos_ids) self.youtube.start() Web.pyfrom web_ments_provider import CommentsProviderfrom web_service.web_server import WebServerfrom web_service.sa_consumer import SaConsumercomments_provider = CommentsProvider('AIzaSyB5XIRU9N6tj6q2Ea7bypaC96o0NNMXyW8', 'Movie Trailer', 10)comments_provider.start()print('Comments Provider started.')web_server = WebServer()web_server.start()print('Web server started.')def send_to_all_clients(msg): for client in web_server.get_all_connections(): client.sendMessage(msg) print('A message has been broadcasted.')sa_consumer = SaConsumer(send_to_all_clients)sa_consumer.start()print('SA Consumer started.')WebServ.pyfrom SimpleWebSocketServer import SimpleWebSocketServer, WebSocketfrom threading import Threadclass DummyWebSocket(WebSocket): def handleConnected(self): print(self.address, 'connected') def handleClose(self): print(self.address, 'closed')class WebServer: def __init__(self): self.server = None self.server_thread = None def start(self): self.server = SimpleWebSocketServer('localhost', 1997, DummyWebSocket) self.server_thread = Thread(target=self.server.serveforever) self.server_thread.start() def get_all_connections(self): return self.server.connections.values() ................
................
In order to avoid copyright disputes, this page is only a partial summary.
To fulfill the demand for quickly locating and searching documents.
It is intelligent file search solution for home and business.