因为数据量的原因,公司安排我去搭建一个使用presto查询引擎的环境,几经周折,勉强搭建了一个出来,在这里做一下经验总结。
环境:
VM虚拟机,安装centos6.6,Mysql5.6
安装的软件包:
apache-hive-1.2.1-bin.tar.gz,sqoop-1.4.6.bin__hadoop-2.0.4-alpha.tar.gz(注意,这个包只对应hadoop2.*)
hadoop-2.6.0-cdh5.4.4.tar.gz(hadoop包有cdh和apache的,不过国内用的cdh比较多)
安装的过程按照基本的文档就超不多了,但是有需要注意的地方(防火墙要注意)
1、hive版本当前使用需要启动metastore和hiveserver2服务,注意是hiveserver2的服务,新版本里面对hiveserver已经停止使用,但是命令依然存在,报ClassNotFoundException(hive.site.xml配一下thrift的端口和url,提供presto使用)
2、在启动hive的时候偶尔会报exec.*.jar这中错误,注意/etc/profile下的HIVE_HOME是否有正确配置,执行source /etc/profile即可
3、squoop提供对hive导入数据的功能,但是已经存在的表无法进行导入,需要在hadoop/bin下执行 hadoop fs -ls查看当前hdfs已经存有的表数据,通过 hadoop fs -rmr xxx进行xxx数据的删除
4、presto注意在etc/catalog下配置需要连接的库的properties文件,在etc/config.properties下注意写入连接的对象的properties文件名
5、想到了再写...
结果 :
通过2个虚拟机,一个master节点,一个node节点进行数据的查询,1kw的数据量,12字段的宽表,
通过执行select count(1) 进行查询 (平均)
Mysql : 13s
Hive : 7s
presto : 5s
结果presto的速率不是很理想,目前可能影响其性能的原因是在虚拟机上面效果的是同一个机子的IO,CPU性能,达不到分布式系统的真正效果,这个待以后通过实机去测试