Arrow flight protocol

hi @rymurr
yes, figured its just a typo in README.md
-Denabled

I see you published ver 4.1.8 in docker hub, any specific changes related to flight protocol in this version?

Hey @smora,

There is nothing in 4.1.8 that should affect flight. Please let us know if I am wrong!

Best,
Ryan

Hi @rymurr, when you planning to release dremio-oss image with arrow flight protocol ?

Hey @VahagnBleyan,

We are currently working to incorporate the plugin into the product. In the meantime check out https://github.com/dremio-hub/dremio-flight-connector/blob/master/Dockerfile this is an example of how to easily add the flight connector to the dremio-oss image.

Hi @rymurr

I m facing a similar issue. I tried connecting to dremio using python , but getting an error as:

File “pyarrow/_flight.pyx”, line 944, in pyarrow._flight.FlightClient.authenticate
File “pyarrow/_flight.pyx”, line 68, in pyarrow._flight.check_flight_status
pyarrow._flight.FlightUnavailableError: gRPC returned unavailable error, with message: failed to connect to all addresses

Hey @Rutuja,

It is hard to say from this only:

  1. what version of Dremio are you using
  2. what version of the flight connector are you using
  3. can you verify in the server logs that the flight connector has started
  4. can you telnet to port 47470 from localhost or from an external machine

Best,
Ryan

Hi @rymurr
looks like host binding fix is broken in latest ver of dremio(>=4.1)

after specifying -Ddremio.flight.host=0.0.0.0, service is still attached to local ip

dremio@dremio-master-0:/opt/dremio$ ss -tuln
Netid State      Recv-Q Send-Q                                                                             Local Address:Port                                                                                            Peer Address:Port              
tcp   LISTEN     0      128                                                                           ::ffff:10.42.4.109:47470                                                                                                     :::*                  
tcp   LISTEN     0      128                                                                                           :::45678                                                                                                     :::*                  
tcp   LISTEN     0      50                                                                                            :::9047                                                                                                      :::*                  
tcp   LISTEN     0      1                                                                               ::ffff:127.0.0.1:42744                                                                                                     :::*                  
tcp   LISTEN     0      128                                                                                           :::31010                                                                                                     :::*                  
dremio@dremio-master-0:/opt/dremio$

hey @smora this flag was removed in the flight connector and flight should bind to all interfaces now, see https://github.com/dremio-hub/dremio-flight-connector for the updated jvm params

hi @rymurr
same result with all these options

-Ddremio.flight.host=0.0.0.0
-Ddremio.flight.host=localhost
did not specify -Ddremio.flight.host

in all the cases service is binding to local ip address and remote clients not able to establish a connection
could it be related to ssl changes? i see InetAddress.getlocalHost().getHostName() is passed to sslHelper by default

:ffff:10.42.4.109:47470 instead of ::::47470

1 Like

Hi,

we have latest version of Dremio on Docker, and we also cannot manage to access remote Arrow flight.

From host to container works:
telnet 172.17.0.2 32010
Trying 172.17.0.2…
Connected to 172.17.0.2.

But remote, not. Iptables rules are forwarding, but there is no listening port 32010 on all interfaces.

@mtance Is the IP your coordinator host? When you say “cannot manage to access remote Arrow flight.”, do you see an error? Can you please share more info

This is info from settings:

So, If I want to connect to Arrow Flight (using telnet) on coordinator host via 172.17.0.2:32010 it is working, but if I want to connect on coordinator host via external WAN IP, it is not working. Iptables firewall rule in made, so there is issue with binding service port 32010 on Dremio I think.

@mtance

What is the exact error you are getting?

Hi,

when I tried to connect from host to container - locally I got telnet Connection successfull, when I try to connect outside - via internet i got Connection timed out (before I make firewall iptables rule I got Connection refused).

Thanks

@mtance

Have you checked with your network team on why connection timed out, can you ping “172.17.0.2” continuously?

Hi,

localy from host to Dremio container it is working properly.
[root@srv~]# telnet 172.17.0.2 32010
Trying 172.17.0.2…
Connected to 172.17.0.2.

Iptables on Docker host
Chain DOCKER (2 references)
target prot opt source destination
RETURN all – anywhere anywhere
DNAT tcp – anywhere anywhere tcp dpt:32010 to:172.17.0.2:32010
DNAT tcp – anywhere anywhere tcp dpt:eba to:172.17.0.2:45678
DNAT tcp – anywhere anywhere tcp dpt:31010 to:172.17.0.2:31010
DNAT tcp – anywhere anywhere tcp dpt:9047 to:172.17.0.2:9047

Dremio container bindings:
dremio@4c83a382cb88:/opt/dremio$ ss -tuln
Netid State Recv-Q Send-Q Local Address:Port Peer Address:Port
tcp LISTEN 0 1 127.0.0.1:35711 0.0.0.0:*
tcp LISTEN 0 128 0.0.0.0:31010 0.0.0.0:*
tcp LISTEN 0 50 0.0.0.0:2181 0.0.0.0:*
tcp LISTEN 0 128 0.0.0.0:32010 0.0.0.0:*
tcp LISTEN 0 128 0.0.0.0:45678 0.0.0.0:*
tcp LISTEN 0 128 0.0.0.0:32817 0.0.0.0:*
tcp LISTEN 0 50 0.0.0.0:9047 0.0.0.0:*

I think there should be issue with binding port on Docker Dremio image settings. Maybe there is no port 32010 defined?

@mtance

Any chance you can test this in a non-docker deployment like a GCE VM? just to narrow down that it is something to do with Docker?

Unfortunately not. We need to have in Docker.

Hi, anyone has a solution? I thinks there is issue with docker image, that isn’t bind port 32010 by default.

@mtance

Let us try something, change the ODBC/JDBC port to 32010 and use 31010 for flight and see if flight works and ODBC breaks, just to narrow down the issue

In dremio.conf add
services.coordinator.client-endpoint.port: 32010
services.coordinator.flight.port: 31010

Restart cluster