文章目录
PrestoDB 官方并没有提供 Docker 镜像,但是其为我们提供了制作 Docker 镜像的方法,步骤很简单。本文主要是用于学习交流,并为大家展示如何制作并运行简单的的 Docker 镜像,Dockerfile 的编写大量参考了 PrestoDB 的文档。因为这里仅仅是测试,所以仅留了 tpch connecter,大家可以根据自己需求去修改。
准备配置文件
首先我们在本地创建一个名为 etc
的文件夹,文件夹里面的目录结构如下:
etc ├── catalog │ └── tpch.properties ├── config.properties ├── jvm.config └── log.properties
log.properties、jvm.config、config.properties 和 tpch.properties 文件内容如下。
注意:因为这里仅仅是一个 DEMO,大家可以根据自己需求去修改相关文件的配置。
log.properties 内容
com.facebook.presto=INFO com.sun.jersey.guice.spi.container.GuiceComponentProviderFactory=WARN com.ning.http.client=WARN com.facebook.presto.server.PluginManager=DEBUG
jvm.config
-server -Xmx4G -XX:+UseG1GC -XX:G1HeapRegionSize=32M -XX:+UseGCOverheadLimit -XX:+ExplicitGCInvokesConcurrent -XX:+HeapDumpOnOutOfMemoryError -XX:+ExitOnOutOfMemoryError -Djdk.attach.allowAttachSelf=true
config.properties
node.id=ffffffff-ffff-ffff-ffff-ffffffffffff node.environment=production http-server.http.port=8080 node.ip=localhost discovery-server.enabled=true discovery.uri=http://localhost:8080 exchange.http-client.max-connections=1000 exchange.http-client.max-connections-per-server=1000 exchange.http-client.connect-timeout=1m exchange.http-client.idle-timeout=1m scheduler.http-client.max-connections=1000 scheduler.http-client.max-connections-per-server=1000 scheduler.http-client.connect-timeout=1m scheduler.http-client.idle-timeout=1m query.client.timeout=5m query.min-expire-age=30m presto.version=testversion node-scheduler.include-coordinator=true
tpch.properties
connector.name=tpch
制作 Presto Docker 镜像
编写 Dockerfile
为了制作一个 Docker 镜像,我们首先需要编写一个 Dockerfile 文件,关于如何编写一个 Dockerfile 请参见这里。下面是一个简单的 Presto Docker 镜像构建步骤:=
FROM amd64/centos:7 RUN yum install java -y # Presto version will be passed in at build time ARG PRESTO_VERSION # Set the URL to download ARG PRESTO_BIN=https://repo1.maven.org/maven2/com/facebook/presto/presto-server/${PRESTO_VERSION}/presto-server-${PRESTO_VERSION}.tar.gz # Update the base image OS and install wget and python RUN yum install less -y && yum -y install wget # Download Presto and unpack it to /opt/presto RUN wget --quiet ${PRESTO_BIN} RUN mkdir -p /opt RUN tar -xf presto-server-${PRESTO_VERSION}.tar.gz -C /opt RUN rm presto-server-${PRESTO_VERSION}.tar.gz RUN ln -s /opt/presto-server-${PRESTO_VERSION} /opt/presto # Copy configuration files on the host into the image COPY etc /opt/presto/etc # Download the Presto CLI and put it in the image RUN wget --quiet https://repo1.maven.org/maven2/com/facebook/presto/presto-cli/${PRESTO_VERSION}/presto-cli-${PRESTO_VERSION}-executable.jar RUN mv presto-cli-${PRESTO_VERSION}-executable.jar /usr/local/bin/presto RUN chmod +x /usr/local/bin/presto # Specify the entrypoint to start ENTRYPOINT /opt/presto/bin/launcher run
构建镜像
编写好 Dockerfile 之后,我们就可以使用 Docker 的 build 去构建镜像了,这里我使用了当前最新的 Presto 版本 (0.265.1),构建命令如下:
docker build -t prestodb:v1 ./ --build-arg PRESTO_VERSION=0.265.1
构建好之后,我们就可以看到刚刚创建好的镜像:
[iteblog@iteblog.com ~]$ docker images REPOSITORY TAG IMAGE ID CREATED SIZE prestodb v1 2ef166fb88b2 About a minute ago 3.3GB <none> <none> 8b185edcbc0c 9 hours ago 3.3GB <none> <none> e6f6fcd55df8 21 hours ago 2.99GB amd64/centos 7 eeb6ee3f44bd 2 months ago 204MB
使用 Presto 镜像
上面我们仅仅是创建了一个 Presto 镜像,为了使用它,我们可以使用下面命令运行镜像:
[iteblog@iteblog.com ~]$ docker run --name presto prestodb:v1
当你看到最后一行输出 ======== SERVER STARTED ========
说明镜像启动成功。我们可以使用下面命令去连接刚刚启动的 Presto 集群,并且可以执行一些查询:
[iteblog@iteblog.com ~]$ docker exec -it presto presto presto> show catalogs; Catalog --------- system tpch (2 rows) Query 20211119_093005_00000_49djq, FINISHED, 1 node Splits: 19 total, 19 done (100.00%) 0:25 [0 rows, 0B] [0 rows/s, 0B/s] presto> select count(*) from tpch.sf1.lineitem; _col0 ---------- 15000000 (1 row) Query 20211119_100422_00000_vzqg2, FINISHED, 1 node Splits: 21 total, 21 done (100.00%) 1:05 [15M rows, 0B] [232K rows/s, 0B/s]本博客文章除特别声明,全部都是原创!
原创文章版权归过往记忆大数据(过往记忆)所有,未经许可不得转载。
本文链接: 【创建 Presto Docker 镜像教程】(https://www.iteblog.com/archives/10089.html)