Ім'я файлу: Документ Microsoft Word.docx
Розширення: docx
Розмір: 300кб.
Дата: 08.05.2023
скачати

Контрольні питання

Повна відповідь зараховується об’ємом в 1200 знаків без пробілів (текст). Також в більшості відповідей повинні бути наведено схеми чи рисунки з поясненнями. Дедлайн виконання 19.05.23 (включно).


  1. Поняття великих даних. Програмний засіб Hadoop

Великі дані (Big Data) – позначення структурованих и неструктурованих даних величезних обсягів і значного розмаїття, що піддаються ефективній обробці програмних інструментів, які горизонтально масштабуються та з’явились у кінці 2000-х років, і альтернативних традиційних систем управління базами даних і рішенням класу рішень Business Intelligence.

Можна користуватись і більш простим визначенням, яке цілком відповідає усталеним і більш простим визначенням, що цілком відповідають думці журналістів і маркетологів. «Великі дані – це сукупність технологій, покликаних здійснювати три операції:

1. Обробляти більші, у порівнянні зі «стандартними» сценаріями, об’єми даних.

2. Уміти працювати з даними, що швидко надходять у дуже великих об’ємах. Тобто даних не просто багато, а їх постійно стає все більше й більше.

3. Вміти працювати зі структурованими і мало стуктурованими даними паралельно і у різних аспектах.» .

Вважається, що ці «вміння» дозволяють виявляти приховані закономірності, що вислизають від обмеженого людського сприйняття. Це дає безпрецедентні можливості оптимізації багатьох сфер нашого життя: державного управління, медицини, телекомунікацій, фінансів, транспорту, виробництва і так далі. Не дивно, що журналісти і маркетологи так часто використовували словосполучення Big Data, що багато експертів вважають цей термін дикредитованим і пропонують від нього відмовитись.
Hadoop - це програмний фреймворк від Apache, що використовується для обробки великих обсягів даних. Він базується на розподілених системах і забезпечує збір, збереження, обробку і аналіз великих обсягів даних в розподіленій обчислювальній середовищі. Основні компоненти Hadoop - Hadoop Distributed File System (HDFS) і MapReduce.
HDFS забезпечує збереження даних у великих кластерах серверів, що дозволяє зберігати великі обсяги даних та забезпечувати їх доступність для розподілених обчислювальних процесів. MapReduce - це програмний фреймворк для розподілених обчислень, що дозволяє розподіляти задачі обробки даних на кілька серверів в кластері, що дозволяє швидко оброблювати великі обсяги даних.
Застосування Hadoop дозволяє компаніям збирати та аналізувати великі обсяги даних, що може допомогти виявляти тенденції та прогнозувати ризики. Наприклад, Hadoop може використовуватися в банківській сфері для аналізу фінансових транзакцій, у медицині для аналізу медичних записів, а також у багатьох інших галузях.


  1. Методи і техніка анализу великих даних



• MapReduce — модель розподілених обчислювань у комп’ютерних кластерах, представлена компанією Google. Згідно з цією моделлю, додаток розділяється на значну кількість однакових елементарних завдань, що виконуються на вузлах кластера і потім, природнім шляхом зводяться у кінцевий результат.

• NoSQL (від англ. Not Only SQL, не лише SQL) — загальний термін для різних нереляційних баз даних і сховищ, не означає якусь конкретну технологію чи продукт. Звичайні реляційні бази даних добре підходять для досить швидких і однотипних запитів, а на складних і гнучко побудованих запитах, характерних для великих даних, навантаження перевищує розумні межі і використання СУБД стає неефективним.

• Hadoop — набор утилітів, бібліотек і фреймворків, що вільно розповсюджується, для розробки і виконання розподілених програм, які працюють на кластерах із сотень і тисяч вузлів. Вважається однією з основоположних технологій більшості даних.

• R — мова програмування для статистичної обробки даних і роботи з графікою. Широко використовується для аналізу даних і фактично став стандартом для статистичних програм.

