Статьи

Святой момент Бэтмен! Spark и Cassandra (около 2015 г.) с Datastax Connector и Java

Более года назад я написал  статью о Спарк и Кассандре . В то время Каллиопа была твоей лучшей ставкой. С тех пор Spark взорвался в популярности.

Проверьте этот  график Google Trends . Это довольно хоккейная клюшка для Спарк. Также обратите внимание на их  проект GitHub , который имеет почти 500 участников и 3000 вилок!

Datastax движется по этой кривой. И как раз за время, прошедшее с момента моего последнего поста, Datastax разработал и выпустил собственный  разъем для искры-кассандры .  

Я собираю некоторые материалы для  Philly Tech Week, где я буду рассказывать о разработке CassandraТак что я подумал, что я хотел бы показать, как все развивалось. Вот предварительный просмотр части Spark того, что я буду представлять.

Во-первых, запустите Spark Running

Загрузите Spark 1.2.1  (это версия, которая работает с последним соединителем Datastax).

Затем распакуйте его и соберите . (mvn install) 

И это первое, что я заметил …

[INFO] Spark Project Parent POM
[INFO] Spark Project Networking
[INFO] Spark Project Shuffle Streaming Service
[INFO] Spark Project Core
[INFO] Spark Project Bagel
[INFO] Spark Project GraphX
[INFO] Spark Project Streaming
[INFO] Spark Project Catalyst
[INFO] Spark Project SQL
[INFO] Spark Project ML Library
[INFO] Spark Project Tools
[INFO] Spark Project Hive
[INFO] Spark Project REPL
[INFO] Spark Project Assembly
[INFO] Spark Project External Twitter
[INFO] Spark Project External Flume Sink
[INFO] Spark Project External Flume
[INFO] Spark Project External MQTT
[INFO] Spark Project External ZeroMQ
[INFO] Spark Project External Kafka
[INFO] Spark Project Examples

Посмотри на все эти новые классные игрушки? Graphx? SQL? Кафка? В своем последнем посте я использовал Spark 0.8.1. Я посмотрел ветку 0.8 на github и, конечно же, все это было создано только в прошлом году! Это безумие, что может сделать импульс. О

После того, как вы создали spark, перейдите в каталог conf и скопируйте файл окружения шаблона. 

cp spark-env.sh.template spark-env.sh

Затем отредактируйте этот файл и добавьте строку для настройки основного интерфейса IP / bind:

SPARK_MASTER_IP=127.0.0.1

(Если вы не установили IP-адрес, мастер может связываться с неверным интерфейсом, и ваше приложение не сможет подключиться, что и произошло со мной вначале).

Затем запустите мастер: (Он дает вам путь к бревнам, которые я рекомендую в хвост)

sbin/start-master.sh 

В журналах вы должны увидеть:

15/04/06 12:46:39 INFO Master: Starting Spark master at spark://127.0.0.1:7077
15/04/06 12:46:39 INFO Utils: Successfully started service 'MasterUI' on port 8080.
15/04/06 12:46:39 INFO MasterWebUI: Started MasterWebUI at http://localhost:8080

Перейдите к этому WebUI по адресу  http: // localhost: 8080 .

Во-вторых, найдите себе работников

У Spark есть своя концепция рабочих. Для запуска выполните следующую команду:

bin/spark-class org.apache.spark.deploy.worker.Worker spark://127.0.0.1:7077

Через несколько секунд вы должны увидеть следующее:

15/04/06 13:54:23 INFO Utils: Successfully started service 'WorkerUI' on port 8081.
15/04/06 13:54:23 INFO WorkerWebUI: Started WorkerWebUI at http://localhost:8081
15/04/06 13:54:23 INFO Worker: Connecting to master spark://127.0.0.1:7077...
15/04/06 13:54:25 INFO Worker: Successfully registered with master spark://127.0.0.1:7077

Вы можете обновить MasterWebUI, и вы должны увидеть работника.

В-третьих, слинг какой-то код

Для этого я хотел использовать Java вместо Scala. (Извините, но я все еще не в Scala, я чувствую, что Java 8 дает мне то, что мне нужно в отношении функций и лямбд)

Я нашел этот пост Datastax:

http://www.datastax.com/dev/blog/accessing-cassandra-from-spark-in-java

Что привело меня к этому коду:

https://gist.github.com/jacek-lewandowski/278bfc936ca990bee35a

Престижность Яцеку, но эта суть направлена ​​на старую версию Spark. Он также свел все в один класс (что означает, что он не поможет вам в реальной ситуации, когда у вас много классов и зависимостей). В конце концов, я решил обновить свой проект быстрого старта, чтобы каждый мог встать и работает быстро.

Перейти клонировать это:
https://github.com/boneill42/spark-on-cassandra-quickstart

Сборка с Maven:

mvn clean install

Затем взгляните на run.sh. Это фактически отправляет задание в кластер Spark (в нашем случае это единственный узел). Содержимое этого скрипта следующее:

spark-submit --class com.github.boneill42.JavaDemo --master spark://127.0.0.1:7077 target/spark-on-cassandra-0.0.1-SNAPSHOT-jar-with-dependencies.jar spark://127.0.0.1:7077 127.0.0.1

Параметр —class сообщает Spark, какой класс выполнять. Параметр —master — это URL, который вы видите в верхней части MasterWebUI, и указывает искре, какому мастеру он должен отправить задание. Файл jar является результатом сборки, которая представляет собой толстый файл jar, содержащий задание (любезно предоставлено плагином maven сборка). Последние два параметра являются аргументами программы. Spark передает их в класс JavaDemo. После того, как вы запустите это, вы должны увидеть процесс работы …

15/04/06 17:16:57 INFO DAGScheduler: Stage 8 (toArray at JavaDemo.java:185) finished in 0.028 s
15/04/06 17:16:57 INFO DAGScheduler: Job 3 finished: toArray at JavaDemo.java:185, took 0.125340 s
(Product{id=4, name='Product A1', parents=[0, 1]},Optional.of(Summary{product=4, summary=505.178}))
...
(Product{id=7, name='Product B2', parents=[0, 2]},Optional.of(Summary{product=7, summary=494.177}))
(Product{id=5, name='Product A2', parents=[0, 1]},Optional.of(Summary{product=5, summary=500.635}))
(Product{id=2, name='Product B', parents=[0]},Optional.of(Summary{product=2, summary=994.037}))

Я подробно расскажу о примере в следующем посте. Или вы можете просто прийти на мою презентацию на Philly Tech Week. знак равно