presto-gateway 是 lyft 团队开源 的prestodb 的工具.以下是一个简单的试用,以及碰到问题的解决
还有就是docker 镜像的制作

Dockerfile

很简单,本地构建然后基于jdk 基础镜像,制作docker 镜像

  • 构建方法

    因为默认官方在运行的时候出现了一个索引的bug(主要是因为api 状态处理引起的),所以使用了我自己的版本

git clone https://github.com/rongfengliang/presto-gateway.git
cd presto-gateway 
mvn clean pacakge
  • Dockerfile
FROM azul/zulu-openjdk-alpine:8u222
LABEL AUTHOR="dalongrong"
LABEL EMAIL="1141591465@qq.com"
LABEL VERSION="1.6.1"
WORKDIR /
COPY gateway/target/gateway-1.6.1-jar-with-dependencies.jar /gateway.jar
COPY config.yml.template /config.yml.template
COPY entrtypoint.sh /entrtypoint.sh
RUN chmod +x /entrtypoint.sh
EXPOSE 8888 
ENTRYPOINT [ "/entrtypoint.sh"]

集成gateway 试用

  • docker-compose 文件
version: "3"
services:
  proxy:
     image: dalongrong/presto-gateway:1.6.1
     ports:
     - "8888:8888"
     - "8082:8082"
     - "8083:8083"
     build: ./
     volumes:
     - "./config.yml.template:/config.yml.template"
  presto1:
     image: starburstdata/presto
     ports:
     - "8080:8080"
  presto2:
     image: starburstdata/presto
     ports:
     - "8081:8080"
  • proxy 配置文件
requestRouter:
  port: 8888
  name: prestoRouter
  cacheDir: /var/log/prestoproxy/cache
  historySize: 1000
backends:
  - localPort: 8082
    name: presto1
    proxyTo: http://presto1:8080
    routingGroup: adhoc
  - localPort: 8083
    name: presto2
    proxyTo: http://presto2:8080
    routingGroup: scheduled
server:
  applicationConnectors:
    - type: http
      port: 8090
  adminConnectors:
    - type: http
      port: 8091
notifier:
  smtpHost: localhost
  smtpPort: 587
  sender: presto-gw-monitor-noreply@lyft.com
  recipients:
    - prestodev@yourorg.com
modules:
  - com.lyft.data.gateway.module.ProxyBackendProviderModule
  - com.lyft.data.gateway.module.GatewayProviderModule
  - com.lyft.data.gateway.module.NotifierModule
managedApps:
  - com.lyft.data.gateway.GatewayManagedApp
  - com.lyft.data.gateway.ActiveClusterMonitor
# Logging settings.
logging:
  # The default level of all loggers. Can be OFF, ERROR, WARN, INFO, DEBUG, TRACE, or ALL.
  level: INFO
  # Logger-specific levels.
  loggers:
    com.lyft: DEBUG
  appenders:
    - type: console
    - type: file
      currentLogFilename: /var/log/prestoproxy/prestoproxy-java.log
      archivedLogFilenamePattern: /var/log/prestoproxy/prestoproxy-java-%d{yyyy-MM-dd}-%i.log.gz
      archivedFileCount: 7
      timeZone: UTC
      maxFileSize: 100MB

nodejs client 调用

为了使用方便,修改了一现有nodejs 的presto client 支持presto-gateway

  • 代码
var presto = require('@dalongrong/presto-client');
var client = new presto.Client({
  user: 'appdemo',
  host: "localhost",
  port: 8888
});
client.execute({
  query: 'select * from nation2',
  catalog: 'memory',
  schema: 'default',
  source: 'nodejs-client',
  routingGroup: 'scheduled',
  state: function (error, query_id, stats) {
    console.log(error)
    console.log({
      message: "status changed",
      id: query_id,
      stats: stats
    });
  },
  columns: function (error, data) {
    console.log({
      resultColumns: data
    });
  },
  data: function (error, data, columns, stats) {
    console.log(data);
  },
  success: function (error, stats) {
    console.log(stats)
  },
  error: function (error) {
    console.log(error)
  }
});

访问界面效果

说明

对于使用可以参考官方文档,官方的截图目前有点问题,但是presto-gateway是一个很不错的工具,可以简化我们对于presto 的管理

参考资料

https://github.com/rongfengliang/presto-gateway
https://github.com/rongfengliang/presto-client-node
https://github.com/lyft/presto-gateway

最新文章

  1. 大朋展翅 html5上传图片(三)一解决部分手机拍相册批量上传图片转向问题
  2. tableView显示第一个cell有偏移问题
  3. Linux内核笔记——内存管理之slab分配器
  4. 学习zepto.js(对象方法)[1]
  5. Java异常捕获之try-catch-finally-return的执行顺序-转载
  6. 使用StarUML创建类图
  7. 016. asp.net的验证控件
  8. 如何使用NET Reactor为您的.Net(C#,VB.Net) 源代码加密
  9. 安卓使用WIFI调试程序
  10. 关于SVN版本控制器的问题与解决方法
  11. Python什么是二次开发的意义?python在.net项目采用
  12. Android网络通信android-async-http入门
  13. jquery.imagezoom.js制作鼠标悬停图片放大镜特效、参数和最简教程
  14. flask 之定时任务开发
  15. Wes7 剪裁方法
  16. python 用xlwt包把数据导出到excel表中
  17. 关于layui富文本编辑器和form表单提交的问题
  18. liunx 安装jdk1.8
  19. loadrunner java ssh
  20. 【Python】【有趣的模块】tqdm | inspect

热门文章

  1. pytest_全局变量的使用
  2. SQL系列(十三)—— 关于表的DDL
  3. 封装:WPF基于MediaElement封装的视频播放器
  4. winform+cefSharp实现窗体加载浏览器
  5. 6.Javascript如何处理循环的异步操作
  6. 《高性能javascript》随笔
  7. 剑指前端(前端入门笔记系列)——DOM(属性节点)
  8. Java 之 Arrays 类
  9. Scroller——startScroll、fling(惯性滑动)
  10. The server time zone value '�й���׼ʱ��' is unrecognized or represents more than one time zone 。