关于Hadoop网络系统调用

时间:2012-03-01 09:19:53

标签: networking hadoop jvm system-calls

  1. 由于在hadoop src中使用Socket,猜猜它是发送/接收消息和文件的TCP连接,对吗?
  2. JVM如何将这些Socket实例转换为Linux系统调用,是socket / send,还是select / poll?
  3. 如果是关于select / poll的话,我仍然可以通过相对套接字系统调用获取ip / port,对吗?
  4. 当我在terasort(1个主服务器,3个从服务器)中收集所有sys_calls时,我得到了罕见的connect / accept / socket sys_calls,并且它们在sockaddr结构中没有任何LAN ip(0或奇怪的,IPv4) 。有一串select / poll sys_calls,这是合理的吗?

1 个答案:

答案 0 :(得分:0)

  1. 您可以使用“netstat --tcp -n”命令检查当前的tcp连接。我想Hadoop应该使用TCP。

  2. 您可能需要使用strace来启动Hadoop JVM。 strace将打印正在运行的应用程序使用的系统调用。通常的应用程序使用sys_poll来检查连接FD的状态,并使用read / write或sendto / recvfrom系统调用来接收传输数据包。

  3. 对,这些系统调用只在通过sys_socket系统调用进行连接设置时调用一次,然后应用程序在该套接字上进行多次轮询,传输或接收操作。