From 867d2a8aa311a6405965155a4dcc5b02c84ea807 Mon Sep 17 00:00:00 2001 From: Lixin Wei Date: Fri, 11 Dec 2020 20:36:17 +0800 Subject: [PATCH] [Streaming] Add more documents. (#12746) * add doc draft draft draft draft draft fix fix fix fix fix fix fix Update README.md fix fix fix * md to rst * fix * fix * fix * jpg modified * add getting envolved * jpg modified * Update README.rst * fix * fix --- streaming/README.md | 33 ----- streaming/README.rst | 232 ++++++++++++++++++++++++++++++ streaming/assets/architecture.jpg | Bin 0 -> 78372 bytes 3 files changed, 232 insertions(+), 33 deletions(-) delete mode 100644 streaming/README.md create mode 100644 streaming/README.rst create mode 100644 streaming/assets/architecture.jpg diff --git a/streaming/README.md b/streaming/README.md deleted file mode 100644 index cb8c5d78d..000000000 --- a/streaming/README.md +++ /dev/null @@ -1,33 +0,0 @@ -# Ray Streaming - -1. Build streaming java - * build ray - * `bazel build //java:gen_maven_deps` - * `cd java && mvn clean install -Dmaven.test.skip=true && cd ..` - * build streaming - * `bazel build //streaming/java:gen_maven_deps` - * `mvn clean install -Dmaven.test.skip=true` - -2. Build ray python will build ray streaming python. - -3. Run examples - ```bash - # c++ test - cd streaming/ && bazel test ... - sh src/test/run_streaming_queue_test.sh - cd .. - - # python test - pushd python/ray/streaming/ - pushd examples - python simple.py --input-file toy.txt - popd - pushd tests - pytest . - popd - popd - - # java test - cd streaming/java/streaming-runtime - mvn test - ``` \ No newline at end of file diff --git a/streaming/README.rst b/streaming/README.rst new file mode 100644 index 000000000..90e4a676a --- /dev/null +++ b/streaming/README.rst @@ -0,0 +1,232 @@ + +Ray Streaming +============= + +Ray Streaming is a streaming data processing framework built on ray. It will be helpful for you to build jobs dealing with real-time data. + +Key Features +------------ + + +#. + **Cross Language**. Based on Ray's multi-language actor, Ray Streaming can also run in multiple + languages(only Python and Java is supported currently) with high efficiency. You can implement your + operator in different languages and run them in one job. + +#. + **Single Node Failover**. We designed a special failover mechanism that only needs to rollback the + failed node it's own, in most cases, to recover the job. This will be a huge benefit if your job is + sensitive about failure recovery time. In other frameworks like Flink, instead, the entire job should + be restarted once a node has failure. + +Examples +-------- + +Python +^^^^^^ + +.. code-block:: Python + + import ray + from ray.streaming import StreamingContext + + ctx = StreamingContext.Builder() \ + .build() + ctx.read_text_file(__file__) \ + .set_parallelism(1) \ + .flat_map(lambda x: x.split()) \ + .map(lambda x: (x, 1)) \ + .key_by(lambda x: x[0]) \ + .reduce(lambda old_value, new_value: + (old_value[0], old_value[1] + new_value[1])) \ + .filter(lambda x: "ray" not in x) \ + .sink(lambda x: print("result", x)) + ctx.submit("word_count") + +Java +^^^^ + +.. code-block:: Java + + StreamingContext context = StreamingContext.buildContext(); + List text = Collections.singletonList("hello world"); + DataStreamSource.fromCollection(context, text) + .flatMap((FlatMapFunction) (value, collector) -> { + String[] records = value.split(" "); + for (String record : records) { + collector.collect(new WordAndCount(record, 1)); + } + }) + .filter(pair -> !pair.word.contains("world")) + .keyBy(pair -> pair.word) + .reduce((oldValue, newValue) -> + new WordAndCount(oldValue.word, oldValue.count + newValue.count)) + .sink(result -> System.out.println("sink result=" + result)); + context.execute("testWordCount"); + +Use Java Operators in Python +^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +.. code-block:: Python + + import ray + from ray.streaming import StreamingContext + + ctx = StreamingContext.Builder().build() + ctx.from_values("a", "b", "c") \ + .as_java_stream() \ + .map("io.ray.streaming.runtime.demo.HybridStreamTest$Mapper1") \ + .filter("io.ray.streaming.runtime.demo.HybridStreamTest$Filter1") \ + .as_python_stream() \ + .sink(lambda x: print("result", x)) + ctx.submit("HybridStreamTest") + +Use Python Operators in Java +^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +.. code-block:: Java + + StreamingContext context = StreamingContext.buildContext(); + DataStreamSource streamSource = + DataStreamSource.fromCollection(context, Arrays.asList("a", "b", "c")); + streamSource + .map(x -> x + x) + .asPythonStream() + .map("ray.streaming.tests.test_hybrid_stream", "map_func1") + .filter("ray.streaming.tests.test_hybrid_stream", "filter_func1") + .asJavaStream() + .sink(value -> System.out.println("HybridStream sink=" + value)); + context.execute("HybridStreamTestJob"); + +Installation +------------ + +Python +^^^^^^ + +Ray Streaming is packaged together with Ray, install Ray with: ``pip install ray``\ , +this wheel contains all dependencies your need to run Python streaming, including Java operators supporting. + +Java +^^^^ + +Import Ray Streaming using maven: + +.. code-block:: xml + + + ray-api + io.ray + 1.0.1 + + + ray-runtime + io.ray + 1.0.1 + + + streaming-api + io.ray + 1.0.1 + + + streaming-runtime + io.ray + 1.0.1 + + +Internal Design +--------------- + +Overall Architecture +^^^^^^^^^^^^^^^^^^^^ + + +.. image:: assets/architecture.jpg + :target: assets/architecture.jpg + :alt: architecture + + +Ray Streaming is built on Ray. We use Ray's actor to run everything, and use Ray's direct call for communication. + +There are two main types of actor: job master and job worker. + +When you execute ``context.submit()`` in your driver, we'll first create a job master, then job master will create all job workers needed to run your operator. Then job master will be responsible to coordinate all workers, including checkpoint, failover, etc. + +Check `Ray Streaming Proposal `_ +to get more detailed information about the overall design. + +Fault Tolerance Mechanism +^^^^^^^^^^^^^^^^^^^^^^^^^ + +As mentioned above, different from other frameworks, We designed a special failover mechanism that only needs to rollback the failed node it's own, in most cases, to recover the job. The main idea to achieve this feature is saving messages for each node, and replay them from upstream when node has failure. + +Check `Fault Tolerance Proposal `_ +for more detailed information about our fault tolerance mechanism. + +Development Guides +------------------ + + +#. + Build streaming java + + + * build ray + + * ``bazel build //java:gen_maven_deps`` + * ``cd java && mvn clean install -Dmaven.test.skip=true && cd ..`` + + * build streaming + + * ``bazel build //streaming/java:gen_maven_deps`` + * ``mvn clean install -Dmaven.test.skip=true`` + +#. + Build ray python will build ray streaming python. + +#. + Run examples + + .. code-block:: bash + + # c++ test + cd streaming/ && bazel test ... + sh src/test/run_streaming_queue_test.sh + cd .. + + # python test + pushd python/ray/streaming/ + pushd examples + python simple.py --input-file toy.txt + popd + pushd tests + pytest . + popd + popd + + # java test + cd streaming/java/streaming-runtime + mvn test + + +More Information +---------------- + + +* `Ray Streaming implementation plan `_ +* `Fault Tolerance Proposal `_ +* `Data Transfer Proposal `_ +* `Ray Streaming Proposal `_ +* `Open Source Plan `_ + +Getting Involved +---------------- + +- `Community Slack`_: Join our Slack workspace. +- `GitHub Discussions`_: For discussions about development, questions about usage, and feature requests. +- `GitHub Issues`_: For reporting bugs. + +.. _`GitHub Discussions`: https://github.com/ray-project/ray/discussions +.. _`GitHub Issues`: https://github.com/ray-project/ray/issues +.. _`Community Slack`: https://forms.gle/9TSdDYUgxYs8SA9e8 diff --git a/streaming/assets/architecture.jpg b/streaming/assets/architecture.jpg new file mode 100644 index 0000000000000000000000000000000000000000..9aab86b9acd73230ffd6ebeafa01151ae97faa0c GIT binary patch literal 78372 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