Статьи

Spring XD 1.0 Milestone 2 выпущен

Этот пост был изначально написан в блоге SpringSource Марком Поллаком 

Сегодня мы рады объявить о выпуске версии 1.0 M2 Spring XD ( загрузить ) Spring XD — это унифицированная, распределенная и расширяемая система для приема данных, анализа в реальном времени, пакетной обработки и экспорта данных. Цель проекта — упростить разработку приложений для больших данных.

Во втором выпуске Spring XD появилось несколько новых функций, которые позволяют еще проще принимать и обрабатывать потоки данных в реальном времени, а также организовывать пакетные задания на основе Hadoop. В этом посте мы расскажем

  • Оболочка
  • Новые источники, раковины и транспорт
  • Улучшения DSL
  • Пакетные работы

ОБОЛОЧКА

Наиболее заметной новой функцией является введение интерактивной оболочки. Оболочка предоставляет вам простой способ создания новых потоков и заданий, просмотра метрик, взаимодействия с Hadoop и многого другого. В качестве введения в оболочку я приведу некоторые примеры из поста в блоге M1 .

Запустите Spring XD в одноузловом режиме ($ XD_HOME / bin / xd-singlenode) и в отдельном окне запустите оболочку. В следующем примере показано, как создать простой поток, который записывает данные, размещенные по http, в файл. Обратите внимание, что оболочка предоставляет подсказки о завершении вкладок для команд.

$bin>./xd-shell
Welcome to the Spring XD shell. For assistance hit TAB or type "help".
xd:>stream create --name httpStream --definition "http | file"
xd:>tap create --name httpTap --definition "tap httpStream | counter"
xd:>http post --target http://localhost:9000 --data "helloworld"

Вы можете перечислить все потоки и касания, чтобы убедиться, что они были созданы

xd:>stream list
Stream Name  Stream Definition
-----------  -----------------
httpStream   http | file

xd:>tap list
Tap Name  Stream Name  Tap Definition
--------  -----------  ------------------------
httpTap   httpStream   tap httpStream | counter

Если вы проверите файл, расположенный в каталоге  /tmp/xd/output/httpStream.out, вы увидите сообщение hello world.

xd:>! cat /tmp/xd/output/httpStream.out

HttpTap просто считает сообщения. Чтобы увидеть имя созданного счетчика и его значение, используйте команду counter shell

xd:>counter list
Counter name
------------
httpTap

xd:>counter display --name httpTap
1

В одноузловом режиме счетчики находятся в памяти, но также имеется поддержка Redis, которая используется по умолчанию, когда не используется одноузловой режим. Вы можете включить поддержку Redis с помощью –analytics redis аргумента командной строки.

Чтобы создать поток твиттера, который хранит данные в Hadoop и счетчик частоты хештегов в твиттере в реальном времени, выполните следующие команды. Обратите внимание, чтобы получить aconsumerKey и consumerSecret, вам необходимо зарегистрировать приложение для Twitter. Если у вас его еще нет, вы можете создать приложение на сайте  разработчиков Twitter,  чтобы получить эти учетные данные.

xd:> stream create bieberStream --definition "twittersearch --consumerKey=<your-key> --consumerSecret=<your-secret> --query=bieber | hdfs"

xd:> tap create --name bieberHashTap --definition "tap bieberStream | field-value-counter --fieldName=entities.hashTags.text --counterName=bieberHashCount"

xd:> hadoop config fs --namenode hdfs://localhost:8020

xd:> hadoop fs cat /xd/bieberStream/bieberStream-0.log

... see fun tweets here ...

xd:> fieldvaluecounter display --name bieberHashCount

FieldName=bieberHashCount
-------------------------  -  -----
VALUE                      -  COUNT
mtvhottest                 |  57
MTVHottest                 |  31
MTVhottest                 |  10
mtvhottets                 |  3
MtvHottest                 |  2
MTVHott                    |  2
JustinBieber               |  2
MTVH                       |  2
MTVHOTTEST                 |  2
KCAMEXICO                  |  1
BeliebersAreProudOfJustin  |  1
MyBeliebers                |  1

 Что касается темы счетчиков, был введен новый  тип агрегированных счетчиков, который агрегирует счетчики для поля в сообщении за периоды года, месяца, дня, часа и минуты.

Всего за несколько строк команд оболочки вы достигли довольно многого! Проверьте руководство  пользователя для получения подробной информации обо всех командах оболочки.

УЛУЧШЕНИЯ DSL

