redstorm 0.6.6.beta1 → 0.6.6.beta2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/CHANGELOG.md +4 -1
- data/README.md +37 -16
- data/lib/red_storm/application.rb +10 -5
- data/lib/red_storm/version.rb +1 -1
- data/lib/tasks/red_storm.rake +6 -2
- metadata +2 -2
data/CHANGELOG.md
CHANGED
@@ -82,7 +82,7 @@
|
|
82
82
|
- issue #73, external jars dependencies Ivy configurations completely externalized and configurable
|
83
83
|
- lots of other [bug fixes and improvements](https://github.com/colinsurprenant/redstorm/issues?milestone=9&page=1&state=closed)
|
84
84
|
|
85
|
-
# 0.6.6,
|
85
|
+
# 0.6.6.beta1, 07-02-2013
|
86
86
|
- Storm 0.9.0-wip16 and JRuby 1.7.4
|
87
87
|
- [issue #79](https://github.com/colinsurprenant/redstorm/issues/79) - fix example Kafka topology dependency doc
|
88
88
|
- [issue #82](https://github.com/colinsurprenant/redstorm/issues/82) - configurable javac compilation source/target
|
@@ -92,3 +92,6 @@
|
|
92
92
|
- fixed FFI support
|
93
93
|
- exposed topology builder for specs
|
94
94
|
- [issue #11](https://github.com/colinsurprenant/redstorm/issues/11), [#17](https://github.com/colinsurprenant/redstorm/issues/17) - example specs using the Storm testing API see [redstorm-starter](https://github.com/colinsurprenant/redstorm-starter/)
|
95
|
+
|
96
|
+
# 0.6.6.beta2, 07-20-2013
|
97
|
+
- [issue #76](https://github.com/colinsurprenant/redstorm/issues/76) - avoid shelling out to storm jar command for cluster submission
|
data/README.md
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
# RedStorm v0.6.6.
|
1
|
+
# RedStorm v0.6.6.beta2 - JRuby on Storm
|
2
2
|
|
3
3
|
[](http://travis-ci.org/colinsurprenant/redstorm)
|
4
4
|
|
@@ -13,6 +13,11 @@ Check also these related projects:
|
|
13
13
|
|
14
14
|
## Documentation
|
15
15
|
|
16
|
+
---
|
17
|
+
This is the documentation for the **current WIP version of RedStorm** - the **[latest released Gem is v0.6.5](wiki/RedStorm-Gem-v0.6.5-Documentation)**
|
18
|
+
|
19
|
+
---
|
20
|
+
|
16
21
|
Chances are new versions of RedStorm will introduce changes that will break compatibility or change the developement workflow. To prevent out-of-sync documentation, per version specific documentation are kept [in the wiki](https://github.com/colinsurprenant/redstorm/wiki) when necessary.
|
17
22
|
|
18
23
|
## Dependencies
|
@@ -24,14 +29,14 @@ Tested on **OSX 10.8.3** and **Ubuntu Linux 12.10** using **Storm 0.9.0-wip16**
|
|
24
29
|
- RubyGems
|
25
30
|
|
26
31
|
``` sh
|
27
|
-
$ gem install redstorm
|
32
|
+
$ gem install redstorm --pre
|
28
33
|
```
|
29
34
|
|
30
35
|
- Bundler
|
31
36
|
|
32
37
|
``` ruby
|
33
38
|
source "https://rubygems.org"
|
34
|
-
gem "redstorm", "~> 0.6.6.
|
39
|
+
gem "redstorm", "~> 0.6.6.beta2"
|
35
40
|
```
|
36
41
|
|
37
42
|
## Usage
|
@@ -60,6 +65,12 @@ $ redstorm install
|
|
60
65
|
|
61
66
|
This will install default Java jar dependencies in `target/dependency`, generate & compile the Java bindings in `target/classes`.
|
62
67
|
|
68
|
+
By default, the Java compilation will use the current JVM version as source/target compilation compatibility. If you want to force a specific source/target version, use the `--[JVM VERSION]` option. For example, to force compiling for 1.6 use:
|
69
|
+
|
70
|
+
``` sh
|
71
|
+
$ redstorm install --1.6
|
72
|
+
```
|
73
|
+
|
63
74
|
### Create a topology
|
64
75
|
|
65
76
|
Create a subdirectory for your topology code and create your topology class **using this naming convention**: *underscore* topology_class_file_name.rb **MUST** correspond to its *CamelCase* class name.
|
@@ -76,7 +87,7 @@ end
|
|
76
87
|
|
77
88
|
class HelloWorldBolt < RedStorm::DSL::Bolt
|
78
89
|
on_receive :emit => false do |tuple|
|
79
|
-
log.info(tuple
|
90
|
+
log.info(tuple[0])
|
80
91
|
end
|
81
92
|
end
|
82
93
|
|
@@ -185,30 +196,34 @@ $ java -Djruby.compat.version=RUBY1_9 -cp "target/classes:target/dependency/stor
|
|
185
196
|
|
186
197
|
### Run on production cluster
|
187
198
|
|
188
|
-
|
189
|
-
|
190
|
-
1. download and unpack the [Storm 0.9.0-wip16 distribution](https://dl.dropbox.com/u/133901206/storm-0.9.0-wip16.zip) locally
|
199
|
+
Locally installing the Storm distribution is **not required**. Note that RedStorm does not provide the Storm command line utilities and you will need to install the Storm distribution to use the Storm command line utilities.
|
191
200
|
|
192
|
-
|
193
|
-
|
194
|
-
3. create `~/.storm/storm.yaml` and add the following
|
201
|
+
1. create the Storm config file `~/.storm/storm.yaml` and add the following
|
195
202
|
|
196
203
|
```yaml
|
197
204
|
nimbus.host: "host_name_or_ip"
|
198
205
|
```
|
199
206
|
|
200
|
-
|
207
|
+
you can also use an alternate path and use the `--config <other/path/to/config.yaml>`
|
208
|
+
|
209
|
+
2. generate `target/cluster-topology.jar`. This jar file will include your sources directory plus the required dependencies
|
201
210
|
|
202
211
|
``` sh
|
203
212
|
$ redstorm jar <sources_directory1> <sources_directory2> ...
|
204
213
|
```
|
205
214
|
|
206
|
-
|
215
|
+
3. submit the cluster topology jar file to the cluster
|
207
216
|
|
208
217
|
``` sh
|
209
218
|
$ redstorm cluster <sources_directory/topology_class_file_name.rb>
|
210
219
|
```
|
211
220
|
|
221
|
+
or if you have an alternate Storm config path:
|
222
|
+
|
223
|
+
``` sh
|
224
|
+
$ redstorm cluster --config <some/other/path/to/config.yaml> <sources_directory/topology_class_file_name.rb>
|
225
|
+
```
|
226
|
+
|
212
227
|
note that the cluster topology jar can also be submitted using the storm command with:
|
213
228
|
|
214
229
|
``` sh
|
@@ -273,13 +288,13 @@ All examples using the [DSL](https://github.com/colinsurprenant/redstorm/wiki/Ru
|
|
273
288
|
|
274
289
|
#### Topologies without gems
|
275
290
|
|
276
|
-
1. genererate the `target/cluster-topology.jar` and include the `examples/` directory
|
291
|
+
1. genererate the `target/cluster-topology.jar` and include the `examples/` directory
|
277
292
|
|
278
293
|
``` sh
|
279
294
|
$ redstorm jar examples
|
280
295
|
```
|
281
296
|
|
282
|
-
2. submit the cluster topology jar file to the cluster
|
297
|
+
2. submit the cluster topology jar file to the cluster
|
283
298
|
|
284
299
|
``` sh
|
285
300
|
$ redstorm cluster examples/dsl/exclamation_topology.rb
|
@@ -309,13 +324,13 @@ For `examples/dsl/redis_word_count_topology.rb` the `redis` gem is required and
|
|
309
324
|
$ redstorm bundle word_count
|
310
325
|
```
|
311
326
|
|
312
|
-
3. genererate the `target/cluster-topology.jar` and include the `examples/` directory
|
327
|
+
3. genererate the `target/cluster-topology.jar` and include the `examples/` directory
|
313
328
|
|
314
329
|
``` sh
|
315
330
|
$ redstorm jar examples
|
316
331
|
```
|
317
332
|
|
318
|
-
4. submit the cluster topology jar file to the cluster
|
333
|
+
4. submit the cluster topology jar file to the cluster
|
319
334
|
|
320
335
|
``` sh
|
321
336
|
$ redstorm cluster examples/dsl/redis_word_count_topology.rb
|
@@ -404,6 +419,12 @@ It is possible to fork the RedStorm project and run local and remote/cluster top
|
|
404
419
|
$ bundle exec redstorm build
|
405
420
|
```
|
406
421
|
|
422
|
+
By default, the Java compilation will use the current JVM version as source/target compilation compatibility. If you want to force a specific source/target version, use the `--[JVM VERSION]` option. For example, to force compiling for 1.6 use:
|
423
|
+
|
424
|
+
``` sh
|
425
|
+
$ bundle exec redstorm build --1.6
|
426
|
+
```
|
427
|
+
|
407
428
|
**if you modify any of the RedStorm Ruby code or Java binding code**, you need to run this to refresh code and rebuild the bindings
|
408
429
|
|
409
430
|
- follow the normal usage patterns to run the topology in local or remote cluster.
|
@@ -27,6 +27,8 @@ CUSTOM_IVY_STORM_DEPENDENCIES = "#{DST_IVY_DIR}/storm_dependencies.xml"
|
|
27
27
|
DEFAULT_IVY_TOPOLOGY_DEPENDENCIES = "#{SRC_IVY_DIR}/topology_dependencies.xml"
|
28
28
|
CUSTOM_IVY_TOPOLOGY_DEPENDENCIES = "#{DST_IVY_DIR}/topology_dependencies.xml"
|
29
29
|
|
30
|
+
DEFAULT_STORM_CONF_FILE = File.expand_path("~/.storm/storm.yaml")
|
31
|
+
|
30
32
|
module RedStorm
|
31
33
|
|
32
34
|
class Application
|
@@ -34,11 +36,11 @@ module RedStorm
|
|
34
36
|
|
35
37
|
def self.local_storm_command(class_file, ruby_mode = nil)
|
36
38
|
src_dir = File.expand_path(File.dirname(class_file))
|
37
|
-
"java -Djruby.compat.version=#{RedStorm.jruby_mode_token(ruby_mode)} -cp \"#{TARGET_CLASSES_DIR}:#{TARGET_DEPENDENCY_DIR}/storm/default/*:#{TARGET_DEPENDENCY_DIR}/topology/default/*:#{src_dir}/\" redstorm.TopologyLauncher local #{class_file}"
|
39
|
+
"java -server -Djruby.compat.version=#{RedStorm.jruby_mode_token(ruby_mode)} -cp \"#{TARGET_CLASSES_DIR}:#{TARGET_DEPENDENCY_DIR}/storm/default/*:#{TARGET_DEPENDENCY_DIR}/topology/default/*:#{src_dir}/\" redstorm.TopologyLauncher local #{class_file}"
|
38
40
|
end
|
39
41
|
|
40
|
-
def self.cluster_storm_command(class_file, ruby_mode = nil)
|
41
|
-
"
|
42
|
+
def self.cluster_storm_command(storm_conf, class_file, ruby_mode = nil)
|
43
|
+
"java -client -Dstorm.conf.file=#{File.basename(storm_conf)} -Dstorm.jar=#{TARGET_CLUSTER_JAR} -Djruby.compat.version=#{RedStorm.jruby_mode_token(ruby_mode)} -cp #{TARGET_DEPENDENCY_DIR}/storm/default/*:#{TARGET_CLUSTER_JAR}:#{File.dirname(storm_conf)} redstorm.TopologyLauncher cluster #{class_file}"
|
42
44
|
end
|
43
45
|
|
44
46
|
def self.usage
|
@@ -50,10 +52,12 @@ module RedStorm
|
|
50
52
|
puts(" redstorm bundle [BUNDLER_GROUP]")
|
51
53
|
puts(" redstorm jar DIR1, [DIR2, ...]")
|
52
54
|
puts(" redstorm local [--1.8|--1.9] TOPOLOGY_CLASS_PATH")
|
53
|
-
puts(" redstorm cluster [--1.8|--1.9] TOPOLOGY_CLASS_PATH")
|
55
|
+
puts(" redstorm cluster [--1.8|--1.9] [--config STORM_CONFIG_PATH] TOPOLOGY_CLASS_PATH")
|
54
56
|
exit(1)
|
55
57
|
end
|
56
58
|
|
59
|
+
# TODO: refactor args parsing... becoming a mess.
|
60
|
+
|
57
61
|
def self.run(args)
|
58
62
|
if args.size > 0
|
59
63
|
if args[0] == "version"
|
@@ -66,10 +70,11 @@ module RedStorm
|
|
66
70
|
elsif args.size >= 2 && ["local", "cluster"].include?(args[0])
|
67
71
|
env = args.delete_at(0)
|
68
72
|
version = args.delete("--1.8") || args.delete("--1.9")
|
73
|
+
storm_conf = args.delete("--config") ? File.expand_path(args.delete_at(0)) : DEFAULT_STORM_CONF_FILE
|
69
74
|
if args.size == 1
|
70
75
|
file = args[0]
|
71
76
|
load(TASKS_FILE)
|
72
|
-
Rake::Task['launch'].invoke(env, version, file)
|
77
|
+
Rake::Task['launch'].invoke(env, storm_conf, version, file)
|
73
78
|
exit
|
74
79
|
end
|
75
80
|
end
|
data/lib/red_storm/version.rb
CHANGED
data/lib/tasks/red_storm.rake
CHANGED
@@ -12,7 +12,7 @@ require 'red_storm/application'
|
|
12
12
|
|
13
13
|
INSTALL_IVY_VERSION = "2.3.0"
|
14
14
|
|
15
|
-
task :launch, :env, :ruby_mode, :class_file do |t, args|
|
15
|
+
task :launch, :env, :storm_conf, :ruby_mode, :class_file do |t, args|
|
16
16
|
# use ruby mode parameter or default to current interpreter version
|
17
17
|
version_token = RedStorm.jruby_mode_token(args[:ruby_mode])
|
18
18
|
|
@@ -24,7 +24,11 @@ task :launch, :env, :ruby_mode, :class_file do |t, args|
|
|
24
24
|
puts("error: cluster jar file #{TARGET_CLUSTER_JAR} not found. Generate it using $redstorm jar DIR1 [DIR2, ...]")
|
25
25
|
exit(1)
|
26
26
|
end
|
27
|
-
|
27
|
+
unless File.exist?(args[:storm_conf])
|
28
|
+
puts("error: Storm config file #{args[:storm_conf]} not found. Create it or supply alternate path using $redstorm cluster --config STORM_CONFIG_PATH ...")
|
29
|
+
exit(1)
|
30
|
+
end
|
31
|
+
RedStorm::Application.cluster_storm_command(args[:storm_conf], args[:class_file], args[:ruby_mode])
|
28
32
|
end
|
29
33
|
|
30
34
|
puts("launching #{command}")
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: redstorm
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.6.6.
|
4
|
+
version: 0.6.6.beta2
|
5
5
|
prerelease: 6
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2013-07-
|
12
|
+
date: 2013-07-20 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: rspec
|