用引导操作给E-MapReduce集群安装presto组件

当前emr最新版本1.3.0没有presto组件,需要额外安装。本文介绍如何用E-MapReduce引导操作来安装presto 0.147版本。引导操作可以在集群创建时执行指定的脚本,详见: 帮助文档 。我们要执行的引导操作是安装配置jdk8,安装配置presto 0.147,安装presto cli(可选)。

准备脚本

上传安装jdk8的脚本

当前emr集群的jdk版本是1.7,由于presto 0.86以上版本最低jdk要求是jdk8,所以需要给集群安装jdk8。以后集群默认jdk版本升级到jdk8以后这一步可以省略。

本地创建一个installjdk8.sh文件,可以直接从oss下载,内容如下,通过oss控制台上传到oss合适位置,例如[yourbucket]/sh/installjdk8.sh。

#!/bin/sh

echo "download jdk8 from oss"
wget http://emr-agent-pack.oss-cn-hangzhou-internal.aliyuncs.com/bootstrap/presto/jdk-8u92-linux-x64.tar.gz

echo "decompress and mv"
tar -zxvf jdk-8u92-linux-x64.tar.gz
mv jdk1.8.0_92/ /usr/lib/jdk8

echo "set bashrc"
echo 'JAVA_HOME=/usr/lib/jdk8' >> /etc/bashrc
echo 'JRE_HOME=/usr/lib/jdk8/jre' >> /etc/bashrc
echo 'PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH' >> /etc/bashrc
echo 'CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib' >> /etc/bashrc
echo 'export JAVA_HOME JRE_HOME PATH CLASSPATH' >> /etc/bashrc

这个脚本从E-MapReduce团队提供的一个开放读取的oss地址下载oracle jdk8,解压缩,并设置JAVAHOME环境变量。要注意环境变量的设置对已存在的进程和其子进程是不生效的,后面启动presto前,应source /etc/bashrc

上传安装presto的脚本

presto的安装流程是下载软件压缩包,解压缩,下载coordinator和worker的默认配置,设置node id和主节点的ip。本地创建一个installpresto.sh文件,可以直接下载,内容如下,通过oss控制台上传到oss的合适位置,例如[yourbucket]/sh/installpresto.sh。

#!/bin/sh

echo "dowanload presto"
wget http://emr-agent-pack.oss-cn-hangzhou-internal.aliyuncs.com/bootstrap/presto/presto-server-0.147.tar.gz
tar -zxvf presto-server-0.147.tar.gz -C /usr/lib/
isMaster=`hostname --fqdn | grep emr-header-1`
if [ -n "$isMaster" ] ;then
  echo getcoordinatorconfig
  wget http://emr-agent-pack.oss-cn-hangzhou-internal.aliyuncs.com/bootstrap/presto/coordinator-conf.tar.gz
  tar -zxvf coordinator-conf.tar.gz -C /usr/lib/presto-server-0.147
  rm -rf coordinator-conf.tar.gz
else
  echo getworkerconfig
  wget http://emr-agent-pack.oss-cn-hangzhou-internal.aliyuncs.com/bootstrap/presto/worker-conf.tar.gz
  tar -zxvf worker-conf.tar.gz -C /usr/lib/presto-server-0.147
  rm -rf worker-conf.tar.gz
fi

echo "set node id"
echo node.id=`uuidgen` >> /usr/lib/presto-server-0.147/etc/node.properties

echo "set master ip"
masterIp=`cat /etc/hosts | grep emr-header-1|awk '{print $1}'`
echo $masterIp
sed -i "s/localhost/$masterIp/g" /usr/lib/presto-server-0.147/etc/config.properties
sed -i "s/localhost/$masterIp/g" /usr/lib/presto-server-0.147/etc/catalog/hive.properties

echo "set java home"
source /etc/bashrc

echo "start presto"
/usr/lib/presto-server-0.147/bin/launcher start

下面详细讲解脚本的内容。

下载presto

echo "dowanload presto"
wget http://emr-agent-pack.oss-cn-hangzhou-internal.aliyuncs.com/bootstrap/presto/presto-server-0.147.tar.gz
tar -zxvf presto-server-0.147.tar.gz -C /usr/lib/

从E-MapReduce团队提供的一个开放读取的oss地址下载presto 0.147,解压缩到指定目录。

下载默认配置

isMaster=`hostname --fqdn | grep emr-header-1`
if [ -n "$isMaster" ] ;then
  echo getcoordinatorconfig
  wget http://emr-agent-pack.oss-cn-hangzhou-internal.aliyuncs.com/bootstrap/presto/coordinator-conf.tar.gz
  tar -zxvf coordinator-conf.tar.gz -C /usr/lib/presto-server-0.147
  rm -rf coordinator-conf.tar.gz
else
  echo getworkerconfig
  wget http://emr-agent-pack.oss-cn-hangzhou-internal.aliyuncs.com/bootstrap/presto/worker-conf.tar.gz
  tar -zxvf worker-conf.tar.gz -C /usr/lib/presto-server-0.147
  rm -rf worker-conf.tar.gz
