S3 存储插件

Drill 工作的数据存储在云端。通过一些简单的步骤,你可以配置 S3 存储插件到 Drill,关闭之前正在运行的查询。

连接 Drill 到 S3

启用的版本是 1.3.0,Drill 有能力去查询存储在 Amazon 的 S3 云端上的文件,配置其存储插件,并使用 S3 的依赖库。这是很重要的,因为 S3 增加了支持 5G 的文件。

这里有两个简单的步骤,如下所示:

  1. 提供你的 AWS 证书。
  2. 配置 S3 存储插件到 S3 bucket。

AWS 证书

启用 Drill 的 S3 支持,在你的 Drill 安装目录中,编辑 conf/core-site.xml 文件,替换 ENTER_YOUR_ACESSKEY 和 ENTER_YOUR_SECRETKEY 为你的 AWS 证书。

<configuration>

  <property>
    <name>fs.s3a.access.key</name>
    <value>ENTER_YOUR_ACCESSKEY</value>
  </property>

  <property>
    <name>fs.s3a.secret.key</name>
    <value>ENTER_YOUR_SECRETKEY</value>
  </property>

</configuration>

配置 S3 存储插件

启用 S3 存储插件,然后增加以下步骤:

  1. 在浏览器中输入 http://<your_drill_host>:8047,然后进入到 “Storage” 栏。
  2. 复制 “dfs” 插件。点击 “dfs” 插件的 “Update” 按钮,复制出现的 JSON 文本。
  3. 创建一个新的存储插件,并粘贴刚刚复制的 “dfs” 文本。
  4. 替换 “file:///” 为你的 “s3a://your.bucketname”。
  5. 你的新存储插件,可以取名为 “s3-<bucketname>”

你现在应该能够通过 S3a 库,使用存储在 S3 上的数据了。

示例 S3 存储插件

{
  "type": "file",
  "enabled": true,
  "connection": "s3a://apache.drill.cloud.bigdata/",
  "workspaces": {
    "root": {
      "location": "/",
      "writable": false,
      "defaultInputFormat": null
    },
    "tmp": {
      "location": "/tmp",
      "writable": true,
      "defaultInputFormat": null
    }
  },
  "formats": {
    "psv": {
      "type": "text",
      "extensions": [
        "tbl"
      ],
      "delimiter": "|"
    },
    "csv": {
      "type": "text",
      "extensions": [
        "csv"
      ],
      "delimiter": ","
    },
    ....

  }
}

在 S3 上查询 Parquet 格式文件

Drill 使用 Hadoop 文件系统读取 S3 输入的文件,这里使用了 Apache 的 HttpClient。HttpClient 有一个默认的四个同时请求的限制,并提出了后续的 S3 请求在队列中。Drill 查询大数据列或一个 Select * 查询,在 Parquet 格式文件请求失败,S3 会抛出 ConnectionPoolTimeoutException 异常。

幸运的是,在 Hadoop 2.7.1 中实现了 S3a 的该部分功能,HttpClient 的请求的限制参数的提取,通过配置能够避免 ConnectionPoolTimeoutException。下面是如何去设置相关参数到 conf/core-site.xml 文件中:

<configuration>
  ...

  <property>
    <name>fs.s3a.connection.maximum</name>
    <value>100</value>
  </property>

</configuration>
Copyright © smartloli 2016 all right reserved,powered by GitbookModify: 2016-08-26 06:59:28