install.sh 12.1 KB
Newer Older
D
dailidong 已提交
1
#!/bin/sh
2

D
dailidong 已提交
3 4
workDir=`dirname $0`
workDir=`cd ${workDir};pwd`
D
dailidong 已提交
5

D
dailidong 已提交
6 7
source ${workDir}/conf/config/run_config.conf
source ${workDir}/conf/config/install_config.conf
8 9 10 11 12 13

# mysql配置
# mysql 地址,端口
mysqlHost="192.168.xx.xx:3306"

# mysql 数据库名称
D
dailidong 已提交
14
mysqlDb="escheduler"
15 16

# mysql 用户名
D
dailidong 已提交
17
mysqlUserName="xx"
18 19

# mysql 密码
D
dailidong 已提交
20
mysqlPassword="xx"
21 22 23


# hadoop 配置
D
dailidong 已提交
24 25
# namenode地址,支持HA,需要将core-site.xml和hdfs-site.xml放到conf目录下
namenodeFs="hdfs://mycluster:8020"
26

D
dailidong 已提交
27 28
# resourcemanager HA配置,如果是单resourcemanager,这里为空即可
yarnHaIps="192.168.xx.xx,192.168.xx.xx"
29

D
dailidong 已提交
30 31
# 如果是单 resourcemanager,只需要配置一个主机名称,如果是resourcemanager HA,则默认配置就好
singleYarnIp="ark1"
32 33 34 35


# common 配置
# 程序路径
D
dailidong 已提交
36
programPath="/tmp/escheduler"
37 38

#下载路径
D
dailidong 已提交
39
downloadPath="/tmp/escheduler/download"
40 41

# 任务执行路径
D
dailidong 已提交
42
execPath="/tmp/escheduler/exec"
43 44

# hdfs根路径
D
dailidong 已提交
45
hdfsPath="/escheduler"
46

D
dailidong 已提交
47 48
# 是否启动hdfs,如果启动则为true,不启动设置为false
hdfsStartupSate="true"
49 50

# SHELL环境变量路径
D
dailidong 已提交
51
shellEnvPath="/opt/.escheduler_env.sh"
52 53

# Python换将变量路径
D
dailidong 已提交
54
pythonEnvPath="/opt/escheduler_env.py"
55 56

# 资源文件的后缀
D
dailidong 已提交
57
resSuffixs="txt,log,sh,conf,cfg,py,java,sql,hql,xml"
58

D
dailidong 已提交
59 60
# 开发状态,如果是true,对于SHELL脚本可以在execPath目录下查看封装后的SHELL脚本,如果是false则执行完成直接删除
devState="true"
61 62 63 64


# zk 配置
# zk集群
D
dailidong 已提交
65
zkQuorum="192.168.xx.xx:2181,192.168.xx.xx:2181,192.168.xx.xx:2181"
66 67

# zk根目录
D
dailidong 已提交
68
zkRoot="/escheduler"
69 70

# 用来记录挂掉机器的zk目录
D
dailidong 已提交
71
zkDeadServers="/escheduler/dead-servers"
72

D
dailidong 已提交
73 74
# masters目录
zkMasters="/escheduler/masters"
75

D
dailidong 已提交
76 77
# workers目录
zkWorkers="/escheduler/workers"
78

D
dailidong 已提交
79 80
# zk master分布式锁
mastersLock="/escheduler/lock/masters"
81

D
dailidong 已提交
82 83
# zk worker分布式锁
workersLock="/escheduler/lock/workers"
84

D
dailidong 已提交
85 86
# zk master容错分布式锁
mastersFailover="/escheduler/lock/failover/masters"
87

D
dailidong 已提交
88 89
# zk worker容错分布式锁
workersFailover="/escheduler/lock/failover/masters"
90 91 92 93 94 95 96 97

# zk session 超时
zkSessionTimeout="300"

# zk 连接超时
zkConnectionTimeout="300"

# zk 重试间隔
D
dailidong 已提交
98
zkRetrySleep="100"
99 100

# zk重试最大次数
D
dailidong 已提交
101
zkRetryMaxtime="5"
102 103


D
dailidong 已提交
104 105 106
# master 配置
# master执行线程最大数,流程实例的最大并行度
masterExecThreads="100"
107

D
dailidong 已提交
108 109
# master任务执行线程最大数,每一个流程实例的最大并行度
masterExecTaskNum="20"
110

D
dailidong 已提交
111 112
# master心跳间隔
masterHeartbeatInterval="10"
113

D
dailidong 已提交
114 115
# master任务提交重试次数
masterTaskCommitRetryTimes="5"
116

D
dailidong 已提交
117 118
# master任务提交重试时间间隔
masterTaskCommitInterval="100"
119

D
dailidong 已提交
120 121
# master最大cpu平均负载,用来判断master是否还有执行能力
masterMaxCupLoadAvg="10"
122

