版权声明:本套技术专栏是做者(秦凯新)平时工做的总结和升华,经过从真实商业环境抽取案例进行总结和分享,并给出商业应用的调优建议和集群环境容量规划等内容,请持续关注本套博客。版权声明:禁止转载,欢迎学习。node
安装presto后,需另建一个文件夹用于存储日志、本地元数据等的数据目录。数据库
config.properties :运维
coordinator=true
node-scheduler.include-coordinator=false
http-server.http.port=9001
query.max-memory=50GB
query.max-memory-per-node=1GB
discovery-server.enabled=true
discovery.uri=http://bd-master:9001
复制代码
coordinator:指定是否运维Presto实例做为一个coordinator(接收来自客户端的查询情切管理每一个查询的执行过程) node-scheduler.include-coordinator:是否容许在coordinator服务中进行调度工做 服务发现(心跳)和HTTP服务均使用同一端口jvm
node.propertiesoop
node.environment=test
node.data-dir=/usr/local/presto/logs
node.id=bd-master
复制代码
node.environment: 集群名称, 全部在同一个集群中的Presto节点必须拥有相同的集群名称 node.id: 每一个Presto节点的惟一标示。每一个节点的node.id都必须是惟一的。在Presto进行重启或者升级过程当中每一个节点的node.id必须保持不变。若是在一个节点上安装多个Presto实例(例如:在同一台机器上安装多个Presto节点),那么每一个Presto节点必须拥有惟一的node.id node.data-dir: 数据存储目录的位置(操做系统上的路径), Presto将会把日期和数据存储在这个目录下学习
jvm.configspa
-server
-Xmx16G
-XX:+UseConcMarkSweepGC
-XX:+ExplicitGCInvokesConcurrent
-XX:+CMSClassUnloadingEnabled
-XX:+AggressiveOpts
-XX:+HeapDumpOnOutOfMemoryError
-XX:OnOutOfMemoryError=kill -9 %p
-XX:ReservedCodeCacheSize=150M
-DHADOOP_USER_NAME=admin
复制代码
启动Java虚拟机所须要的命令行参数,注意集群中全部节点的jvm配置须一致操作系统
设置logger的最小日志级别。 com.facebook.presto=INFO 该设置表示对于使用logger类的com.facebook.presto.server和com.facebook.presto.hive来讲,二者的最小日志级别都是INFO级别。命令行
在该目录下新建一个文件hive.properties ,内容以下:rest
connector.name=hive-hadoop2
hive.metastore.uri=thrift://10.44.219.80:9083
hive.allow-drop-table=true
hive.allow-rename-table=true
hive.config.resources=/usr/local/soft/install/hadoop-2.7.6/etc/hadoop/core-site.xml,/usr/local/soft/install/hadoop-2.7.6/etc/hadoop/hdfs-site.xml
hive.metastore-cache-ttl=0s
hive.metastore-refresh-interval=1s
复制代码
hive-hadoop2 为支持hadoop 2.x版本的链接器,链接hive元数据库的uri,端口默认是9083,而且容许删除和更名表,还必须在hive.config.resources添加hadoop的配置文件位置。 注意运行presto前,要之后台的形式打开hive的metastore服务,输入如下指令:
hive - -service metastore &
复制代码
任意Worker节点只需修改config.properties 和node.properties,其他与主节点相同。
config.properties :
coordinator=false
http-server.http.port=9001
query.max-memory=50GB
query.max-memory-per-node=1GB
discovery.uri=http://bd-master:9001
复制代码
node.properties
node.environment=test
node.data-dir=/usr/local/presto/logs
node.id=bd-slave1
复制代码
node.id设置为worker的标志,其他不变
hive --service metastore --presto启动须要
$PRESTO_HOME/bin/launcher restart
$PRESTO_HOME/presto --server localhost:9001 --catalog hive --schema default
复制代码
对分值进行分桶,获得不一样区间内的数据 并 union all包含100分的值
width_bucket(x,bound1,bound2,n)
返回x指定的bound1和bound2界限的bin数量以及n个存储桶的数量
SELECT * from
(select concat(cast((width_bucket(device_health_score,0,100,10)-1)*10 as VARCHAR),'--',cast(width_bucket(device_health_score,0,100,10)*10-1 as VARCHAR))
as score_range, date_time,
COUNT(width_bucket(device_health_score,0,100,10)) as count from device_health_score_fact
where device_health_score >=0 and device_health_score <100
group by concat(cast((width_bucket(device_health_score,0,100,10)-1)*10 as VARCHAR ),'--',cast(width_bucket(device_health_score,0,100,10)*10-1 as VARCHAR)),date_time
)
UNION ALL (select cast(device_health_score as VARCHAR) as score_range,date_time,COUNT(device_health_score) from device_health_score_fact where device_health_score =100 group by device_health_score,date_time )
复制代码
秦凯新 于深圳