Скачать 194.98 Kb.
|
Министерство образования и науки Российской Федерации Федеральное государственное бюджетное образовательное учреждение высшего профессионального образования ТОМСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ СИСТЕМ УПРАВЛЕНИЯ И РАДИОЭЛЕКТРОНИКИ (ТУСУР) Кафедра автоматизированных систем управления (АСУ) РАСПРЕДЕЛЁННЫЕ СЕРВИС-ОРИЕНТИРОВАННЫЕ СИСТЕМЫ Методические указания по практическим занятиям, самостоятельной и индивидуальной работе магистров всех форм обучения Направление 09.04.01 Информатика и вычислительная техника Магистерская программа «Программное обеспечение вычислительных машин, систем и компьютерных сетей» Томск 2016 Бойченко И.В. РАСПРЕДЕЛЁННЫЕ СЕРВИС-ОРИЕНТИРОВАННЫЕ СИСТЕМЫ. Методические указания по практическим занятиям, самостоятельной и индивидуальной работе магистров всех форм обучения для направления 09.04.01 «Информатика и вычислительная техника», магистерской программы «Программное обеспечение вычислительных машин, систем и компьютерных сетей» / И.В. Бойченко. – Томск: ТУСУР, 2016. – 36 с. Методические указания утверждены на заседании кафедры автоматизированных систем управления 12 февраля 2016 г., протокол № 5. И.В. Бойченко, 2016 СОДЕРЖАНИЕ 1 1 ВВЕДЕНИЕ 5 2 ТЕХНОЛОГИИ BIG DATA 6 3 УКАЗАНИЯ К ПРАКТИЧЕСКИМ ЗАНЯТИЯМ 7 3.1 Тема №1 Среда разработки IntelliJ IDEA. Язык Java 7 7 3.2 Тема №2 Язык Scala 8 3.3 Тема №3. Технология Apache Spark 13 3.4 Тема №4. Технология Apache Spark + R 18 3.5 Тема №5. Технологии Apache Hive, Hbase 18 4 САМОСТОЯТЕЛЬНАЯ РАБОТА 19 4.1 Установка и настройка среды IDEA, а также SDK для языков Java и Scala 19 4.2 Темы на самостоятельное изучение 35 4.3 Темы рефератов 35 5 УЧЕБНО-МЕТОДИЧЕСКОЕ И ИНФОРМАЦИОННОЕ ОБЕСПЕЧЕНИЕ ДИСЦИПЛИНЫ 36 5.1 Основная литература 36 5.2 Дополнительная литература 36 5.3 Базы данных, информационно-справочные и поисковые системы 36 6 МАТЕРИАЛЬНО-ТЕХНИЧЕСКОЕ ОБЕСПЕЧЕНИЕ ДИСЦИПЛИНЫ 36 1 1 ВВЕДЕНИЕЦель изучения дисциплины «Распределённые сервис-ориентированные системы» состоит в формировании знаний умений и навыков в области разработки и эксплуатации программного обеспечения современных высокопроизводительных распределенных систем. В данном курсе рассматриваются программные технологии построения масштабируемых многомашинных информационно-вычислительных систем, обеспечивающих параллельную обработку сверхбольших массивов данных. За рубежом совокупность таких технологий обозначается термином Big Data (англ. - большие данные). Рассматриваются также типовые методы и алгоритмы параллельной обработки сверхбольших массивов данных с использование стека технологий Big Data. Задачи изучения дисциплины Распределённые сервис-ориентированные системы»: 1) ознакомление с теоретическими основами организации параллельной распределенной обработки данных на программном уровне; 2) получение опыта практической работы с современными программными инструментами для параллельной распределенной обработки данных. Дисциплина «Распределённые сервис-ориентированные системы»» относится к обязательным дисциплинам вариативной части структуры основных профессиональных образовательных программ. Для успешного освоения данной дисциплины необходимо и достаточно знаний и умений, приобретенных студентами при изучении на предыдущем уровне образования таких дисциплин, как «Современные средства программирования», «Вычислительные системы», «Современные операционные системы». Дисциплина является базовой при проведении научно-исследовательской работы магистра, прохождении научно-исследовательской практики, подготовке магистерской диссертации. В результате изучения дисциплины студент должен знать:
уметь:
владеть:
2 ТЕХНОЛОГИИ BIG DATABig Data (англ. - большие данные) – объединяющее название стека технологий ориентированного на обработку данных, характеризующихся тремя критериями («3V»): объем (Volume), скорость (Velocity) и вариативность (Variety). Независимо от реализации, в основу технологий Big Data положены два основных принципа: 1. принцип распределенного хранения данных; 2. принцип распределенной обработки, с учетом локальности данных; Распределенное хранение решает проблему большого объема данных, позволяя организовывать хранилище из произвольного числа отдельных простых носителей, как правило, обычных жестких дисков. Хранение может быть организовано с разной степенью избыточности, обеспечивая устойчивость к сбоям отдельных носителей. Распределенная обработка с учетом локальности данных означает, что программа обработки доставляется на вычислитель, находящийся как можно ближе к обрабатываемым данным. Это принципиально отличается от традиционного подхода, когда вычислительные мощности и подсистема хранения разделены, и данные должны быть доставлены на вычислитель. Таким образом, технологии Big Data опираются на вычислительные кластеры из множества вычислителей, снабженных локальной подсистемой хранения. Доступ к данным и их обработка осуществляются специальным программным обеспечением. Наиболее известным и интенсивно развивающимся проектом в области Big Data является Apache Hadoop. Рис. 1: Стек технологий Big Data Apache (ABDS) Изначально, в проекте развивались два взаимосвязанных направления: распределенная файловая система HDFS (Hadoop Distributed File System) и система вычислений по методу Map-Reduce. К настоящему времени на базе Apache Hadoop был создан стек продуктов Big Data, получивший название Apache Big Data Stack, или сокращенно ABDS (рисунок 1). В этом стеке насчитывается более 110 проектов различного назначения. В зависимости от прикладной задачи разработчик приложения может воспользоваться продуктами прикладного уровня, или непосредственно использовать интерфейс окружения времени исполнения. Уровни коммуникаций и управления ресурсами задействуются автоматически. Курс «Сервис-ориентированные системы» ориентирован на изучение открытого программного обеспечения, входящего в стек технологий ABDS. Доступность программного обеспечения позволяет слушателям курса самостоятельно устанавливать необходимые инструменты и утилиты и экспериментировать с технологией. 3 УКАЗАНИЯ К ПРАКТИЧЕСКИМ ЗАНЯТИЯМПрактические занятия проходят в компьютерных классах с предустановленным программным обеспечением: 1. Oracle Java SDK 1.8 2. Scala SDK 2.11.7 3. IntelliJ IDEA 15.0.3 Community Edition Работа с продуктами стека ABDS планируется на удаленном сервере под ОС Linux с предустановленным ПО: 4. Apache Hadoop 5. Apache Spark 6 Apache R 7. Apache Hive 8. Apache Hbase 9. Apache Tomcat (или Eclipse Jetty) В ходе практических занятий планируется освоение языков программирования Java и Scala, являющихся основными в стеке ABDS. Затем, планируется освоение инструментальных сред и библиотек, реализующих обработку данных в парадигме Big Data. 3.1 Тема №1 Среда разработки IntelliJ IDEA. Язык Java 7Цель: ознакомление с современной широко распространенной средой разработки IntelliJ IDEA, а также освоение базовых принципов программирования на языке Java 1.7. Вопросы, подлежащие рассмотрению: 1. Организация проекта на языке Java в среде IntelliJ IDEA 2. Запуск и исследование примеров, входящих в курс по языку Java 1.7 3. Выполнение заданий, входящих в курс по языку Java 1.7 Планируется, что получив навыки работы со средой IDEA и языком Java студенты смогут самостоятельно к следующему практическому занятию выполнить все задания курса по Java, выданные на этом практическом занятии. После освоения Java 1.7 на следующих практических занятиях планируется переход к новым функциям в языке Java 1.8, а также к языку Scala. Рекомендуемая литература:
3.2 Тема №2 Язык ScalaЦель: ознакомление с синтаксисом и основными возможностями языка Scala. Освоение инструментального программного обеспечения. Вопросы подлежащие рассмотрению: 1. Работа в интерактивной среде Scala в ОС Windows 2. Организация работы в среде IDEA на языке Scala 3. Решение задач на освоение синтаксиса и базовых возможностей языка Scala Рекомендуемая литература: 1. Scala для нетерпеливых / Хорстман К. - М: ДМК Пресс, 2013. - 408с.: ил. 3.2.1 Занятие 1 «Настройка интерактивного режима Scala в ОС Windows»Предварительно должно быть установлено ПО: IntelliJ IDEA 15.0.3 и Scala SDK 2.7.11. Руководство по установке данных продуктов дано в разделе 3.1. Настройка интерактивного режима Scala в ОС Windows. Исходя из опыта эксплуатации языка Java и Python стало очевидно, что возможность работы в интерактивном режиме (REPL – Run Edit Print Loop – англ. Цикл повторяющихся действий в интерактивном режиме «Запуск-редактирование-печать») является очень нужным инструментом в арсенале разработчика. И так как далее планируется освоение Apache Spark, в котором реализован интерактивный режим для языков Scala и Python, то освоение этого режима является необходимым в данном курсе. Чтобы интерактивную строку можно было использовать необходимо добавить путь до утилиты. Предположим Scala SDK установлена в каталог: C:\Program Files (x86)\scala
scala Если все установлено и прописано верно, появится интерактивная строка Scala Или в текстовом виде: Welcome to Scala version 2.11.7 (Java HotSpot(TM) 64-Bit Server VM, Java 1.7.0_71). Type in expressions to have them evaluated. Type :help for more information. scala>
C:\Users\saturn>scala "scala" не является внутренней или внешней командой, исполняемой программой или пакетным файлом.
Запуск интерактивного режима Scala в среде IntelliJ IDEA Выполните действия по созданию нового проекта Scala В среде IDEA как это указано в разделе 3.1, включая создание объекта HelloWorld. Итак, у нас есть проект с одним объектом Scala:
Интерактивная строка очень удобна для изучения языка и апробации работы небольших фрагментов кода. Режим Scala в Windows позволяет работать независимо от среды разработки, потребляет меньше памяти и работает немного быстрее. Но режим Scala в среде IDEA позволяет быстро копировать и исполнять части кода между редактором и интерактивной строкой. Например, в редакторе можно выделить код объекта HelloWorld и в контекстном меню появится пункт Send Selection To Scala Console (если консоль была до этого уже запущена). В этом случае код из редактора будет скопирован в консоль Scala и им можно оперировать в дальнейших командах. Далее, приступаем к изучению синтаксиса языка Scala. Изучение синтаксиса осуществляется по источнику: Scala для нетерпеливых / Хорстман К. - М: ДМК Пресс, 2013. - 408с. На первом занятии требуется выполнить упражнения данные в конце глав 1-4. Главы 5-12 даются на самостоятельное изучение к следующему занятию. 3.3 Тема №3. Технология Apache SparkЦель: ознакомление с технологией Apache Spark, овладение программным обеспечение обработки данных в системе Spark на языке Scala Вопросы подлежащие рассмотрению: 1. Конфигурирование и системные утилиты Apache Spark, взаимодействие с классическими и распределенными файловыми системами 2. Запуск примеров программ в системе Spark на языке Java и Scala. 3. Разработка собственной программы на языках Java и Scala для Apache Spark Рекомендуемая литература: 1. Изучаем Spark / Захария М., Венделл П., Конвински Э., Карау Х. - Москва: ДМК-Пресс, 2015. - 400с. 3.3.1 Занятие 1. Настройка и запуск программ для фреймворка SparkПлан На данном занятии необходимо освоить настройку фреймворка Spark и 3 способа запуска программ для фреймворка Spark:
Затем необходимо написать программы для Spark на языке Scala, решающие следующие задачи (обязательно, алгоритм должен быть основан на использовании операций с RDD): 1. На основе заданного текста в файле составить словарь — то есть список всех уникальных слов, используемых в тексте в алфавитном порядке. Знаки препинания игнорировать. 2. На основе заданного текста подсчитать вхождение каждого слова. То есть словарь в котором для каждого слова указывается сколько раз оно входит в текст. 3. Даны два разных текста. Сформировать 3 множества: пересечение словарей заданных текстов, множество слов, входящих только в первый текст, множество слов, входящих только во второй текст. 4. Дана матрица чисел. Проверить является ли матрица симметричной относительно главной диагонали. 5. Написать программу перемножения двух матриц. 6. Дана матрица a. Сформировать новую матрицу где каждый элемент aij заменен на значение выражения aij = ai+2,j + ai-2,j + ai,j+2 + ai,j-2 + 4ai,j Запуск из среды IDEA В системе должна быть установлена среда IDEA, плагин для Scala и Scala SDK как это описано в разделе 3.1. 1) скопируйте с общего диска каталог проекта: < общая сетевая папка>\hpds-2016\code\spark-grep 2) импортируйте проект в среду IDEA, подтвердите все настройки по умолчанию 3) в открывшемся окне щелкните правой кнопкой по каталогу src и в выпадающем меню выберите Mark Directory as → Source Root 4) Откройте класс SparkGrep находящийся в src. При этом среда попросит указать местоположение Scala SDK (аналогично разделу 3.1). 5) Запустите программу из SparkGrep через меню Run Программа вернет диагностическое сообщение: Usage: SparkGrep Н еобходимо сообщить параметры программе хост, входной текстовый файл и слово, количество вхождений которого нужно подсчитать. 6) Это можно сделать в диалоге Run/Debug Configurations 7) Запустите программу повторно. Помимо логов программа вернет результат работы: 5 lines in src/main/scala/spark/example/SparkGrep.scala contain val ok В данном файле найдено 5 вхождений слова val Проанализируем лог программы. Во-первых, встречается исключение: ERROR Shell: Failed to locate the winutils binary in the hadoop binary path java.io.IOException: Could not locate executable null\bin\winutils.exe in the Hadoop binaries. Во-вторых, в логах можно увидеть сообщение INFO SparkUI: Started SparkUI at http://192.168.0.25:4041 Чтобы решить проблему с исключением (это потребуется на следующих шагах) нужно скопировать с общей папки каталог hadoop <общая сетевая папка>\dist\hadoop\ Затем, выполнить в командной строке команду d:\hadoop\bin\winutils.exe chmod 777 /tmp/hive Затем, в каталоге Run/Debug Configurations прописать переменную окружения HADOOP_HOME П ри повторном запуске программы исключение не должно возникать. Что касается второго замечания о http://192.168.0.25:4041. То, здесь удобно продемонстрировать что при запуске программы на spark автоматически запускается веб-сервер на котором можно увидеть, сколько рабочих процессов запущено для текущей задачи. В программу встроена задержка на 30 секунд. Это позволяет во время работы программы, вставить в строку браузера адрес http://192.168.0.25:4041 и увидеть страницу: Запуск с помощью скрипта spark-submit 1. Разархивируйте архив с общего каталога spark-1.6.0-bin-hadoop2.6.tgz на локальный диск. 2. В среде IDEA упакуйте программу в виде jar с помощью инструмента Maven (на рисунке справа) В результате в подкаталоге проекта target появится файл с расширением jar Запустите командную строку Windows и выполните команду spark-submit без аргументов. Прочитайте хелп и в соответствии с описанием опции --class осуществите запуск программы. Для успешного выполнения программы необходимо прописать переменную окружения HADOOP_HOME в Windows Добейтесь результата аналогичного полученному в среде IDEA. Запустите другие примеры с помощью скрипта: run-example.cmd Запуск из REPL-строки дистрибутива Spark установленного на диск Дальнейшее изучение Spark удобно осуществлять в REPL строке, запускаемой утилитой: spark-shell.cmd Работа с этой строкой аналогична REPL-строке Scala. 3.4 Тема №4. Технология Apache Spark + RЦель: ознакомление с языком анализа данных R, овладение программным обеспечением анализа данных в системе Spark на языке R Вопросы подлежащие рассмотрению: 1. Интерактивная среда на языке R в системе Apache Spark 2. Запуск примеров программ в системе Spark на языке R. Измерение производительности 3. Разработка собственной программы на языке R для Apache Spark Рекомендуемая литература: 1. Шипунов А.Б., Балдин Е.М. [Электронный ресурс] – режим доступа: http://www.inp.nsk.su/~baldin/DataAnalysis/index.html — свободный 3.5 Тема №5. Технологии Apache Hive, HbaseЦель: ознакомление с реляционными и не-реляционными технологиями хранения данных Apache Hive и HBase, овладение программным обеспечением создания, поиска и изменения данных в системах Hive и HBase Вопросы подлежащие рассмотрению: 1) Запуск примеров программ для Apache HBase. Измерение производительности 2) Запуск примеров программ для Apache Hive. Измерение производительности 3) Разработка собственных программ на языке Java для Apache Hive и HBase Рекомендуемая литература:
4 САМОСТОЯТЕЛЬНАЯ РАБОТА4.1 Установка и настройка среды IDEA, а также SDK для языков Java и ScalaЗагрузка установочных комплектов производится с сайтов: 1. http://java.oracle.com – Java SDK 1.8 (иногда называется JDK) 2. http://www.scala-lang.org/download/ - Scala SDK 2.11.7 3. https://www.jetbrains.com/idea/ - IntelliJ IDEA Community Edition 15.0.3 Первым действиям устанавливаем JDK 8 с сайта Oracle согласно инструкциям установочного комплекта. В результате на диске появится каталог: C:\Program Files\Java\jdk1.8.0_80 Далее запускаем программу установки Idea 15.0.3 install Ставим флажки После установки запускаем IDEA Выбираем светлую сторону (тема слева) Кликаем Skip All and Set Default О кно выбора проекта Кликаем внизу справа Configure → Plugins Окно плагинов Набираем в окошке поиска - Scala. В появившейся надписи кликаем Browse Окно просмотра плагинов после клика Browse Выбираем нижний Scala (custom languages) Выбор языка Scala Кликаем Install справа Запускается скачивание плагина После скачивания слева появится Restart IntelliJ IDEA Кликаем Restart и подтверждаем Теперь устанавливаем Scala SDK http://www.scala-lang.org/download/2.11.7.html Загрузить и установить Ничего выбирать не нужно. После рестарта проверяем поставилась ли Scala. Выбираем Create New Project. Слева в списке должен быть проект типа Scala Справа чистый Scala проект (вверху) Нажимаем кнопку « Next». Здесь выбираем местоположение проекта и обязательно Project SDK и Scala SDK. Project SDK это куда установлена JDK Например: C:\Program Files\Java\jdk1.8.0_80 Scala SDK - куда установлена Scala. Например: C:\Program Files (x86)\scala Нажимаем кнопку «Finish». Среда думает, индексирует, и потом открывается проект. Теперь создать в проекте HelloWorld класс и запустить его. Правой кнопкой на src в структуре проекта слева → New → Scala class Вводим имя класса Появляется класс Вставляем код: object HelloWorld { def main(args: Array[String]): Unit = { println("Hello, world!") } } Теперь запускаем: Правой кнопкой по классу Run HelloWorld После компиляции в консоли внизу выведется искомая строка Далее, желательно выдать среде побольше памяти, а то сама она не догадается. 1. Закрыть среду 2. Найти файл C:\Program Files (x86)\JetBrains\IntelliJ IDEA Community Edition 15.0.3\bin\idea.exe.vmoptions 3. Найти в нем строку: -Xmx512m 4. Дать сколько не жалко, хотябы 1Гб, но можно и больше: -Xmx1024m 5. Сохранить, запустить среду, будет пошустрее 4.2 Темы на самостоятельное изучениеТемы, выносимые на самостоятельное изучение
4.3 Темы рефератов1. Система Hive 2. Система Impala 3. Система Shark 4. Система Phoenix 5. Сравнение технологий MapReduce: Hadoop и Twister 6. Среда R 7. Система Mahout 8. Система MLBase 9. Файловая система MapR 10. Системы планирования задач 11. Система YARN 12. Система Mesos 5 УЧЕБНО-МЕТОДИЧЕСКОЕ И ИНФОРМАЦИОННОЕ ОБЕСПЕЧЕНИЕ ДИСЦИПЛИНЫ5.1 Основная литература
5.2 Дополнительная литература
1. www.compress.ru – Журнал «КомпьютерПресс» 2. www.osp.ru – Издательство «Открытые системы» 3. www.cnews.ru – Издание о высоких технологиях 4. www.it-daily.ru – Новости российского ИТ-рынка 5. www.isn.ru – Российская сеть информационного общества Лекции осуществляются в специализированной аудитории с проектором, экраном, на который слайды демонстрации проецируются. |
Методические указания по практическим занятиям и самостоятельной... Миронова Е. А. Договорная работа: Методические указания по практическим занятиям и самостоятельной работе для направления подготовки... | Методические указания по самостоятельной и индивидуальной работе... Имитационное моделирование экономических процессов: методические указания по самостоятельной и индивидуальной работе студентов всех... | ||
Методические указания по самостоятельной и индивидуальной работе... Федеральное государственное бюджетное образовательное учреждение высшего профессионального образования | Методические указания по самостоятельной и индивидуальной работе... Федеральное государственное бюджетное образовательное учреждение высшего профессионального образования | ||
Методические указания по самостоятельной и индивидуальной работе... Федеральное государственное бюджетное образовательное учреждение высшего профессионального образования | Методические указания по самостоятельной и индивидуальной работе... Федеральное государственное бюджетное образовательное учреждение высшего профессионального образования | ||
Методические указания по самостоятельной и индивидуальной работе... Федеральное государственное бюджетное образовательное учреждение высшего профессионального образования | Методические указания по самостоятельной и индивидуальной работе... Федеральное государственное бюджетное образовательное учреждение высшего профессионального образования | ||
Методические указания по самостоятельной и индивидуальной работе... Федеральное государственное бюджетное образовательное учреждение высшего профессионального образования | Методические указания по самостоятельной и индивидуальной работе... Федеральное государственное бюджетное образовательное учреждение высшего профессионального образования | ||
Методические указания по самостоятельной и индивидуальной работе... Федеральное государственное бюджетное образовательное учреждение высшего профессионального образования | Методические указания по самостоятельной и индивидуальной работе... Федеральное государственное бюджетное образовательное учреждение высшего профессионального образования | ||
Методические указания и задания к практическим занятиям и самостоятельной... Методические указания и задания к практическим занятиям и самостоятельной работе для студентов направления 030900. 62 Юриспруденция... | Методические указания для подготовки к практическим занятиям (семинарам)... Методические указания для подготовки к практическим занятиям (семинарам) и самостоятельной работе | ||
Методические указания к самостоятельной работе студентов по изучению... Методические указания по курсу «Политология» подготовлены в соответствии с Государственным образовательным стандартом, Законом Российской... | Методические указания к практическим занятиям и самостоятельной работе Федеральное государственное бюджетное образовательное учреждение высшего профессионального образования |