fi

根据hostname是否包含指定字符串,分别下载coordinator和worker的默认配置文件到presto的安装目录。两组默认配置文件都包含相同的jvm.config,log.preperties,node.preperties, catalog/hive.preperties, catalog/jmx.preperties文件,区别是config.preperties里前者指定了coordinator=true。默认的配置内容如下所示,如果要修改配置内容,比如修改查询请求的最大内存,您可以额外提供一个脚本修改配置内容。

coordinator的config.preperties

oordinator=true
node-scheduler.include-coordinator=false
http-server.http.port=9090
query.max-memory=5GB
query.max-memory-per-node=1GB
discovery-server.enabled=true
discovery.uri=http://localhost:9090

worker的config.preperties

coordinator=false
http-server.http.port=9090
query.max-memory=5GB
query.max-memory-per-node=1GB
discovery.uri=http://localhost:9090

后面的脚本会将localhost替换为coordinator的ip

node.preperties

node.environment=production
#node.id=5b47019c-a05c-42a5-9f9c-f17dbe27b42a
node.data-dir=/var/presto/data

后面的脚本会用uuid设置node.id的值

jvm.config

-server
-Xmx8G
-XX:+UseG1GC
-XX:G1HeapRegionSize=32M
-XX:+UseGCOverheadLimit
-XX:+ExplicitGCInvokesConcurrent
-XX:+HeapDumpOnOutOfMemoryError
-XX:OnOutOfMemoryError=kill -9 %p

log.preperties

com.facebook.presto=INFO

catalog/jmx.properties

connector.name=jmx

catalog/hive.properties

connector.name=hive-hadoop2
hive.metastore.uri=thrift://localhost:9083
hive.config.resources=/etc/emr/hadoop-conf-2.6.0/core-site.xml, /etc/emr/hadoop-conf-2.6.0/hdfs-site.xml
hive.allow-drop-table=true

后面的脚本会将localhost替换为metastore所在的master1节点的ip

动态修改配置

echo "set node id"
echo node.id=`uuidgen` >> /usr/lib/presto-server-0.147/etc/node.properties

echo "set master ip"
masterIp=`cat /etc/hosts | grep emr-header-1|awk '{print $1}'`
echo $masterIp
sed -i "s/localhost/$masterIp/g" /usr/lib/presto-server-0.147/etc/config.properties
sed -i "s/localhost/$masterIp/g" /usr/lib/presto-server-0.147/etc/catalog/hive.properties

各进程的node id必须 不同,这里用uuid自动生成。
取master1节点的内网ip,设置为discovery和metastore的ip地址。

启动服务进程

echo "set java home"
source /etc/bashrc

echo "start presto"
/usr/lib/presto-server-0.147/bin/launcher start

先加载bashrc环境变量,再启动presto服务进程。

上传安装presto cli的脚本(可选)

如果集群要安装presto cli,需要准备一个安装脚本。本地创建一个installprestocli.sh文件,或者直接下载,内容如下,通过oss控制台上传到oss的合适位置,例如[yourbucket]/sh/installprestocli.sh。

#!/bin/sh

wget http://emr-agent-pack.oss-cn-hangzhou-internal.aliyuncs.com/bootstrap/presto/presto-cli-0.147-executable.jar
mv presto-cli-0.147-executable.jar /root/presto
chmod +x /root/presto

安装和验证

创建集群

参照 帮助文档 ,创建集群时点击添加引导操作,分别选择刚才上传的installsdk8,installpresto,installprestocli脚本,创建三个引导操作步骤。集群创建好后,通过集群详情页的引导/软件配置:无异常来确定引导操作执行成功

验证

cli验证

ssh用root用户 登陆master,输入·hive·进入hivecli,创建表并插入一条测试数据:

create table test(id int, name string);
insert into table test select count(id), "tom" from test;

退出hive cli,进入presto cli
./presto --server localhost:9090 --catalog hive --schema default
执行show tables能看见刚刚创建的表,执行select * from test;能查到刚才插入的数据。如果未显示,可能是还未同步,稍等一会

web验证

默认安全组只能访问集群的22端口,可以通过 本地端口转发来访问presto的web页面,本文配置设置的web地址是masterip:9090,可以查看已执行作业的详细信息。

也可以通过 安全组设置 公网入方向允许白名单Ip访问9090端口。由于公网暴露端口有安全隐患,ip白名单授权对象一定不能设置为0.0.0.0/0,而是应该只允许固定的ip白名单访问。如果没有固定ip,还是用前面端口转发的方式来访问。

时间: 2024-11-02 08:53:44

用引导操作给E-MapReduce集群安装presto组件的相关文章

用引导操作给E-MapReduce集群安装impala

当前emr最新版本2.0.1没有impala组件,需要额外安装.本文介绍如何在emr 2.0.1版本上用E-MapReduce软件配置功能修改hdfs配置,引导操作安装impala 2.5.0 for cdf 5.7.1版本,shell作业来启动impala的完整过程. 软件配置 impala对hdfs组件的配置有要求,需要用软件配置功能修改hdfs的配置.软件配置功能可以修改hadoop组件的配置,详见: 帮助文档 本地创建一个hdfs.json文件,可以直接从oss下载,内容如下,通过oss