• Апаратні рішення. Корпорації Teradata, EMC та ін. др. пропонують апаратно-програмні комплекси, призначені для обробки великих даних. Ці комплекси поставляються як готові до установки телекомунікаційні шафи, що містять кластер серверів і керівне програмне забезпечення для масово-паралельної обробки. Сюди іноді відносять апаратні рішення для аналітичної обробки в оперативній пам’яті, зокрема, апаратно-програмні комплекси Hana компанії SAP і комплекс Exalytics компанії Oracle, незважаючи на те, що така обробка початково не є масово-паралельною, а об’єми оперативної пам’яті одного вузлаобмежуються кількома терабайтами6.

Консалтингова компанія McKinsey, окрім технологій NoSQL, MapReduce, Hadoop, R, які розглядає більшість аналітиків, включає у контекст придатності для обробки великих даних також технології Business Intelligence і реляційні системи управління базами даних з підтримкою мови SQL.

Методи і техніка анализу великих даних

Міжнародна консалтингова компанія McKinsey, що спеціалізується на розв’язанні задач, пов’язаних зі стратегічним управлінням, виділяє 11 методів і технік аналізу, що застосовуються до великих даних.

• Методи классу Data Mining (видобуток даних, інтелектуальний аналіз даних, глибинний аналіз данних) — сукупність методів виявлення у даних раніше невідомих, нетривіальних, практично корисних знань, необхідних для прийняття рішень. До таких методів, зокрема, належать: навчання асоціативним правилам (association rule learning), класифікація (разгалуження на категорії), кластерний аналіз, регресійний аналіз, виявлення і аналіз відхилень тощо.

• Краудсорсинг — класифікація і збагачення даних силами широкого, неозначеного кола особистостей, що виконують цю роботу без вступу у трудові стосунки.

• Змішання та інтеграція даних (data fusion and integration) — набір технік, що дозволяють інтегрувати різнорідні дані з розмаїття джерел з метою проведення глибинного аналізу (наприклад, цифрова обробка сигналів, обробка природньої мови, включно з тональним аналізом).

• Машинне навчання, включаючи навчання з учителем і без учителя – використання моделей, побудованих на базі статистичного аналізучи машинного навчання для отримання комплексних прогнозів на основі базових моделей.

• Штучні нейронні мережі, мережевий аналіз, оптимізація, у тому числі генетичні алгоритми (genetic algorithm — евристичні алгоритми пошуку, що використовуються для розв’язання задач оптимізації і моделювання шляхом випадкового підбору, комбінування і варіації потрібних параметрів з використанням механізмів, аналогічних натуральному відбору у природі)

• Розпізнавання образів

• Прогнозна аналітика

• Імітаційне моделювання (simulation) — метод, що дозволяє будувати моделі, що описують процеси так, як вони би проходили у дійсності. Імітаційне моделювання модна розглядати як різновид експериментальних випробувань.

• Просторовий аналіз (spatial analysis) — клас методів, що використовують топологічну, геометричну і географічну інформацію, що вилучається із даних.

