Presto0.167安装部署

news/2024/7/10 21:49:53 标签: 开源, hadoop, 服务器, presto

转载请注明出处:http://blog.csdn.net/u012842205/article/details/61622565


一、简介

Presto作为一种分布式数据SQL引擎,致力于交互式的类SQL(兼容 ASCI SQL)低延迟查询(秒级到分钟级),完全基于内存的运行计算。支持多种数据源查询,包括Hive,Cassandra,甚至是关系型数据库。其支持处理的数据量在GB到PB之间。。由Facebook提供开源,目前国内Presto京东版本有开源。目前官方没有提供Presto到HBase的集成方案(Connector)。

本文主要叙述在分布式节点上搭建Presto服务的整个过程与所遇到的注意事项。笔者搭建Presto主要利用Hive元数据,实现SQL对HDFS文件(由Hive映射成表)的交互式查询。所依赖的组件如下,其安装过程本文不再赘述:

Apache HDFS 2.7.3

Apache Hive 2.1.1

JDK 1.8.0
以上所有组件运行于CentOS系统:CentOS Linux release 7.2.1511 (Core)。

Presto安装版本为0.167。分布式环境为一个master节点和五个slave节点。其中master节点运行coordinary,所有slave节点各自运行一个worker。

注意:Presto官方文档建议所有worker都运行在有DataNode实例的节点上(本文中五个slave节点都各运行了一个HDFS的DataNode)。


二、安装

