[
https://issues.apache.org/jira/browse/ARROW-7200?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16980743#comment-16980743
]
Chengxin Ma commented on ARROW-7200:
------------------------------------
I've attempted to do a fix here:
[https://github.com/MaChengxin/arrow/commit/08ff56bacd87accb52adc2a20f1976acb320917e]
I'm not sure what the correct workflow is. Is it PR-then-code-review or the
other way around?
Now in order to enable benchmarking on two hosts, we have to do:
Server side:
{code}
ubuntu@ip-172-31-11-18:~/arrow/cpp/for_flight/debug$ ./arrow-flight-perf-server
-server_host 172.31.11.18
Server host: 172.31.11.18
Server port: 31337
{code}
Client side:
{code}
ubuntu@ip-172-31-3-53:~/arrow/cpp/for_flight/debug$ ./arrow-flight-benchmark
-server_host 172.31.11.18
Using remote server: true
Testing method: DoGet
Server host: 172.31.11.18
Server port: 31337
Bytes read: 1280000000
Nanos: 2080762694
Speed: 586.661 MB/s
{code}
If we don't specify the {{server_host}} flag on the server side, it will
explicitly says it's serving locally:
{code}
ubuntu@ip-172-31-11-18:~/arrow/cpp/for_flight/debug$ ./arrow-flight-perf-server
Server host: localhost
Server port: 31337
{code}
> [C++][Flight] Running Arrow Flight benchmark on two hosts doesn't work
> ----------------------------------------------------------------------
>
> Key: ARROW-7200
> URL: https://issues.apache.org/jira/browse/ARROW-7200
> Project: Apache Arrow
> Issue Type: Bug
> Components: Benchmarking, C++, FlightRPC
> Affects Versions: 0.15.0, 0.15.1
> Environment: AWS EC2
> Instance type: t3a.xlarge
> AMI: ubuntu/images/hvm-ssd/ubuntu-bionic-18.04-amd64-server-20191002
> Number of instances: 2
> They are capable of pinging each other.
> Reporter: Chengxin Ma
> Priority: Major
> Fix For: 1.0.0
>
> Attachments: Screen Shot 2019-11-18 at 16.00.38.png, Screen Shot
> 2019-11-19 at 14.41.40.png
>
>
> I was trying to evaluate the performance of Apache Arrow Flight on two hosts
> (one as the client and the other one as the server), using [the official
> benchmark|[https://github.com/apache/arrow/blob/master/cpp/src/arrow/flight/flight_benchmark.cc]].
> Flags I used to build the project were:
>
> {code:java}
> -DARROW_FLIGHT=ON
> -DCMAKE_BUILD_TYPE=Debug
> -DARROW_BUILD_BENCHMARKS=ON
> {code}
>
> The branch I used was maint-0.15.x since there was a build error on the
> master branch. _(The build error on master only existed in the environment
> where I set up two hosts: AWS. On my local environment (macOS) the build was
> successful on the master branch. I don't think this build error is relevant
> to the issue since there is no difference in the cpp source code.)_
> On the host acting as the server, I ran
> {code:java}
> ./arrow-flight-perf-server{code}
> On the host acting as the client, I ran
> {code:java}
> ./arrow-flight-benchmark --server_host ip-172-31-11-18{code}
> It gives the following error:
> {code:java}
> Failed with error: << IOError: gRPC returned unavailable error, with message:
> Connect Failed. Detail: Unavailable{code}
>
> If I ran
> {code:java}
> ./arrow-flight-benchmark --server_host ip-172-31-11-17{code}
> the error will be different:
> {code:java}
> IOError: Server was not available after 10 attempts{code}
> This is understandable since this host doesn't exist at all.
> This indicates that Flight is able to find the existing host
> (ip-172-31-11-18), but the communication somehow didn't succeed.
> The benchmark works fine if I run it with the localhost, either by not
> specifying the server_host flag or running the server in another process on
> the same host.
> I am not sure if the problem is in the environment or in the code itself.
> Could someone please give me some hint on how to resolve the problem?
--
This message was sent by Atlassian Jira
(v8.3.4#803005)