D
dailidong 已提交
123 124
# master预留内存,用来判断master是否还有执行能力
masterReservedMemory="1"
125 126


D
dailidong 已提交
127 128 129
# worker 配置
# worker执行线程
workerExecThreads="100"
130

D
dailidong 已提交
131 132
# worker心跳间隔
workerHeartbeatInterval="10"
133

D
dailidong 已提交
134 135
# worker一次抓取任务数
workerFetchTaskNum="10"
136

D
dailidong 已提交
137 138
# worker最大cpu平均负载,用来判断master是否还有执行能力
workerMaxCupLoadAvg="10"
139

D
dailidong 已提交
140 141
# worker预留内存,用来判断master是否还有执行能力
workerReservedMemory="1"
142 143 144 145


# api 配置
# api 服务端口
D
dailidong 已提交
146
apiServerPort="12345"
147 148

# api session 超时
D
dailidong 已提交
149
apiServerSessionTimeout="7200"
150 151

# api 上下文路径
D
dailidong 已提交
152
apiServerContextPath="/escheduler/"
153

D
dailidong 已提交
154 155
# spring 最大文件大小
springMaxFileSize="1024MB"
156

D
dailidong 已提交
157 158
# spring 最大请求文件大小
springMaxRequestSize="1024MB"
159 160 161 162 163 164

# api 最大post请求大小
apiMaxHttpPostSize="5000000"



D
dailidong 已提交
165
# alert配置
166 167

# 邮件协议
D
dailidong 已提交
168
mailProtocol="SMTP"
169 170

# 邮件服务host
D
dailidong 已提交
171
mailServerHost="smtp.exmail.qq.com"
172 173

# 邮件服务端口
D
dailidong 已提交
174
mailServerPort="25"
175 176

# 发送人
D
dailidong 已提交
177
mailSender="xxxxxxxxxx"
178 179

# 发送人密码
D
dailidong 已提交
180
mailPassword="xxxxxxxxxx"
181 182 183 184 185 186

# 下载Excel路径
xlsFilePath="/opt/xls"

# conf/config/install_config.conf配置
# 安装路径
D
dailidong 已提交
187
installPath="/data1_1T/escheduler"
188 189

# 部署用户
D
dailidong 已提交
190
deployUser="escheduler"
191 192

# 安装hosts
D
dailidong 已提交
193
ips="ark0,ark1,ark2,ark3,ark4"
194 195


D
dailidong 已提交
196 197 198
# conf/config/run_config.conf配置
# 运行Master的机器
masters="ark0,ark1"
199

D
dailidong 已提交
200 201
# 运行Worker的机器
workers="ark2,ark3,ark4"
202

D
dailidong 已提交
203 204
# 运行Alert的机器
alertServer="ark3"
205 206

# 运行Api的机器
D
dailidong 已提交
207
apiServers="ark1"
208 209 210 211


# 1,替换文件
echo "1,替换文件"
D
dailidong 已提交
212 213 214
sed -i '' "s#spring.datasource.url.*#spring.datasource.url=jdbc:mysql://${mysqlHost}/${mysqlDb}?characterEncoding=UTF-8#g" conf/dao/data_source.properties
sed -i '' "s#spring.datasource.username.*#spring.datasource.username=${mysqlUserName}#g" conf/dao/data_source.properties
sed -i '' "s#spring.datasource.password.*#spring.datasource.password=${mysqlPassword}#g" conf/dao/data_source.properties
215

D
dailidong 已提交
216 217 218
sed -i '' "s#org.quartz.dataSource.myDs.URL.*#org.quartz.dataSource.myDs.URL=jdbc:mysql://${mysqlHost}/${mysqlDb}?characterEncoding=UTF-8#g" conf/quartz.properties
sed -i '' "s#org.quartz.dataSource.myDs.user.*#org.quartz.dataSource.myDs.user=${mysqlUserName}#g" conf/quartz.properties
sed -i '' "s#org.quartz.dataSource.myDs.password.*#org.quartz.dataSource.myDs.password=${mysqlPassword}#g" conf/quartz.properties
219 220


D
dailidong 已提交
221
sed -i '' "s#fs.defaultFS.*#fs.defaultFS = ${namenodeFs}#g" conf/common/hadoop/hadoop.properties
D
dailidong 已提交
222 223 224 225 226 227 228 229 230 231 232
sed -i '' "s#yarn.resourcemanager.ha.rm.ids.*#yarn.resourcemanager.ha.rm.ids=${yarnHaIps}#g" conf/common/hadoop/hadoop.properties
sed -i '' "s#yarn.application.status.address.*#yarn.application.status.address=http://${singleYarnIp}:8088/ws/v1/cluster/apps/%s#g" conf/common/hadoop/hadoop.properties

