#!/usr/bin/env python
# -*- coding:utf-8 -*-
import datetime
import os
import sys
from pyhocon import ConfigFactory
data_file = sys.argv[1] if len(sys.argv) > 1 else None
conf = ConfigFactory.parse_file('src/main/resources/application.conf')
hosts = conf['wzx.deploy.cluster']
master = conf['wzx.deploy.master']
remote_data_path = conf['wzx.deploy.data_path']
def exec_ssh_cmd(host_name: str, cmd: str):
os.system(f"ssh {host_name} 'cd {remote_data_path};{cmd}'")
def exe_master_cmd(cmd: str):
exec_ssh_cmd(master, cmd)
def upload_file_remote_data_path(host_name: str, local_file: str):
os.system(f'scp {local_file} {host_name}:{remote_data_path}')
def upload_file_master_data_path(local_file: str):
upload_file_remote_data_path(master, local_file)
# 创建data path
for host in hosts:
exec_ssh_cmd(host, f"mkdir -p {remote_data_path}")
exec_ssh_cmd(host, f"mkdir -p {remote_data_path}/log")
print(f"make directory on {host}")
# 数据分发
os.system(f'python3 script/create_dataset.py {data_file} {len(hosts) + 1}')
weblogs_path = os.path.join(remote_data_path, "weblogs")
for index, host in enumerate(hosts + ['localhost']):
upload_file_remote_data_path(host, f'tmp_{index}')
print(f'tmp_{index} send to {host}:{weblogs_path}')
os.remove(f'tmp_{index}')
# 编译上传jar包
print('build and upload package')
ret = os.system('mvn package')
if ret != 0:
raise RuntimeError("maven build error")
for host in hosts:
upload_file_remote_data_path(host, "target/LabelLogAnalysis-1.0-SNAPSHOT-jar-with-dependencies.jar")
# 上传ip解析包
print('upload ip2region')
for host in hosts:
upload_file_remote_data_path(host, "src/main/resources/ip2region.db")
# 上传sql, script, 配置文件到master服务器上
print('upload script and sql file')
upload_file_master_data_path(
'sql/* script/topic.py script/submit.py script/crontab.py src/main/resources/application.conf')
# 创建topic
print('create kafka topic')
exe_master_cmd('python3 topic.py delete')
exe_master_cmd('python3 topic.py create')
# 创建数据表
print('create database table')
cur_month = datetime.date.today().replace(day=1).strftime("%Y-%m-%d %H:%M:%S")
exe_master_cmd(
f'impala-shell -f impala.sql --var=cur_month="{cur_month}"')
# 离线sql作业和sql作业, crontab
print('create crontab')
exe_master_cmd('python3 crontab.py')
# 提交实时Flink作业
print('submit flink job')
exe_master_cmd('python3 submit.py flink')
manylinux
- 粉丝: 4535
- 资源: 2485
最新资源
- MATLAB代码:基于分布式ADMM算法的考虑碳排放交易的电力系统优化调度研究 关键词:分布式调度 ADMM算法 交替方向乘子法 碳排放 最优潮流 仿真平台:MATLAB+CPLEX GUROBI
- 基于二阶自抗扰ADRC的轨迹跟踪控制,对车辆的不确定性和外界干扰具有一定抗干扰性,基于carsim和simulink仿真 跟踪轨迹为双移线,效果良好,有对应复现资料,是学习自抗扰技术快速入门很好的资料
- 程序名称:转向设计计算程序 开发平台:基于matlab平台 计算内容:阿克曼转角,转弯半径,转向阻力矩,回正力矩,转向主参数,转向传动比,力矩波动,转向梯形,EPS匹配,HPS匹配,齿轮齿条传动比,循
- 基于python的网页自动化工具项目全套技术资料100%好用.zip
- MATLAB【逆变器二次调频模型】 微电网分布式电源逆变器DROOP控制二次调频模型,加入二次控制实现二次调频控制,及二次调压控制,程序可实现上图功能,工况有所改变 需要matlab2021A版
- 抢购软件:快速复制信息
- 纯电动汽车再生制动策略,Cruise和Simulink联合仿真,提供Cruise整车模型和simuink策略模型,有详细解析文档,可运行
- 单机无穷大系统发生各类(三相短路,单相接地,两相接地,两相相间短路)等短路故障,各类(单相断线,两相断线,三相断线)等断线故障,暂态稳定仿真分析
- 微信文章爬虫项目全套技术资料100%好用.zip
- 基于动态窗口算法的AGV仿真避障 可设置起点目标点,设置地图,设置移动障碍物起始点目标点,未知静态障碍物 动态窗口方法(DynamicWindowApproach) 是一种可以实现实时避障的局部规划算
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