• Статистичний аналіз — аналіз часових рядів, A/B-тестування (A/B testing, split testing — метод маркетингового дослідження; при його використанні контрольна група елементів порівнюється із набором тестових груп, у яких один чи кілька показників були змінені, щоб з’ясувати, які зі змін покращують цільовий показник.

• Візуалізація аналітичних даних — подання інформації у вигляді малюнків, діаграм, з використанням інтерактивних можливостей і анімації, як для отримання результатів, так і для використання у якості вихідних даних для подальшого аналізу. Дуже важливий етап аналізу великих даних, що дозволяє показати найважливіші результати аналізу у найбільш зручному для сприйняття вигляді .

Великі дані у промисловості

Згідно звіту компанії McKinsey «Global Institute, Big data: The next frontier for innovation, competition, and productivity», дані стали таким само важливим фактором виробництва, як трудові ресурси чи виробничі активи. За рахунок використання великих даних, компанії можуть отримувати відчутні конкурентні переваги. Технології Big Data можуть бути корисними при вирішенні наступних задач:

• прогнозування ринкової ситуації

• маркетинг і оптимізація продажів

• вдосконалення продукції

• ухвалення управлінських рішень

• підвищення продуктивності праці

• ефективна логістика

• моніторинг стану основних фондів



  1. Дайте визначення MapReduce

MapReduce - це програмний фреймворк, розроблений компанією Google, для обробки великих обсягів даних. Його основна ідея полягає в тому, щоб розділити великий обсяг даних на менші частини та розподілити їх для обробки на різних вузлах кластера. Фреймворк MapReduce включає дві основні фази: Map та Reduce.

У фазі Map дані розбиваються на пари ключ-значення та передаються на обробку до вузлів кластера. На кожному вузлі виконуються відповідні операції над даними, а результати виходять у вигляді пар ключ-значення.

У фазі Reduce дані збираються з різних вузлів та об'єднуються за ключем. Результати обробки з фази Map групуються за ключем та обробляються відповідно до логіки, визначеної розробником. Результати фази Reduce можуть бути використані для подальшої обробки або збережені в базі даних.

Фреймворк MapReduce є потужним інструментом для обробки великих обсягів даних, оскільки він дозволяє ефективно розподіляти обчислення між різними вузлами кластера та швидко обробляти великі обсяги даних, що не можуть бути оброблені за допомогою традиційних методів обробки даних.

Перевагою MapReduce є те, що він дозволяє розподілено виконувати операції попередньої обробки і згортання. Операції попереднього обробки працюють незалежно одна від одної і можуть виконуватися паралельно Аналогічно, множина робочих вузлів може виконувати згортання – для цього необхідно щоб всі результати попереднього обробки з одним конкретним значенням ключа оброблялись одним робочим вузлом в певний момент часу .



  1. Дайте визначення Apache Spark

Apache Spark - це відкрите програмне забезпечення для розподілених обчислень, що дозволяє обробляти великі обсяги даних у реальному часі. Spark підтримує різні мови програмування, включаючи Scala, Java, Python та R, та має багато бібліотек для обробки даних, машинного навчання та глибинного навчання. В основі Spark лежить концепція Resilient Distributed Datasets (RDD), яка дозволяє обробляти дані в розподіленому середовищі та зберігати їх у пам'яті, що робить обчислення більш ефективними. Spark також підтримує інші концепції, такі як DataFrames та Dataset, що дозволяють працювати з даними у вигляді структурованих таблиць. Spark є однією з найпопулярніших платформ для обробки великих даних та широко використовується у бізнесі та наукових дослідженнях.Spark може використовуватися як у типових сценаріях оброблення даних, схожих на MapReduce, так і для реалізації специфічних методів, таких як потокове оброблення, SQL, інтерактивні та аналітичні запити, рішення задач машинного навчання і робота з графами. Програми для оброблення даних можуть створюватися на мовах Scala, Java, Python та R.



  1. Архітектура розподіленого додатку Spark. Ком’ютерний кластер. Вузол

Spark - це розподілена обчислювальна система, яка забезпечує високопродуктивну обробку даних на комп'ютерному кластері. Розподілений додаток Spark складається з кількох компонентів, включаючи майстер-вузол (Master Node), вузли-робітники (Worker Nodes), диспетчер задач (Task Scheduler) і сховище даних (Data Store).

Spark має модульну архітектуру, що дозволяє розширювати його можливості за допомогою додаткових компонентів, таких як бібліотеки машинного навчання, графові обчислення, обробка стрімів даних тощо. Spark може працювати з різними джерелами даних, включаючи локальні файли, бази даних, Hadoop HDFS, Apache Cassandra та інші.

Щодо розподілування завдань між вузлами-робітниками, Spark використовує модель обчислень на основі Resilient Distributed Dataset (RDD), яка дозволяє зберігати дані в пам'яті та автоматично відновлювати їх в разі виникнення помилок на вузлах-робітниках.

Spark також має вбудований інструмент моніторингу та управління кластером, який називається Spark Monitoring and Instrumentation API (Spark MLI). З його допомогою можна відслідковувати стан кластера та переглядати метрики продуктивності.

Узагальнюючи, Spark є потужним рішенням для розподіленої обробки даних, яке використовує модульну архітектуру та забезпечує високу продуктивність та масштабованість при обробці великих обсягів даних на комп'ютерному кластері.

Комп'ютерний кластер - це група комп'ютерів, які працюють разом як один об'єднаний комп'ютер. У Spark кожен комп'ютер у кластері виконує роль вузла-робітника, де обробка даних відбувається паралельно на різних вузлах, що дозволяє швидше обробляти великі обсяги даних.

Майстер-вузол - це вузол, який відповідає за координацію та контроль вузлів-робітників в кластері. Майстер-вузол відповідає за розподіл завдань між вузлами-робітниками, виконання і перезапуск завдань в разі помилок та надає інтерфейс для взаємодії з користувачем.

Вузол-робітник - це вузол, який виконує обчислення та обробку даних. Вузол-робітник отримує завдання від майстра-вузла, виконує їх і повертає результат майстру-вузлу.

Диспетчер задач - це компонент Spark, який відповідає за планування та розподіл завдань між вузлами-робітниками. Він забезпечує ефективне використання ресурсів кластера та розподіл завдань між вузлами-робітниками, що дозволяє досягти високої продуктивності при обробці даних.


  1. Основні концепції Spark. RDD та граф перетворень

Apache Spark - це система обробки та аналізу великих обсягів даних, яка пропонує широкий спектр інструментів для розподіленої обробки даних. Spark працює з концепцією RDD та графу перетворень для розподіленої обробки даних.

RDD (Resilient Distributed Dataset) - це фундаментальна концепція Spark, яка дозволяє зберігати та обробляти дані в пам'яті на різних вузлах в комп'ютерному кластері. RDD є імутабельним та розподіленим набором елементів, що можуть бути оброблені паралельно. RDD може бути створений з даних, які зберігаються локально на диску, в Hadoop HDFS або в базі даних. RDD підтримує операції мапування, фільтрування, зведення та інші операції, які дозволяють зручно обробляти великі обсяги даних.

Граф перетворень (Transformation Graph) - це концепція Spark, яка описує послідовність перетворень RDD, що виконуються над вхідними даними, щоб отримати кінцевий результат. Граф перетворень є направленим графом, де вузли представляють RDD, а ребра - операції перетворення. Кожна операція перетворення створює новий RDD, який стає вхідним для наступної операції. Граф перетворень дозволяє Spark оптимізувати послідовність операцій та мінімізувати взаємодію між вузлами кластера.
Крім того, Spark має декілька інших ключових концепцій, таких як:

  • Актори та стріми - дозволяють реалізувати паралельну обробку стрімів даних та асинхронні операції.

  • MLlib - бібліотека машинного навчання, що вбудована в Spark.

  • Spark SQL - модуль, що дозволяє працювати зі структурованими даними та виконувати SQL запити.

  • Spark Streaming - модуль, який дозволяє обробляти стріми даних в режимі реального часу.

  • GraphX - бібліотека для обробки графів та мереж.

  • SparkR - інтерфейс для роботи з Spark у середовищі R.

Усі ці концепції дозволяють Spark бути потужною та гнучкою системою для розподіленої обробки даних та аналізу великих обсягів даних.


  1. Основні етапи обробки даних

Обробка даних - це процес перетворення необроблених даних в корисну інформацію. Основні етапи обробки даних включають:

  • Збір даних - перший етап обробки даних, який включає збір необроблених даних з різних джерел, таких як датчики, бази даних, файли, веб-сторінки тощо. Важливо використовувати ефективні методи збору даних та забезпечити якість даних на цьому етапі.

  • Очищення даних - на другому етапі обробки даних проводиться очищення даних від помилок, дублікатів, неповних або некоректних даних. Цей етап може включати стандартизацію даних та перетворення форматів даних.

  • Підготовка даних - на третьому етапі проводиться підготовка даних для аналізу та моделювання. Це може включати створення нових змінних, розширення даних з внешніх джерел, агрегацію та групування даних.

  • Аналіз даних - на цьому етапі проводиться аналіз даних з використанням різних методів та технік, таких як статистичний аналіз, машинне навчання, глибинне навчання тощо. Метою аналізу даних є отримання нових знань та інсайтів з даних.

  • Візуалізація даних - на останньому етапі обробки даних проводиться візуалізація отриманих результатів. Це дозволяє дослідникам та аналітикам даних легко сприймати інформацію та зробити правильні висновки з даних.

Кожен етап обробки даних важливий для успішного аналізу та інтерпретації даних. Для кожного етапу можуть бути використані різні інструмент і технології, залежно від потреб дослідження та характеру даних. Наприклад, для збору та очищення даних можуть використовуватись мови програмування, такі як Python, R та SQL, а для аналізу даних можуть використовуватись спеціалізовані бібліотеки та фреймворки, такі як Pandas, NumPy, TensorFlow, PyTorch тощо. Окремої уваги заслуговує обробка великих обсягів даних, для чого використовуються розподілені системи обробки даних, такі як Apache Hadoop та Apache Spark.

В загальному, етапи обробки даних допомагають науковцям, аналітикам та бізнес-аналітикам зрозуміти та використовувати дані для прийняття обґрунтованих рішень.


  1. Загрузка даних із зовнішнього сховища

Загрузка даних з зовнішнього сховища є важливим етапом обробки даних. Зазвичай, дані можуть бути збережені у різних зовнішніх сховищах, таких як бази даних, облікові записи хмарних сервісів, файлові системи тощо. Щоб завантажити ці дані, зазвичай використовуються інструменти для роботи з даними, які можуть зчитувати дані з різних форматів файлів або протоколів передачі даних.

Одним з найпоширеніших інструментів для завантаження даних з зовнішнього сховища є Apache Hadoop. Hadoop може працювати з різними типами сховищ даних, включаючи HDFS (Hadoop Distributed File System), Amazon S3, Azure Blob Storage та Google Cloud Storage. Завантаження даних з цих сховищ зазвичай здійснюється за допомогою спеціальних інтерфейсів для роботи з даними, таких як Hadoop File System API або Amazon S3 API.

Apache Spark також має багато інструментів для завантаження даних з зовнішніх сховищ. Spark може працювати з різними форматами файлів, такими як CSV, JSON, Avro та Parquet, і може зчитувати дані з HDFS, Amazon S3, Azure Blob Storage та Google Cloud Storage. Завантаження даних з цих сховищ зазвичай здійснюється за допомогою спеціальних інтерфейсів для роботи з даними, таких як Spark SQL або Spark Streaming.

Загальним процесом завантаження даних з зовнішнього сховища є виконання запитів на зчитування даних зі сховища, отримання даних за допомогою інтерфейсів API та інші відповідні операції для забезпечення якості даних і зручності роботи з ними.

  1. Зміна розміщення даних та кількості партицій

Зміна розміщення даних та кількості партицій - це важливий аспект оптимізації розподілених обчислень в Apache Spark. Коли дані завантажені в Spark, вони розбиваються на частини, які називаються партиціями, які можуть бути оброблені незалежно одна від одної на різних вузлах кластера.

Зміна розміщення даних означає перенесення даних між різними вузлами кластера, щоб забезпечити ефективнішу обробку даних. Наприклад, якщо деякі партиції містять більше даних, ніж інші, може бути доцільніше перерозподілити дані, щоб збалансувати розміщення даних між вузлами кластера та забезпечити рівномірний розподіл завантаження між вузлами.

Крім того, зміна кількості партицій може допомогти оптимізувати розподілену обробку даних. Кількість партицій визначається при завантаженні даних в Spark, і вона може бути змінена пізніше за допомогою операцій перетворення. Якщо кількість партицій надто велика, це може призвести до зайвого витрати пам'яті та надмірного збільшення часу на обробку даних. У такому випадку може бути доцільно зменшити кількість партицій. Навпаки, якщо кількість партицій надто мала, це може призвести до недостатньої використання ресурсів та зниження продуктивності. У такому випадку може бути доцільно збільшити кількість партицій.

Зміна розміщення даних та кількості партицій може бути здійснена за допомогою операцій перетворення, таких як repartition() або coalesce(). Операція repartition() розподіляє дані між різними партиціями, тоді як coalesce() зменшує кількість партицій, переносить дані з однієї партиції до іншої.

Зміна розміщення даних та кількості партицій може значно покращити продуктивність та ефективність розподіленої обробки даних в Spark. Однак, потрібно мати на увазі, що це може бути зв'язано з певними витратами на переміщення даних між вузлами кластера, тому потрібно ретельно вивчити ситуацію та взважити, чи варто змінювати розміщення даних та кількість партицій.


  1.  Як відбувається обчислення над даними в Spark

  2.  Розгалуження та ітеративні обчислення

  3.  Shuffle механізм

  4.  Управління памяттю в Apache Spark

  5.  DataFrame API та Spark SQL. Датафрейми

  6.  Робота з DataFrame API в рамках побудови сценаріїв обробки даних на Spark

  7.  Використання функцій користувачів(UDF)

  8.  Функції користувачів агрегації в Spark

  9.  Створення, налаштування та запуск Spark проекту. Налаштування оточення

  10.  Створення нового проекту в Spark

  11.  Основи машинного навчання. Spark  Mllib

  12.  Загальні відомості про класифікацію та логістичну регресію

  13.  Створення додатку машинного навчання Apache Spark MLlib. Створення вхідного кадру даних

  14.  Створення моделі логистичної регресії

  15.  Навчання моделі логистичної регресії

  16.  Створення візуального представлення прогнозу

  17.  Обробка текстової інформації та проектування ознак засобами Spark

  18.  Для аналитики больших данных використовуються компоненти:                             MLLib – машинное обучение, GraphX – работа с графами, Spark-SQL – интерфейс, SparkStreaming – потоковая аналитика. Дайте визначення цих компонент

  19.  Мова програмування Scala. Призначення.

  20.  Алгоритм “дерево рішень”.

  21.  Застосування випадкових лісів для класифікації даних

  22.  Як працюють ансамблі. Стекінг. Беггінг. Бустінг

  23.  Алгоритми кластеризації. Задача кластеризації. Типи методів кластеризації. 

  24.  Ієрархічна кластеризація.  Застосування методів кластеризації.

  25.  Алгоритми зниження розмірності

  26.  Карти самоорганізації. Основні концепції. 

  27.  Конкурентне навчання. Архітектура. Топологія. Алгоритм навчання. Підходи до визначення відстаней. Застосування.

  28.  Створення рекомендаційних систем засобами Spark  MLlib

  29.  Перспективні напрямки розвитку програмних засобів обробки надвеликих даних і машинного навчання. 

  30.  Сучасні напрямки в машинному навчанні.  Automated machine learning. Generative Adversarial Networks. Спеціалізоване апаратне забезпечення.  Cloud Object Storage.

  31.  Програмні рішення обробки надвеликих даних в задачах машинного навчання від лідерів ринку (Amazon, Google, Facebook). Платформи для машинного навчання та роботи з надвеликими даними. Машинне навчання як сервіс. Машинне навчання на AWS. Azure Machine Learning Packages. Google Cloud ML Engine. IBM Data Science Experience. FBLearner.

  32. Назвати основні причини, за якими сервіси застосовують системи рекомендацій.

  33. Назвати суттєві. характеристики рекомендаційних систем.

  34. Навести приклади явного і неявного збору даних про користувача.

  35. Навести приклади популярних ресурсів, де спостерігається вплив рекомендаційної системи на запити користувача.

  36. На які фактори спирається система рекомендацій YouTube?

  37. Назвати цінності, які покладає на своїх користувачів Facebook.

  38. Які фактори суттєво впливають на формування стрічки новин Facebook для конкретного користувача?

  39. Назвати формати взаємодії користувача з оточенням та їх вагомість для ранжирування.

  40. За яким принципом працює алгоритм  Facebook для рекомендації друзів?

  41. Які фактори суттєво впливають на формування стрічки новин Instagram для конкретного користувача?

скачати

© Усі права захищені
написати до нас