sed -i '' "s#data.basedir.path.*#data.basedir.path=${programPath}#g" conf/common/common.properties
sed -i '' "s#data.download.basedir.path.*#data.download.basedir.path=${downloadPath}#g" conf/common/common.properties
sed -i '' "s#process.exec.basepath.*#process.exec.basepath=${execPath}#g" conf/common/common.properties
sed -i '' "s#data.store2hdfs.basepath.*#data.store2hdfs.basepath=${hdfsPath}#g" conf/common/common.properties
sed -i '' "s#hdfs.startup.state.*#hdfs.startup.state=${hdfsStartupSate}#g" conf/common/common.properties
sed -i '' "s#escheduler.env.path.*#escheduler.env.path=${shellEnvPath}#g" conf/common/common.properties
sed -i '' "s#escheduler.env.py.*#escheduler.env.py=${pythonEnvPath}#g" conf/common/common.properties
sed -i '' "s#resource.view.suffixs.*#resource.view.suffixs=${resSuffixs}#g" conf/common/common.properties
D
dailidong 已提交
233
sed -i '' "s#development.state.*#development.state=${devState}#g" conf/common/common.properties
234

D
dailidong 已提交
235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277
sed -i '' "s#zookeeper.quorum.*#zookeeper.quorum=${zkQuorum}#g" conf/zookeeper.properties
sed -i '' "s#zookeeper.escheduler.root.*#zookeeper.escheduler.root=${zkRoot}#g" conf/zookeeper.properties
sed -i '' "s#zookeeper.escheduler.dead.servers.*#zookeeper.escheduler.dead.servers=${zkDeadServers}#g" conf/zookeeper.properties
sed -i '' "s#zookeeper.escheduler.masters.*#zookeeper.escheduler.masters=${zkMasters}#g" conf/zookeeper.properties
sed -i '' "s#zookeeper.escheduler.workers.*#zookeeper.escheduler.workers=${zkWorkers}#g" conf/zookeeper.properties
sed -i '' "s#zookeeper.escheduler.lock.masters.*#zookeeper.escheduler.lock.masters=${mastersLock}#g" conf/zookeeper.properties
sed -i '' "s#zookeeper.escheduler.lock.workers.*#zookeeper.escheduler.lock.workers=${workersLock}#g" conf/zookeeper.properties
sed -i '' "s#zookeeper.escheduler.lock.failover.masters.*#zookeeper.escheduler.lock.failover.masters=${mastersFailover}#g" conf/zookeeper.properties
sed -i '' "s#zookeeper.escheduler.lock.failover.workers.*#zookeeper.escheduler.lock.failover.workers=${workersFailover}#g" conf/zookeeper.properties
sed -i '' "s#zookeeper.session.timeout.*#zookeeper.session.timeout=${zkSessionTimeout}#g" conf/zookeeper.properties
sed -i '' "s#zookeeper.connection.timeout.*#zookeeper.connection.timeout=${zkConnectionTimeout}#g" conf/zookeeper.properties
sed -i '' "s#zookeeper.retry.sleep.*#zookeeper.retry.sleep=${zkRetrySleep}#g" conf/zookeeper.properties
sed -i '' "s#zookeeper.retry.maxtime.*#zookeeper.retry.maxtime=${zkRetryMaxtime}#g" conf/zookeeper.properties

sed -i '' "s#master.exec.threads.*#master.exec.threads=${masterExecThreads}#g" conf/master.properties
sed -i '' "s#master.exec.task.number.*#master.exec.task.number=${masterExecTaskNum}#g" conf/master.properties
sed -i '' "s#master.heartbeat.interval.*#master.heartbeat.interval=${masterHeartbeatInterval}#g" conf/master.properties
sed -i '' "s#master.task.commit.retryTimes.*#master.task.commit.retryTimes=${masterTaskCommitRetryTimes}#g" conf/master.properties
sed -i '' "s#master.task.commit.interval.*#master.task.commit.interval=${masterTaskCommitInterval}#g" conf/master.properties
sed -i '' "s#master.max.cpuload.avg.*#master.max.cpuload.avg=${masterMaxCupLoadAvg}#g" conf/master.properties
sed -i '' "s#master.reserved.memory.*#master.reserved.memory=${masterReservedMemory}#g" conf/master.properties


sed -i '' "s#worker.exec.threads.*#worker.exec.threads=${workerExecThreads}#g" conf/worker.properties
sed -i '' "s#worker.heartbeat.interval.*#worker.heartbeat.interval=${workerHeartbeatInterval}#g" conf/worker.properties
sed -i '' "s#worker.fetch.task.num.*#worker.fetch.task.num=${workerFetchTaskNum}#g" conf/worker.properties
sed -i '' "s#worker.max.cpuload.avg.*#worker.max.cpuload.avg=${workerMaxCupLoadAvg}#g" conf/worker.properties
sed -i '' "s#worker.reserved.memory.*#worker.reserved.memory=${workerReservedMemory}#g" conf/worker.properties