Hadoop2.6(NN/RM)高可用集群安装与部署

 Hadoop2对HDFS的改进很大,支持HDFS(NameNode) 和ResourceManager高可用性,避免集群中单点故障造成整个集群不可用.那么,从本文开始将部署一套高可用Hadoop集群及家族中相关开源系统,具体根据下面规划来,本文只部署高可用Hadoop集群,后续很快更新其他软件部署及使用. 一.部署前准备 操作系统:CentOS7_x64 安装目录:/opt 1. 节点分配 HostName IP Hadoop HBase Zookeeper Hive HMaster0 192

Storm集群安装部署步骤

开始学习Storm,本文主要记录Storm集群安装部署步骤,不包括对Storm的介绍. 安装storm集群,需要依赖以下组件: Zookeeper Python Zeromq Storm JDK JZMQ 故安装过程根据上面的组件分为以下几步: 安装JDK 安装Zookeeper集群 安装Python及依赖 安装Storm 另外,操作系统环境为:Centos6.4,安装用户为:root. 1. 安装JDK 安装jdk有很多方法,可以参考文博客使用yum安装CDH Hadoop集群中的jdk安装步

[喵咪MQ(3)]RabbitMQ集群安装配置

[喵咪MQ(3)]RabbitMQ集群安装配置 w-blog博客 在各项生产环境使用中,容灾总是一个很重要的话题,如果单点故障会导致整个系统奔溃或者是丢失数据是不是好气好气的,领导会追着你问这是怎么了?你只能说是我们没有经验什么什么组件故障了,这个是低级玩法,高级玩法是配置好集群容灾,告诉老板死一两台机器宕机了没有事没有影响,所以我们今天就来讲讲RabbitMQ的集群模式... 附上: 喵了个咪的博客:w-blog.cn RabbitMQ官网 :http://www.rabbitmq.com/

国产数据库之达梦数据库 - DM7 MPP集群安装配置

武汉达梦数据库作为国产数据库较有代表性的企业,在数据库研发方面投入了大量的精力,其自主研发的达梦数据库DM7,除了具有单机版可与Oracle相媲美的能力外,同时也研发了一款无共享MPP架构的数据库软件,主要面向在线分析(OLAP)领域. 下面的分享主要参考和使用达梦公司官网提供的下载包及安装文档,感兴趣的同学请自行下载.下载链接:http://www.dameng.com/service/download.shtml 1.MPP集群规划 本集群打算使用2台服务器,每台服务器规划3个数据库实例,总

Hadoop 学习第三天之集群安装(上)

Hadoop 学习之集群安装(上) 将配置的伪分布模式的虚拟机克隆两份并更名为centos_node2和centos_note3 分别打开三个虚拟机,第一个基本不需要配置了,现在主要配置centos_note2和centos_note3的配置. 1.   首先修改IP地址和主机名 因为centos是hadoop1和192.168.100.11,在这里设置centos_note2和centos_note3的主机名和IP地址分别为:hadoop2/192.168.100.12和hadoop3/192

ElasticSearch-2.0.0集群安装配置与API使用实践

ElasticSearch是基于全文搜索引擎库Lucene构建的分布式搜索引擎,我们可以直接使用ElasticSearch实现分布式搜索系统的搭建与使用,都知道,Lucene只是一个搜索框架,它提供了搜索引擎操作的基本API,如果要实现一个能够使用的搜索引擎系统,还需要自己基于Lucene的API去实现,工作量很大,而且还需要很好地掌握Lucene的底层实现原理. ElasticSearch是一个完整的分布式搜索引擎系统,它的一些基本特性包括如下: 全文检索 提供插件机制,可以共享重用插件的功能

Hadoop学习之ZooKeeper理论知识和集群安装配置

ZooKeeper集群安装配置和理论知识 1.   简介:zookeeper是Google的Chubby的一个开源实现,是hadoop的分布式协调服务 2.    Zookeeper(简称zk)包含一个简单的原语集,分布式应用程序可以给予它实现同步服务,配置维护和命名服务等 3.    Zk的设计目标 a)      简单化:通过共享体系的,命名空间进行协调,与文件系统相似,有一些数据寄存器组成,被称为Znode.Zk的数据是放在内存中的,zk可以达到高吞吐量.低延迟. Zk能用在大型.分布式的

Oracle 10g RAC集群安装部署过程中如何安装RAC集群套件

一.首先解压集群套件包: gunzip 10201_clusterware_linux_x86_64.gz cpio -idmv < 10201_clusterware_linux_x86_64.cpio 解压放置的地方需要有oracle用户使用的权限 二.开始安装oracle RAC集群套件, 2.2.1.安装之前首先关闭两个节点的防火墙,Selinux不然是无法通过安装的 2.2.2.安装之前修改系统版本,来欺诈oracle数据库,然后执行xhost+ 2.2.3.完成上面的配置之后,使用o