Показанные конвейеры обработки потока являются линейными, но часто возникает необходимость в поддержке более сложных потоков. Чтобы начать заниматься этим делом, в M2 вводятся именованные каналы. Вместо модуля источника или приемника вы можете использовать именованный канал. В соответствии с темой unix при поиске / отправке данных с / на конкретный канал используется символ `> ‘, а перед именем ставится префикс`: `

Вот пример, который показывает, как вы можете использовать именованный канал для совместного использования конвейера данных, управляемого различными источниками ввода.

xd:>stream create out --definition ":foo > file --name=demo"
xd:>stream create in1 --definition "http > :foo"
xd:>stream create in2 --definition "time > :foo"
xd:>http post --target  http://localhost:9000 --data "hello"

Глядя на выходной файл: 

xd:>! cat /tmp/xd/output/demo.out

Вы увидите слово «привет», смешанное со значениями метки времени. Разветвление сообщения в несколько потоков, а также поддержка маршрутизации сообщений в разные потоки на основе содержимого сообщения планируется в будущем выпуске.

НОВЫЕ ИСТОЧНИКИ, МОЙКИ И ТРАНСПОРТ

Этот выпуск предоставляет несколько дополнительных модулей источника и приемника.

Также следует отметить, что мы добавили поддержку 4 версий Hadoop

  • hadoop10 — Apache Hadoop 1.0.4 (по умолчанию)
  • hadoop11 — Apache Hadoop 1.1.2 и Hortonworks Data Platform 1.3
  • hadoop20 — Apache Hadoop 2.0.5-alpha
  • Phd1 — Pivotal HD 1.0

Вы можете выбрать конкретные дистрибутивные банки, которые будут использоваться при запуске XDContainer, передав опцию командной строки  –hadoopDistribution. Вы также сможете использовать другие дистрибутивы Hadoop, например Hadoop 1.2.x. Мы будем добавлять явные опции для дополнительных дистрибутивов в последующих выпусках. Следует отметить, что есть пример, который показывает, как использовать Spring XD с функциональностью HAWQ Pivotal HD в  хранилище примеров .

Релиз M1 предоставил локальный транспорт и транспорт с поддержкой очереди Redis для связи между модулями, как представлено символом канала в DSL. Релиз M2 обеспечивает поддержку транспортов с поддержкой Rabbit, что позволяет использовать полнофункциональный брокер сообщений для потоковой передачи.

РАБОТЫ И ТРИГГЕРЫ

Пакетные задания могут выполняться с использованием Spring XD и триггеров, настроенных для запуска этих заданий. В качестве примера, мы можем повторно использовать классический пример подсчета слов в Hadoop, чтобы обеспечить простую оркестровку рабочего процесса, которая состоит из двух этапов. Первым шагом является копирование файла в HDFS, а вторым — запуск задания wordcount MapReduce.

Чтобы запустить пример,   клонируйте репозиторий spring-xd-samples и постройте образец batch-wordcount. Затем скопируйте jar, config и файл данных, как показано ниже.

$ cd batch-wordcount
$ mvn clean assembly:assembly
$ cp target/batch-wordcount-1.0.0.BUILD-SNAPSHOT-bin/modules/job/* $XD_HOME/modules/job
$ cp target/batch-wordcount-1.0.0.BUILD-SNAPSHOT-bin/lib/* $XD_HOME/lib
$ cp target/batch-wordcount-1.0.0.BUILD-SNAPSHOT-bin/nietzsche-chapter-1.txt /tmp

Теперь остановите и перезапустите Spring XD в одноузловом режиме ($ XD_HOME / bin / xd-singlenode). Затем в оболочке выполните следующую команду

xd:> job create --name wordCountJob --definition "wordcount"

В качестве альтернативы можно также указать выражение cron, которое  планирует выполнение задания  . Вы можете проверить результаты, просмотрев выходные данные с карты уменьшить работу

xd:> hadoop config fs --namenode hdfs://localhost:8020
xd:> hadoop fs cat /count/out/part-r-00000

Также поддерживаются другие шаги в рабочем процессе, такие как выполнение сценариев Hive или Pig. Чтобы создать эти типы рабочих процессов, обратитесь к справочному руководству по Spring для Apache Hadoop. Также поддерживаются шаги, не основанные на Hadoop.

ЕЩЕ НЕ ВСЕ

Основной темой следующего выпуска является предоставление дополнительных административных функций для пакетных заданий путем включения компонентов проекта  Spring Batch Admin  . Вы сможете запускать пакетные задания, отправляя сообщения по именованным каналам, а также получать уведомления о состоянии заданий из именованных каналов. Это позволит вам легко настроить запуск пакетного задания на основе доступности данных, например

file --dir "/data/inbound" | jobParameterCreator > :wordCountJob

запускает пакетное задание wordcount, когда файлы становятся доступными в каталоге /data/inbound , отправляя сообщение в именованный канал: wordCountJob. По мере выполнения пакетного задания вам будет доступен поток данных для приема сообщений с данными о  JobExecutionStepExecution , и т.п.

Использование канала для обмена данными между потоком и заданиями — это одна из областей, где вы можете увидеть, как Spring XD предпринимает шаги по объединению двух доменов потоковой и пакетной обработки. Оставайтесь в курсе!

SPRINGONE 2GX 2013 ВОКРУГ УГЛА

Забронируйте место в  SpringOne в Санта-Кларе в  ближайшее время. Это просто лучшая возможность узнать из первых рук обо всем, что происходит, и предоставить прямую обратную связь. Ожидайте ряд значительных новых объявлений в этом году