presto安装比较简单。从官方网站下载0.167版本的Presto部署包(https://repo1.maven.org/maven2/com/facebook/presto/presto-server/0.167/presto-server-0.167.tar.gz,从这个地址可以看出部署包发布在maven镜像中)。

1、源码安装

若不是源码安装而是直接下载了部署包,请跳过此小结直接解压。源码安装资料主要看github的README。使用源码还需安装maven和python,用于编译过程。笔者安装过程中使用的版本如下:

Python 2.7.13
Apache Maven 3.3.0

解压源码后,进入项目根目录,编译:

# 编译并测试
mvn clean install

# 编译不测试
mvn clean install -DskipTests
待编译完成后将在目录prestodb-server-rpm的target/dependency下产生部署包(后缀*.tar.gz),此部署包与从maven镜像下载的基本一样。


2、解压

将部署包直接复制到各个节点并解压。部署根路径有如下主要目录:

plugin/:所有插件(Connector),Presto支持链接的数据源,如Cassandra,Hive等,Presto通过插件进行数据源的扩展。

lib/:所有依赖jar。

bin/:运行脚本。


3、配置

Presto配置非常清晰,配置文件有四个,分别配置虚拟机(jvm.config)、集群信息(config.properties)、节点信息(node.properties)和日志配置(log.properties)。所有配置文件存在部署根目录的etc/路径下,若没有此路径请自行创建(使用mkdir)。各个节点配置可以一致,也可以按照节点硬件性能个性化配置。

(1)jvm.config

此配置文件中所有配置项与jvm配置项相同,且每行配置一项。由于这些选项不在shell命令中使用。 因此即使将每个选项通过空格或者其他的分隔符分开,presto程序也不会将这些选项分开,而是作为一个命令行选项处理。以下是示例配置:

-server
-Xmx4G
-XX:+UseG1GC
-XX:+HeapDumpOnOutOfMemoryError
-XX:G1HeapRegionSize=32M
-XX:PermSize=2G


-Xmx4G表示配置了4G最大堆内存

-XX:PermSize=2G表示持久代最大为2G


(2)集群信息

config.properties是最重要的配置文件,主要配置当前节点的运行角色和一些集群相关信息。

coordinator = true
node-scheduler.include-coordinator = true
http-server.http.port = 3600

discovery-server.enabled = true
discovery.uri = http://Master1:3600


coordinator表示此节点是否作为一个coordinator。每个节点可以是一个worker,也可以同时是一个coordinator,但作为性能考虑,一般大型机群最好将两者分开。

若coordinator设置成true,则此节点成为一个coordinator。若node-scheduler.include-coordinator设置成true,则成为一个worker,两者可以同时设置成true,此节点拥有两种身份。上面配置了此节点即是一个coordinator,又是一个worker。


http-server.http.port配置调用端口,此端口号3600用于客户端调用,用于节点间通信。

discovery-server.enabled:Presto 通过Discovery 服务来找到集群中所有的节点。为了能够找到集群中所有的节点,每一个Presto实例都会在启动的时候将自己注册到discovery服务。Presto为了简化部署,并且也不想再增加一个新的服务进程,Presto coordinator 可以运行一个内嵌在coordinator 里面的Discovery 服务。这个内嵌的Discovery 服务和Presto共享HTTP server并且使用同样的端口。

另外还有一些配置,这里再提一个内存配置,每个task所能使用的最大memory:

task.max-memory=1GB

(3)节点信息

node.properties主要配置节点的身份信息,用于集群中唯一识别。

node.environment = joinbright_presto
node.id = 562e42e2-e874-431f-8da5-cb779744cf7c
node.data-dir = /home/presto/data/presto-data

node.environment  表示集群名称,一个可以识别的字符串,注意,此配置项必须所有节点(处于同一集群)都配置相同

node.id  表示集群中能唯一识别的id,这个可以使用一个GUID,比如使用工具随机生成一个GUID,配置到这个字段上,注意:每个节点这个值都不相同

node.data-dir  数据存储目录的位置(操作系统上的路径)。Presto将会把日期和数据存储在这个目录下。


(4)日志配置

log.properties,此配置文件很像log4j的配置文件。但我没有尝试个性化配置。以下是官方文档的配置推荐。

com.facebook.presto = INFO

三、运行启动

每个节点都需要手动启动,切换到Presto部署根目录运行下面命令。

运行后台进程:

bin/launcher start

或者输入输出流直接写到stdout和stderr:

bin/launcher run
另外,使用--help可以获取帮助信息。


由于上例配置了node.data-dir路径,所以在此路径下的var/logs将会产生配置文件,目前有三个配置文件:

launcher.log: 这个日志文件由launcher创建,并且server的stdout和stderr都被重定向到了这个日志文件中。 这份日志文件中只会有很少的信息,包括在server日志系统初始化的时候产生的日志和JVM产生的诊断和测试信息。

server.log: 这个是Presto使用的主要日志文件。一般情况下,该文件中将会包括server初始化失败时产生的相关信息。这份文件会被自动轮转和压缩。

http-request.log: 这是HTTP请求的日志文件,包括server收到的每个HTTP请求信息,这份文件会被自动轮转和压缩。


四、参考资料

官网:https://prestodb.io

github:https://github.com/prestodb/presto

其他:

http://blog.csdn.net/joomlaer/article/details/45889759
http://prestodb-china.com/
http://tech.meituan.com/presto.html
http://www.linuxidc.com/Linux/2015-07/119958.htm




http://www.niftyadmin.cn/n/983352.html

相关文章

Kafka持久化至Hive,目前搜到大致有如下几种方案

1、HiveKa : Apache Hives storage handler that adds support in Apache Hive to query data from Apache Kafka https://github.com/HiveKa/HiveKa 2、Confluent Platform - HDFS Connector http://kaimingwan.com/post/kafka/kafkachi-jiu-hua-shu-ju-dao-hdfsde-fang-fa…

Apache Hive2.1.1安装部署

转载请注明出处:http://blog.csdn.net/u012842205/article/details/71713842 一、Apache Hive简介 Apache Hive是基于Hadoop的一个数据仓库工具,用于使用SQL语法查询、读取、写入和管理大数据量的分布式数据结构。可以将结构化的数据文件映射为一张数据…

Flume+HDFS+Kafka+Hive实例搭建

摘要:本文要实现的是一个使用Flume来处理Kafka的数据,并将其存储到HDFS中去,然后通过Hive外部表关联查询出来存储的数据。 所以在建立一个maven工程,整个工程最终的目录如下: 下面开始一步一步讲解 1、定义自己的sou…

Hive表操作及管理

转载请注明出处:http://blog.csdn.net/u012842205/article/details/72765667Hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供简单的sql查询功能,可以将sql语句转换为MapReduce任务进行运行。…

python 玩slack_投票给带有Slack的披萨:AWS Lambda中的Python

python 玩slack翻译自: https://www.pybloggers.com/2015/10/vote-for-pizza-with-slack-python-in-aws-lambda/python 玩slack

flume典型应用场景

1.flume不同Source、Sink的配置文件编写 (1)Source---spool 监听是一个目录,这个目录不能有子目录,监控的是这个目录下的文件。采集完成,这个目录下的文件会加上后缀(.COMPLETED)配置文件&…

TDengine在浙商银行微服务监控中的实践

楼永红 王轩宇|浙商银行 浙商银行股份有限公司(简称“浙商银行")是 12 家全国性股份制商业银行之一,总部设在浙江杭州,全国第13家"AH"上市银行,致力于打造平台化服务银行,为客户…

ScienceCluster:相同的工具,更好的工作场所

介绍 (Introduction) Every data scientist has his or her favorite tools. We understand that your toolbox is carefully curated. We also know that each member of your team has different preferences. That’s why we’ve built all of your favorite tools (and you…