为什么要使用presto
不便之处
Hadoop:存储和计算(mr);mr编程太麻烦
Hive:使用sql语句,大大的简化了mr;hive将用户写的sql语句转换成mr代码,递给hadoop
缺点:
动不动起mr,耗时比较长
不建议更新和删除;
Hbase:强烈建议更新和删除;查询特别快,(CRUD);hbase有自己的命令和语法;
缺点:需要自己再学一套hbase的命令和语法;用hive来弥补了,可以使用sql语句来连接hbase;Phoniex:和hive是竞争对手;也提供了一个类似于sql语句的功能;
hive慢的问题
presto和impala(apache:http://impala.apache.org/)是竞争对手
官网:https://prestodb.github.io/;facebook
帮助手册:
架构图
Presto:不是数据库(不是mysql,)
概念:
Coordinator:大哥;namenode;
Worker:小弟;datanode
Data Sources:Hive,Mysql,
Connector:worker读取数据通过connector读取数据,数据存储在数据源上
下载:
- 实战训练
- 启动zookeeper集群
- 启动hadoop集群
- 启动hive
- 启动hbase
- 选择在node-1上操作
- 将presto-server-xx.tar.gz(presto-server-0.214.tar.gz)上传到服务器上(node-1)
- 所有的操作都在/data/presto下面
# 解压缩
tar -xzf presto-server-0.214.tar.gz
重命名
mv presto-server-0.214 presto-server
配置文件;(都放在了根目录下面的etc目录);
etc/node.properties
# 环境名称。集群中的所有Presto节点必须具有相同的环境名称。
node.environment=production
# 此Presto安装的唯一标识符不能重复
node.id=presto-1
# 数据目录的位置(文件系统路径)。Presto将在这里存储日志和其他数据。
node.data-dir=/data/presto/data
日志级别:etc/log.properties
com.facebook.presto=INFO
etc/jvm.config
-server
-Xmx5G
-XX:+UseG1GC
-XX:G1HeapRegionSize=32M
-XX:+UseGCOverheadLimit
-XX:+ExplicitGCInvokesConcurrent
-XX:+HeapDumpOnOutOfMemoryError
-XX:+ExitOnOutOfMemoryError
etc/config.properties
# 允许这个Presto实例充当协调器;true:协调者,false:表示workers
coordinator=true
# 允许调度协调员的工作。对于较大的集群,对协调器的处理工作可能会影响查询性能,因为机器的资源无法用于调度、管理和监视查询执行的关键任务
node-scheduler.include-coordinator=true
# 指定HTTP服务器的端口。Presto使用HTTP进行所有内部和外部通信