sed -i '' "s#server.port.*#server.port=${apiServerPort}#g" conf/application.properties
sed -i '' "s#server.session.timeout.*#server.session.timeout=${apiServerSessionTimeout}#g" conf/application.properties
sed -i '' "s#server.context-path.*#server.context-path=${apiServerContextPath}#g" conf/application.properties
sed -i '' "s#spring.http.multipart.max-file-size.*#spring.http.multipart.max-file-size=${springMaxFileSize}#g" conf/application.properties
sed -i '' "s#spring.http.multipart.max-request-size.*#spring.http.multipart.max-request-size=${springMaxRequestSize}#g" conf/application.properties
sed -i '' "s#server.max-http-post-size.*#server.max-http-post-size=${apiMaxHttpPostSize}#g" conf/application.properties


sed -i '' "s#mail.protocol.*#mail.protocol=${mailProtocol}#g" conf/alert.properties
sed -i '' "s#mail.server.host.*#mail.server.host=${mailServerHost}#g" conf/alert.properties
sed -i '' "s#mail.server.port.*#mail.server.port=${mailServerPort}#g" conf/alert.properties
sed -i '' "s#mail.sender.*#mail.sender=${mailSender}#g" conf/alert.properties
sed -i '' "s#mail.passwd.*#mail.passwd=${mailPassword}#g" conf/alert.properties
D
dailidong 已提交
278
sed -i '' "s#xls.file.path.*#xls.file.path=${xlsFilePath}#g" conf/alert.properties
279 280


D
dailidong 已提交
281
sed -i '' "s#installPath.*#installPath=${installPath}#g" conf/config/install_config.conf
D
dailidong 已提交
282
sed -i '' "s#deployUser.*#deployUser=${deployUser}#g" conf/config/install_config.conf
D
dailidong 已提交
283
sed -i '' "s#ips.*#ips=${ips}#g" conf/config/install_config.conf
284 285


D
dailidong 已提交
286 287 288 289
sed -i '' "s#masters.*#masters=${masters}#g" conf/config/run_config.conf
sed -i '' "s#workers.*#workers=${workers}#g" conf/config/run_config.conf
sed -i '' "s#alertServer.*#alertServer=${alertServer}#g" conf/config/run_config.conf
sed -i '' "s#apiServers.*#apiServers=${apiServers}#g" conf/config/run_config.conf
290 291 292 293 294 295 296 297




# 2,创建目录
echo "2,创建目录"

if [ ! -d $installPath ];then
D
dailidong 已提交
298 299
  sudo mkdir -p $installPath
  sudo chown -R $deployUser:$deployUser $installPath
300 301
fi

D
dailidong 已提交
302 303
hostsArr=(${ips//,/ })
for host in ${hostsArr[@]}
304 305
do

D
dailidong 已提交
306 307 308
# 如果programPath不存在,则创建
if ! ssh $host test -e $programPath; then
  ssh $host "sudo mkdir -p $programPath;sudo chown -R $deployUser:$deployUser $programPath"
309 310 311 312
fi

# 如果downloadPath不存在,则创建
if ! ssh $host test -e $downloadPath; then
D
dailidong 已提交
313
  ssh $host "sudo mkdir -p $downloadPath;sudo chown -R $deployUser:$deployUser $downloadPath"
314 315 316 317
fi

# 如果$execPath不存在,则创建
if ! ssh $host test -e $execPath; then
D
dailidong 已提交
318
  ssh $host "sudo mkdir -p $execPath; sudo chown -R $deployUser:$deployUser $execPath"
319 320 321 322
fi

# 如果$xlsFilePath不存在,则创建
if ! ssh $host test -e $xlsFilePath; then
D
dailidong 已提交
323
  ssh $host "sudo mkdir -p $xlsFilePath; sudo chown -R $deployUser:$deployUser $xlsFilePath"
324 325 326 327 328 329 330
fi

done


# 3,停止服务
echo "3,停止服务"
D
dailidong 已提交
331
sh ${workDir}/script/stop_all.sh
332 333 334 335

# 4,删除zk节点
echo "4,删除zk节点"
sleep 1
D
dailidong 已提交
336
python ${workDir}/script/del_zk_node.py $zkQuorum $zkRoot
337 338 339

# 5,scp资源
echo "5,scp资源"
D
dailidong 已提交
340
sh ${workDir}/script/scp_hosts.sh
341 342 343 344 345 346 347 348 349 350
if [ $? -eq 0 ]
then
	echo 'scp拷贝完成'
else
	echo 'sc 拷贝失败退出'
	exit -1
fi

# 6,启动
echo "6,启动"
D
dailidong 已提交
351
sh ${workDir}/script/start_all.sh