#!/usr/bin/env python
# -*- coding: utf-8 -*--
"""
Licensed to the Apache Software Foundation (ASF) under one
or more contributor license agreements. See the NOTICE file
distributed with this work for additional information
regarding copyright ownership. The ASF licenses this file
to you under the Apache License, Version 2.0 (the
"License"); you may not use this file except in compliance
with the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
"""
import json
import os
from resource_management.libraries.script.script import Script
from resource_management.core.logger import Logger
from resource_management.core.resources import Directory
from resource_management import *
# from elastic_common import kill_process
import pwd
import grp
from resource_management.core.logger import Logger
from time import sleep
class Master(Script):
def test_master_check(self, env):
import params
env.set_params(params)
Logger.info("run test_master")
sleep(2)
Logger.info("check successfully!")
def test_master_check2(self, env):
import params
env.set_params(params)
Logger.info("run test_master")
sleep(2)
Logger.info("check successfully!")
def test_master_check3(self, env):
import params
env.set_params(params)
Logger.info("run test_master")
sleep(2)
Logger.info("check successfully!")
def install(self, env):
import params
env.set_params(params)
# 下载Doris安装包
Execute('wget {0} -O apache-doris-2.0.2-bin-x64.tar.gz'.format(params.doris_download))
# 将安装包解压到指定目录
Execute('tar -zxvf apache-doris-2.0.2-bin-x64.tar.gz -C /usr/hdp/3.1.5.0-152/')
# 删除下载的安装包
Execute('rm -rf apache-doris-2.0.2-bin-x64.tar.gz')
# 初始化环境变量
cmd = format("cd {doris_scripts_dir}; chmod +x ./changeOsConf.sh && sh ./changeOsConf.sh")
Execute(cmd)
# 创建日志目录
Execute(format('mkdir -p {LOG_DIR} && chown -R {doris_user}:{user_group} {LOG_DIR}'))
# 将服务目录权限设置为doris
Execute(format('chown -R {doris_user}:{user_group} {doris_base_dir}'))
# 设置 pid 目录权限
Execute(format('mkdir -p {doris_pid_dir} && chown -R {doris_user}:{user_group} {doris_pid_dir}'))
Logger.info("Install complete")
def configure(self, env):
# Import properties defined in -config.xml file from the params class
import params
# This allows us to access the params.elastic_pid_file property as
# format('{elastic_pid_file}')
env.set_params(params)
# 初始化配置文件 , 配置文件中参数取值读取的是params.py里的变量,不是直接读取的fe.xml变量名
doris_fe_conf = InlineTemplate(params.doris_fe_conf)
Logger.info("path:"+params.doris_fe_conf)
Logger.info("read properties :"+format("{doris_fe_conf_base_dir}/fe.conf"))
File(format("{doris_fe_conf_base_dir}/fe.conf"),
owner=params.doris_user,
group=params.user_group,
content=doris_fe_conf)
File(format("{doris_fe_conf_base_dir}/fe2.conf"),
owner=params.doris_user,
group=params.user_group,
content=Template('fe.conf.j2')
)
print(params.config['configurations']['fe'])
XmlConfig(format("{doris_fe_conf_base_dir}/doris-env3.xml"), # 生成
configurations=params.config['configurations']['doris-env'],
configuration_attributes=params.config['configurationAttributes']['doris-env'],
owner=params.doris_user,
group=params.user_group
)
File(format("{doris_fe_conf_base_dir}/fe.properties"),
content=Template('fe.conf.j2'),
owner=params.doris_user,
group=params.user_group,
mode=0755
)
File(format("{doris_fe_conf_base_dir}/test-common.conf"),
owner=params.doris_user,
group=params.user_group,
content=Template('test-common.conf.j2')
)
# mkdir {meta_dir}
meta_dir = format("{meta_dir}")
Directory(meta_dir,
mode=0755,
cd_access='a',
owner=params.doris_user,
group=params.user_group,
create_parents=True
)
cmd = "chown -R {0}:{1} {2}".format(params.doris_user, params.user_group, meta_dir)
Execute(cmd)
Logger.info("Configuration complete")
def start(self, env):
import params
env.set_params(params)
# Configure Elasticsearch
self.configure(env)
# Start Elasticsearch
cmd = format("{doris_base_dir}/fe/bin/start_fe.sh --daemon")
Execute(cmd, user=params.doris_user)
# 获取Doris进程ID写入到文件
Execute(
'ps -ef | grep org.apache.doris.DorisFE | grep -v grep | awk \'{print $2}\' > ' + params.doris_pid_file,
user=params.doris_user)
# 1. 创建两个目录,一个目录是通过params.py获取到的目录,另外一个是指定的:/var/run/test目录
# 2. mode : 目录权限为0755
# 3. owner:目录所属用户
# 4. group:目录所属用户组
# 5. create_parents:父目录如果不存在,是否创建父目录
Directory(['/var/run/test2','/var/run/test'],
mode=0755,
cd_access='a',
owner=params.doris_user,
group=params.user_group,
create_parents=True
)
# 1. 创建两个目录,一个目录是通过params.py获取到的目录,另外一个是指定的:/var/run/test目录
# 2. mode :文件权限为0
# 3. owner:文件所属用户
# 4. group:文件所属用户组
# 5. content:文件创建后填写的内容
File(['/var/run/test/file2.txt', '/var/run/test/file.txt'],
mode=0644,
owner=params.doris_user,
group=params.user_group,
content='init content'
)
def stop(self, env):
import params
env.set_params(params)
# Kill掉 FE进程
Execute('ps -ef | grep org.apache.doris.DorisFE | grep -v grep | awk \'{print $2}\' | xargs kill -9',
user=params.doris_user,
ignore_failures=True)
# 删除pid文件
File([params.doris_pid_file],
action="delete")
# 1. 创建两个目录,一个目录是通过params.py获取到的目录,另外一个是指定的:/var/run/test目录
# 2. mode : 目录权限为0755
# 3. owner:目录所属用户
# 4. group:目录所属用户组
# 5. create_parents:父目录如果不存在,是否创建父目录
Directory(['/var/run/test2', '/var/run/test'],
action='delete',
owner=params.doris_user
)
# 1. 创建两个目录,一个目录是通过params.py获取到的目录,另外一个是指定的:/var/run/test目录
Ambari-Doris-使用客户端进行配置文件下载
需积分: 5 171 浏览量
2024-03-06
17:08:25
上传
评论
收藏 25KB ZIP 举报
jast_zsh
- 粉丝: 3w+
- 资源: 10
最新资源
- 111111111111111111
- Screenshot_2024-04-30-21-47-24-26.jpg
- Cpp1.cpp1111111111
- 利用ERP流程操作的整个订单流程.ppt
- 最新二开版本源码博客论坛源码,UI很漂亮,可切换皮肤界面.rar
- ModStartBlog现代化个人博客系统 v5.2.0源码.rar
- 带posix库的mingw编译器
- SoraAI是一款功能强大的AI助手,由OpenAI开发,以其出色的语音识别技术、广泛的知识库和高度的人工智能特性而备受瞩目
- Thinkphp开发大气响应式个人博客青春博客网站源码.rar
- 最新PHP博客网站程序源码 ThinkPHP.rar
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