presto集群与hadoop,hive集群整合

来源:互联网 发布:贾森基德职业生涯数据 编辑:程序博客网 时间:2024/06/06 08:29

Presto是一个开源的分布式SQL查询引擎,适用于交互式分析查询,数据量支持GB到PB字节。Presto的设计和编写完全是为了解决像Facebook这样规模的商业数据仓库的交互式分析和处理速度的问题。


集群涉及到的插件有hdfs,hive。presto版本:presto-0.152.3,hadoop版本hadoop-2.6.4,hive版本:hive-1.2.1,共三台集群。


遇到的主要问题有:

1.presto-0.152.3这个版本需要运行在jdk1.8以上

2.presto不支持lzo算法,我们目前集群的hadoop使用的lzo,暂时没找到适合的解决方案。

3.hive的jline比hadoop版本高,把hive下的jline替换到hadoop的lib下面

4.hive再插入数据的时候报错,列超过限制,需要mysql设置:alter database hive character set latin1;


一、hadoop配置好namenode,datanode。

二、hive配置:

1、hive-env.sh增加以下环境变量

export JAVA_HOME=/home/dc/dep/soft/java/jdk1.8.0_91
export HADOOP_HOME=/home/dc/dep/soft/hadoop/hadoop-2.6.4
e
xport HIVE_HOME=/home/dc/dep/soft/hive/hive-1.2.1

2、新建hive-site.xml

<configuration>    
<property>  
  <name>hive.metastore.warehouse.dir</name>  
  <value>/data/hive/warehouse</value>  
</property>  
   
<property>  
  <name>javax.jdo.option.ConnectionURL</name>  
  <value>jdbc:mysql://10.10.99.227:3306/test?createDatabaseIfNotExist=true</value>  
</property>  
   
<property>  
  <name>javax.jdo.option.ConnectionDriverName</name>  
  <value>com.mysql.jdbc.Driver</value>  
</property>  
   
<property>  
  <name>javax.jdo.option.ConnectionUserName</name>  
  <value>root</value>  
</property>  
   
<property>  
  <name>javax.jdo.option.ConnectionPassword</name>  
  <value>
root</value>  
</property>  
<property>  
  <name>hive.metastore.uris</name>  
  <value>thrift://10.10.99.227:9083</value>  
</property>
</configuration> 

如果presto需要与hive集成,依赖于hive的数据源,需要由hive提供一个元数据服务。也就是hive.metastore.uris配置项。

三、presto配置

1、在presto根目录下新建个etc文件夹,用户存储配置文件。新建这些

2、config.properties配置文件

coordinator=true
node-scheduler.include-coordinator=true
http-server.http.port=8080
query.max-memory=2GB
query.max-memory-per-node=2GB
discovery-server.enabled=true
discovery.uri=http://10.10.99.227:8080

3、jvm.config配置文件

-server
-Xmx1G
-XX:+UseConcMarkSweepGC
-XX:+ExplicitGCInvokesConcurrent
-XX:+CMSClassUnloadingEnabled
-XX:+AggressiveOpts
-XX:+HeapDumpOnOutOfMemoryError
-XX:OnOutOfMemoryError=kill -9 %p
-XX:ReservedCodeCacheSize=150M

4、log.properties配置文件

com.facebook.presto=INFO

5、node.properties配置文件(node.id不能重复)

node.environment=production
node.id=XXXX
node.data-dir=/data/presto

6、catalog文件下是数据源配置,可以有hive,kafaka,关系型数据库等等。。我这里配置了hive.properties

connector.name=hive-cdh5
hive.metastore.uri=thrift://10.10.99.227:9083
hive.config.resources=/home/dc/dep/soft/hadoop/hadoop-2.6.4/etc/hadoop/core-site.xml,/home/dc/dep/soft/hadoop/hadoop-2.6.4/etc/hadoop/hdfs-site.xml

7、测试的时候需要一个presto客户端,实际上就是一个presto-client.jar包,mv改名为presto

四、测试启动顺序

1、namenode

2、datanode

3、hive --service metastore

4、hive插入测试数据

create table course (id bigint, name string) partitioned by (pubdate string) row format delimited fields terminated by ','; 
load data local inpath '/home/dc/dep/soft/hive/course.txt' overwrite into table course partition (pubdate='2010-08-22');

5、./launcher run

6、运行下载改名的那个jar

./presto --server localhost:8080 --catalog hive --schema default


原文链接


1 0