Apache Drill:为客户端设置ZK失败

时间:2016-08-01 21:25:15

标签: apache-drill apache-zookeeper

我正在使用两个服务器群集测试Apache Drill。

我们说他们的外部IP是:

1.1.1.1
2.2.2.2

我首先设置Zookeeper在两者上运行,当我执行status命令时,我得到肯定的响应:

ZooKeeper JMX enabled by default
Using config: /opt/zookeeper-3.4.8/bin/../conf/zoo.cfg
Mode: leader

我让zoo.cfg让它工作的方式是这样的:

服务器1:

// other default values omitted
clientPort=2181
server.1=0.0.0.0:2888:3888
server.2=2.2.2.2:2888:3888

服务器2:

// other default values omitted
clientPort=2181
server.1=1.1.1.1:2888:3888
server.2=0.0.0.0:2888:3888

接下来我想让Drill运行这个集群,所以我修改了2个服务器的drill-override.conf文件,如下所示:

服务器1:

drill.exec: {
  cluster-id: "test",
  zk.connect: "1.1.1.1:2181,2.2.2.2:2181"
}

服务器2:

drill.exec: {
  cluster-id: "test",
  zk.connect: "2.2.2.2:2181,1.1.1.1:2181"
}

我可以在两台服务器上启动钻取,当我处于状态时,我会在两台服务器上获得此响应:

drillbit is running.

但是当我尝试通过bin / drill-conf打开控制台时,我得到了这个堆栈跟踪:

Error: Failure in connecting to Drill: org.apache.drill.exec.rpc.RpcException: Failure setting up ZK for client. (state=,code=0)
java.sql.SQLException: Failure in connecting to Drill: org.apache.drill.exec.rpc.RpcException: Failure setting up ZK for client.
        at org.apache.drill.jdbc.impl.DrillConnectionImpl.<init>(DrillConnectionImpl.java:159)
        at org.apache.drill.jdbc.impl.DrillJdbc41Factory.newDrillConnection(DrillJdbc41Factory.java:64)
        at org.apache.drill.jdbc.impl.DrillFactory.newConnection(DrillFactory.java:69)
        at net.hydromatic.avatica.UnregisteredDriver.connect(UnregisteredDriver.java:126)
        at org.apache.drill.jdbc.Driver.connect(Driver.java:72)
        at sqlline.DatabaseConnection.connect(DatabaseConnection.java:167)
        at sqlline.DatabaseConnection.getConnection(DatabaseConnection.java:213)
        at sqlline.Commands.connect(Commands.java:1083)
        at sqlline.Commands.connect(Commands.java:1015)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:606)
        at sqlline.ReflectiveCommandHandler.execute(ReflectiveCommandHandler.java:36)
        at sqlline.SqlLine.dispatch(SqlLine.java:742)
        at sqlline.SqlLine.initArgs(SqlLine.java:528)
        at sqlline.SqlLine.begin(SqlLine.java:596)
        at sqlline.SqlLine.start(SqlLine.java:375)
        at sqlline.SqlLine.main(SqlLine.java:268)
Caused by: org.apache.drill.exec.rpc.RpcException: Failure setting up ZK for client.
        at org.apache.drill.exec.client.DrillClient.connect(DrillClient.java:208)
        at org.apache.drill.jdbc.impl.DrillConnectionImpl.<init>(DrillConnectionImpl.java:151)
        ... 18 more
Caused by: java.io.IOException: Failure to connect to the zookeeper cluster service within the allotted time of 10000 milliseconds.
        at org.apache.drill.exec.coord.zk.ZKClusterCoordinator.start(ZKClusterCoordinator.java:123)
        at org.apache.drill.exec.client.DrillClient.connect(DrillClient.java:206)
        ... 19 more
apache drill 1.7.0
"start your sql engine"

为什么钻取功能无法连接到运行良好的ZK集群?

所有端口都在这两个框之间打开。

1 个答案:

答案 0 :(得分:1)

预要件

Prerequisites用于以分布式模式启动钻取:

  • (必需)运行Oracle JDK版本7
  • (必需)运行ZooKeeper仲裁
  • (推荐)运行Hadoop集群
  • (推荐)使用DNS

配置

作为您的服务器IP地址:

  • 服务器1 - 1.1.1.1
  • 服务器2 - 2.2.2.2

在服务器1和服务器2中的zoo.cfg中放置相同的配置

clientPort=2181
server.1=1.1.1.1:2888:3888
server.2=2.2.2.2:2888:3888

drill-override.conf两个服务器

的配置相同
drill.exec: {
  cluster-id: "test",
  zk.connect: "1.1.1.1:2181,2.2.2.2:2181"
}

开始练习

使用

所有群集节点上启动 drillbit
bin/drillbit.sh start

使用Drill

  • 网络用户界面:

    使用任何节点地址打开Web UI。例如:

      

    1.1.1.1:8047

  • 通过Shell:

    将显示Fire bin/drill-localhost命令和钻取shell。

验证安装

来自钻井外壳或用户界面火灾

SELECT * FROM sys.drillbits;

Drill列出有关正在运行的Drillbits的信息

停止练习

消防指令

bin/drillbit.sh stop