Инструментарий специалиста по большим данным: Shark
Мы продолжаем серию статей о программных продуктах, созданных, чтобы облегчить жизнь специалиста по большим данным – и в сегодняшней статье предлагаем обзор инструмента под названием Shark , обеспечивающего работу SQL -запросов в реальном времени в кластере узлов, объединенных системой Hadoop .
Что такое Shark?
Главный козырь Apache Hadoop – пакетная обработка данных, однако технология MapReduce не слишком приспособлена для интерактивных запросов SQL . Именно поэтому чаще всего запросы к данным в реальном времени осуществляются посредством пользовательских программ, обеспечивающих соединение кластера Hadoop с БД, работающей в рамках массово-параллельной архитектуры ( MPP ).
На практике это означает существование двух отдельных кластеров – и, соответственно, необходимость разработки программ-коннекторов между ними. Такая ситуация послужила толчком к появлению систем, обеспечивающих возможность быстрого доступа к БД напрямую из кластера Hadoop путем написания SQL -запросов. Естественно, коннекторы между Hadoop и быстрыми кластерами, работающими на MPP , никуда не денутся, но интерес к продуктам, которые позволяют перенести возможность создания интерактивных SQL -запросов в системы, существующие в рамках экосистемы Hadoop , стремительно растет.
Shark – один из важнейших инструментов для работы с SQL -запросами этого поколения. Как часть распределенной системы Spark , обеспечивающей анализ данных в оперативной памяти, Shark способен работать в одном кластере с Hadoop – более того, он полностью совместим с инструментом доступа к КХД Hive и поддерживает язык HiveQL , форматы данных Hive , а также пользовательские функции.
Чем Shark отличается от Hive?
Чем же эта новая «фишка» отличается от «коренного обитателя» экосистемы Apache Hadoop Hive ? Создатели Shark уверяют, что, согласно экспериментальным данным, их продукт способен выполнять широкий круг запросов гораздо быстрее. Что значит «гораздо»? Судите сами: Shark на диске обеспечивает скорость запросов, примерно в 5-10 раз превышающую аналогичный показатель у Hive , а при работе в оперативной памяти Shark работает уже примерно в 100 раз быстрее. Ощутимая разница, не правда ли?
Скорость работы – далеко не единственная положительная особенность Shark. Разработчикам удалось добиться высокого уровня масштабируемости и одновременно впечатляющей отказоустойчивости, при этом не обделив свое детище такими мощными функциями как совместное секционирование данных ( co — partition ) и внедрение машинного обучения в поток работ аналитика.
Преимущества Shark
Предлагаем кратко рассмотреть эти и другие преимущества Shark .
- Контроль над секционированием данных = Быстрое, распределенное использование оператора JOIN . Shark позволяет пользователям секционировать данные, используя определенный ключ. В частности, если требуется часто соединять таблицы, их можно секционировать с использованием общего ключа ( join -ключа). Этот прием носит название совместного секционирования и используется для того, чтобы существенно повысить скорость работы оператора JOIN при работе с большими таблицами.
- Отказоустойчивость. Shark быстро восстанавливается после отказа узла, продолжая работу с запросами после реконструкции утерянных секций данных. Подобные проблемы не слишком влияют на производительность Shark – в любом случае, это гораздо быстрее, чем выполнять запрос заново.
- «Оптимизация» SQL . Shark включает в себя простой оптимизатор ( PDE ), который использует статистические данные (например, приблизительные гистограммы) для динамического изменения запроса при необходимости.
- Поддержка машинного обучения. Фундаментальный объект данных в Spark – так называемый распределенный эластичный набор данных ( RDD ), который может храниться в кэше оперативной памяти узлов кластера. В рамках Spark можно не только создавать такие объекты, но и применять к ним функции машинного обучения на языках Scala и Java , а в скором времени и Python . Самое приятное во всей этой истории – скорость даже таких сложных вычислений в рамках Spark в 100 раз выше, чем у собственных инструментов Hadoop .
С ростом объемов данных и, как следствие, популярности распределенных вычислений и наиболее приспособленного для подобных задач Apache Hadoop , встал вопрос увеличения скорости и уровня отказоустойчивости SQL -запросов, желательно при помощи инструмента, способного работать в рамках единственного кластера. Ответ явился в виде Shark – распределенного инструмента для быстрой работы с SQL , обладающего целым «букетом» полезных функций, таких как поддержка машинного обучения.
В следующих материалах мы расскажем о других программных продуктах для работы с большими данными – на очереди обзоры по Spark , Kafka , Caffe и другим полезным «помощникам» специалиста по большим данным.
Автор: Елизавета Филиппова
Руководство по использованию Wireshark
Системные администраторы используют массу программ для анализа трафика и поиска причин сбоев. Одной из самых популярных утилит для анализа сетевого трафика является Wireshark. Возможности программы безграничны – от захвата пакетов, передаваемых в сети, до извлечения отдельных файлов для их изучения и проверки.
Поговорим об этой программе подробнее.
Назначение программы Wireshark
Программный продукт Wireshark перехватывает входящие и исходящие TCP-пакеты. И благодаря встроенным функциям мониторит содержимое, ищет ошибки. Заметно упрощает использование программы система фильтров, а также простой и логичный графический интерфейс на фреймворке GTK+ с поддержкой открытого API (внешне окна похожи на Windows).
- Кроссплатформенность – выпускаются версии под Linux, Windows, macOS.
- Бесплатность – распространяется под лицензией GNU GPL v2.
- Простота – инсталляция заключается в нескольких нажатиях кнопки «Next».
Изначально разработчики назвали проект Ethereal, и предназначался он исключительно для Ethernet-сетей. В 2006 году из-за проблем с торговой маркой произошло переименование. По функционалу программа схожа с tcpdump, но получила большую популярность за счет интерфейса и богатых возможностей сортировки и фильтрации.
Комьюнити теперь в Телеграм
Подпишитесь и будьте в курсе последних IT-новостей
Основные возможности Wireshark
Сетевой трафик преобразуется буквально «на лету». В программу «заложена» структура различных протоколов, поэтому пользователь работает с перехватываемым информационным потоком. Единственное ограничение заключается в списке поддерживаемых стандартов – он ограничивается возможностями библиотеки pcap. Правда, функционал легко расширяется скриптами на языке Lua.
Востребованные функции сетевого анализатора Wireshark:
- Захват пакетов в реальном времени или при чтении из файла.
- Поддержка проводного интерфейса Ethernet, беспроводных IEEE 802.11, PPP и локальных виртуальных интерфейсов.
- Отсеивание сетевых пакетов по большому количеству установленных фильтров, включая расшифровку только VoIP-звонков, HTTPS-трафика.
- Подсвечивание разных протоколов при смешанном трафике, выделение TCP, HTTP, FTP, DNS, ICMP и т.д.
- Расшифровка WEP-, WPA-трафика беспроводных сетей при наличии ключа безопасности и Handshake.
Параллельно программа фиксирует нагрузку на сеть, сохраняет статистику, отображает в реальном времени отправку и получение пакетов, но это уже второстепенные функции. Основной остается перехват трафика. Здесь нужно уточнить, что использование приложения должно согласовываться с владельцем подсети, иначе это вполне сойдет за «хакерскую атаку» с вытекающими последствиями для специалиста.
Интерфейс программы
Еще одно преимущество Wireshark – русскоязычный интерфейс. Правда, встроенная справка идет только на английском, поэтому самостоятельно разбираться в программе без знания языка придется при помощи переводчика. Или ориентироваться на наименования пунктов меню, которые также переведены на русский. Главное, понимать принцип работы программы и не бояться огромного массива данных, поступающего при сниффинге трафика.
- Файл – содержит команды для открытия, сохранения, импорта/экспорта дампов данных.
- Редактирование – изменение общих параметров программы, включая интерфейс.
- Просмотр – настройка отображения отдельных блоков, масштаб, цветовое выделение.
- Запуск – подсказка по управлению работой программы при помощи клавиш.
- Захват – старт, остановка, перезапуск сниффинга трафика указанной сети.
- Анализ – система фильтров протоколов, декодирование, проверка содержимого.
- Статистика – отчеты по перехваченному трафику, детально по каждому протоколу.
- Телефония – отдельный блок функциональных модулей для расшифровки IP-телефонии.
Также выделены опции для работы с сетями Wi-Fi и Bluetooth (пункт «Беспроводные»). Если для анализа сетевого трафика понадобилось подключение дополнительных скриптов, поддержка Lua активируется в разделе «Инструменты». Тестовый запуск перехватчика затруднений не вызывает, достаточно выбрать нужную сеть и нажать «Запуск». Процесс будет идти непрерывно до ручного закрытия программы или нажатия «Стоп».
Как пользоваться Wireshark
В большинстве случаев анализ перехваченного трафика происходит в офлайн-режиме. Сначала его сохраняют в файл (дамп) и только потом проводят исследование. Такой подход позволяет снизить риск ошибок, приводящих к потере важной информации (например, когда неправильно настроили в Wireshark встроенные фильтры или была неверно поставлена задача по перехвату). Сохраненный файл доступен для повторного анализа без ограничений.
Основные приемы:
- Поиск по пакетам. Открывается панель поиска стандартной комбинацией клавиш Ctrl+F. После активации режима доступно несколько вариантов поиска. Наиболее востребованный режим «Дисплейный фильтр», он предназначен для обнаружения пакетов, отвечающих заданному выражению. Второй интересный вариант – «Строка».
- Отметка пакетов. Все интересующие нас пакеты помечаются цветовым выделением с помощью комбинации кнопок Ctrl+M (или через пункт выпадающего меню после нажатия правой кнопки мыши «Выполнить/Отменить пометку пакета»). Перемещение между ними работает комбинациями Shift+Ctrl+N (следующий) и Shift+Ctrl+B (предыдущий).
- Фильтры. Задают критерии исключения и включения в анализируемую подборку пакетов. Чем больше анализируемый дамп, тем детальнее фильтруется информация. Это упрощает работу с потоком данных и снижает риски механических ошибок пользователя.
Проще всего изучать функционал программы в «родной» сети, будет полезно попрактиковаться в переключении режимов сетевых адаптеров. Программа поддерживает 4 разных формата: управляемый, прямого подключения, ведущий и режим мониторинга. Их выбор позволяет менять способ подключения в зависимости от типа адаптера и поставленной задачи.
В любом случае оптимально сначала опробовать все возможности и лишь затем пытаться применять утилиту по прямому назначению.
При подготовке материала использовались источники:
https://datareview.info/article/instrumentariy-spetsialista-po-bolshim-dannyim-shark/
https://timeweb.com/ru/community/articles/rukovodstvo-po-ispolzovaniyu-wireshark