mirror of
https://github.com/wassname/ray.git
synced 2026-07-01 01:09:50 +08:00
[Streaming] Streaming data transfer supports cross language. (#7961)
* add init parameters for java * fix bug * cython * fix compile * fix test_direct_tranfer * comment * ChannelCreationParameter * fix comment * builder * lint and fix tests * fix single process test * fix checkstyle and lint * checkstyle * lint python Co-authored-by: wanxing <wanxing@B-458DMD6M-1753.local>
This commit is contained in:
+1
-2
@@ -36,7 +36,6 @@ import org.testng.annotations.Test;
|
||||
public class StreamingQueueTest extends BaseUnitTest implements Serializable {
|
||||
|
||||
private static Logger LOGGER = LoggerFactory.getLogger(StreamingQueueTest.class);
|
||||
|
||||
static {
|
||||
EnvUtil.loadNativeLibraries();
|
||||
}
|
||||
@@ -62,7 +61,6 @@ public class StreamingQueueTest extends BaseUnitTest implements Serializable {
|
||||
|
||||
@BeforeMethod
|
||||
void beforeMethod() {
|
||||
|
||||
LOGGER.info("beforeTest");
|
||||
Ray.shutdown();
|
||||
System.setProperty("ray.resources", "CPU:4,RES-A:4");
|
||||
@@ -144,6 +142,7 @@ public class StreamingQueueTest extends BaseUnitTest implements Serializable {
|
||||
|
||||
@Test(timeOut = 60000)
|
||||
public void testWordCount() {
|
||||
LOGGER.info("testWordCount");
|
||||
LOGGER.info("StreamingQueueTest.testWordCount run-mode: {}",
|
||||
System.getProperty("ray.run-mode"));
|
||||
String resultFile = "/tmp/io.ray.streaming.runtime.streamingqueue.testWordCount.txt";
|
||||
|
||||
+15
-18
@@ -1,10 +1,11 @@
|
||||
package io.ray.streaming.runtime.streamingqueue;
|
||||
|
||||
import io.ray.api.BaseActor;
|
||||
import io.ray.api.Ray;
|
||||
import io.ray.api.RayActor;
|
||||
import io.ray.api.id.ActorId;
|
||||
import io.ray.runtime.functionmanager.JavaFunctionDescriptor;
|
||||
import io.ray.streaming.runtime.transfer.ChannelID;
|
||||
import io.ray.streaming.runtime.transfer.ChannelCreationParametersBuilder;
|
||||
import io.ray.streaming.runtime.transfer.DataMessage;
|
||||
import io.ray.streaming.runtime.transfer.DataReader;
|
||||
import io.ray.streaming.runtime.transfer.DataWriter;
|
||||
@@ -12,7 +13,6 @@ import io.ray.streaming.runtime.transfer.TransferHandler;
|
||||
import io.ray.streaming.util.Config;
|
||||
import java.lang.management.ManagementFactory;
|
||||
import java.nio.ByteBuffer;
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
@@ -27,15 +27,7 @@ public class Worker {
|
||||
protected TransferHandler transferHandler = null;
|
||||
|
||||
public Worker() {
|
||||
transferHandler = new TransferHandler(
|
||||
new JavaFunctionDescriptor(Worker.class.getName(),
|
||||
"onWriterMessage", "([B)V"),
|
||||
new JavaFunctionDescriptor(Worker.class.getName(),
|
||||
"onWriterMessageSync", "([B)[B"),
|
||||
new JavaFunctionDescriptor(Worker.class.getName(),
|
||||
"onReaderMessage", "([B)V"),
|
||||
new JavaFunctionDescriptor(Worker.class.getName(),
|
||||
"onReaderMessageSync", "([B)[B"));
|
||||
transferHandler = new TransferHandler();
|
||||
}
|
||||
|
||||
public void onReaderMessage(byte[] buffer) {
|
||||
@@ -60,7 +52,7 @@ class ReaderWorker extends Worker {
|
||||
|
||||
private String name = null;
|
||||
private List<String> inputQueueList = null;
|
||||
private List<ActorId> inputActorIds = new ArrayList<>();
|
||||
Map<String, BaseActor> fromActors = new HashMap<>();
|
||||
private DataReader dataReader = null;
|
||||
private long handler = 0;
|
||||
private RayActor<WriterWorker> peerActor = null;
|
||||
@@ -95,7 +87,7 @@ class ReaderWorker extends Worker {
|
||||
LOGGER.info("java.library.path = {}", System.getProperty("java.library.path"));
|
||||
|
||||
for (String queue : this.inputQueueList) {
|
||||
inputActorIds.add(this.peerActor.getId());
|
||||
fromActors.put(queue, this.peerActor);
|
||||
LOGGER.info("ReaderWorker actorId: {}", this.peerActor.getId());
|
||||
}
|
||||
|
||||
@@ -104,7 +96,10 @@ class ReaderWorker extends Worker {
|
||||
conf.put(Config.CHANNEL_TYPE, Config.NATIVE_CHANNEL);
|
||||
conf.put(Config.CHANNEL_SIZE, "100000");
|
||||
conf.put(Config.STREAMING_JOB_NAME, "integrationTest1");
|
||||
dataReader = new DataReader(inputQueueList, inputActorIds, conf);
|
||||
ChannelCreationParametersBuilder.setJavaWriterFunctionDesc(
|
||||
new JavaFunctionDescriptor(Worker.class.getName(), "onWriterMessage", "([B)V"),
|
||||
new JavaFunctionDescriptor(Worker.class.getName(), "onWriterMessageSync", "([B)[B"));
|
||||
dataReader = new DataReader(inputQueueList, fromActors, conf);
|
||||
|
||||
// Should not GetBundle in RayCall thread
|
||||
Thread readThread = new Thread(Ray.wrapRunnable(new Runnable() {
|
||||
@@ -176,7 +171,7 @@ class WriterWorker extends Worker {
|
||||
|
||||
private String name = null;
|
||||
private List<String> outputQueueList = null;
|
||||
private List<ActorId> outputActorIds = new ArrayList<>();
|
||||
Map<String, BaseActor> toActors = new HashMap<>();
|
||||
DataWriter dataWriter = null;
|
||||
RayActor<ReaderWorker> peerActor = null;
|
||||
int msgCount = 0;
|
||||
@@ -208,7 +203,7 @@ class WriterWorker extends Worker {
|
||||
LOGGER.info("WriterWorker init:");
|
||||
|
||||
for (String queue : this.outputQueueList) {
|
||||
outputActorIds.add(this.peerActor.getId());
|
||||
toActors.put(queue, this.peerActor);
|
||||
LOGGER.info("WriterWorker actorId: {}", this.peerActor.getId());
|
||||
}
|
||||
|
||||
@@ -227,8 +222,10 @@ class WriterWorker extends Worker {
|
||||
conf.put(Config.CHANNEL_TYPE, Config.NATIVE_CHANNEL);
|
||||
conf.put(Config.CHANNEL_SIZE, "100000");
|
||||
conf.put(Config.STREAMING_JOB_NAME, "integrationTest1");
|
||||
|
||||
dataWriter = new DataWriter(this.outputQueueList, this.outputActorIds, conf);
|
||||
ChannelCreationParametersBuilder.setJavaReaderFunctionDesc(
|
||||
new JavaFunctionDescriptor(Worker.class.getName(), "onReaderMessage", "([B)V"),
|
||||
new JavaFunctionDescriptor(Worker.class.getName(), "onReaderMessageSync", "([B)[B"));
|
||||
dataWriter = new DataWriter(this.outputQueueList, this.toActors, conf);
|
||||
Thread writerThread = new Thread(Ray.wrapRunnable(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
|
||||
Reference in New Issue
Block a user