欢迎关注大数据技术架构与案例微信公众号:过往记忆大数据
过往记忆博客公众号iteblog_hadoop
欢迎关注微信公众号:
过往记忆大数据

创建 Presto Docker 镜像教程

PrestoDB 官方并没有提供 Docker 镜像,但是其为我们提供了制作 Docker 镜像的方法,步骤很简单。本文主要是用于学习交流,并为大家展示如何制作并运行简单的的 Docker 镜像,Dockerfile 的编写大量参考了 PrestoDB 的文档。因为这里仅仅是测试,所以仅留了 tpch connecter,大家可以根据自己需求去修改。


如果想及时了解Spark、Hadoop或者HBase相关的文章,欢迎关注微信公众号:过往记忆大数据

准备配置文件

首先我们在本地创建一个名为 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)
喜欢 (1)
分享 (0)
发表我的评论
取消评论

表情
本博客评论系统带有自动识别垃圾评论功能,请写一些有意义的评论,谢谢!