Update vanilla plugin to the latest version
New vanilla supports following features: * Oozie of 4.2.0 version * YARN, MapReduce, HDFS of latest 2.7.1 version. Also required templates for testing were added. Implements blueprint: support-vanilla-2-7-1 Change-Id: Iae884d9f044ba1fe64b6d4ff23fa6ebabdbb41d9
This commit is contained in:
parent
c1348a40ae
commit
d5cee43cea
@ -34,6 +34,7 @@ include sahara/plugins/vanilla/v1_2_1/resources/*.sh
|
||||
include sahara/plugins/vanilla/v1_2_1/resources/*.sql
|
||||
include sahara/plugins/vanilla/v1_2_1/resources/*.xml
|
||||
include sahara/plugins/vanilla/v2_6_0/resources/*.xml
|
||||
include sahara/plugins/vanilla/v2_7_1/resources/*.xml
|
||||
include sahara/plugins/hdp/versions/version_1_3_2/resources/*.template
|
||||
include sahara/plugins/hdp/versions/version_1_3_2/resources/*.json
|
||||
include sahara/plugins/hdp/versions/version_1_3_2/resources/*.sh
|
||||
|
71
etc/scenario/sahara-ci/vanilla-2.7.1.yaml.mako
Normal file
71
etc/scenario/sahara-ci/vanilla-2.7.1.yaml.mako
Normal file
@ -0,0 +1,71 @@
|
||||
clusters:
|
||||
- plugin_name: vanilla
|
||||
plugin_version: 2.7.1
|
||||
image: ${vanilla_two_seven_one_image}
|
||||
node_group_templates:
|
||||
- name: worker-dn-nm
|
||||
flavor: ${ci_flavor_id}
|
||||
node_processes:
|
||||
- datanode
|
||||
- nodemanager
|
||||
volumes_per_node: 2
|
||||
volumes_size: 2
|
||||
auto_security_group: true
|
||||
- name: worker-nm
|
||||
flavor: ${ci_flavor_id}
|
||||
node_processes:
|
||||
- nodemanager
|
||||
auto_security_group: true
|
||||
- name: worker-dn
|
||||
flavor: ${ci_flavor_id}
|
||||
node_processes:
|
||||
- datanode
|
||||
volumes_per_node: 2
|
||||
volumes_size: 2
|
||||
auto_security_group: true
|
||||
- name: master-rm-nn-hvs
|
||||
flavor: ${ci_flavor_id}
|
||||
node_processes:
|
||||
- namenode
|
||||
- resourcemanager
|
||||
- hiveserver
|
||||
- nodemanager
|
||||
auto_security_group: true
|
||||
- name: master-oo-hs-sn
|
||||
flavor: ${ci_flavor_id}
|
||||
node_processes:
|
||||
- oozie
|
||||
- historyserver
|
||||
- secondarynamenode
|
||||
- nodemanager
|
||||
auto_security_group: true
|
||||
cluster_template:
|
||||
name: vanilla271
|
||||
node_group_templates:
|
||||
master-rm-nn-hvs: 1
|
||||
master-oo-hs-sn: 1
|
||||
worker-dn-nm: 2
|
||||
worker-dn: 1
|
||||
worker-nm: 1
|
||||
cluster_configs:
|
||||
HDFS:
|
||||
dfs.replication: 1
|
||||
cluster:
|
||||
name: ${cluster_name}
|
||||
scaling:
|
||||
- operation: resize
|
||||
node_group: worker-dn-nm
|
||||
size: 1
|
||||
- operation: resize
|
||||
node_group: worker-dn
|
||||
size: 0
|
||||
- operation: resize
|
||||
node_group: worker-nm
|
||||
size: 0
|
||||
- operation: add
|
||||
node_group: worker-dn
|
||||
size: 1
|
||||
- operation: add
|
||||
node_group: worker-nm
|
||||
size: 2
|
||||
edp_jobs_flow: hadoop_2
|
0
sahara/plugins/vanilla/v2_7_1/__init__.py
Normal file
0
sahara/plugins/vanilla/v2_7_1/__init__.py
Normal file
98
sahara/plugins/vanilla/v2_7_1/config_helper.py
Normal file
98
sahara/plugins/vanilla/v2_7_1/config_helper.py
Normal file
@ -0,0 +1,98 @@
|
||||
# Copyright (c) 2015 Mirantis Inc.
|
||||
#
|
||||
# Licensed 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.
|
||||
|
||||
from oslo_config import cfg
|
||||
from oslo_log import log as logging
|
||||
|
||||
from sahara.plugins.vanilla.hadoop2 import config_helper as c_helper
|
||||
from sahara.utils import xmlutils as x
|
||||
|
||||
CONF = cfg.CONF
|
||||
CONF.import_opt("enable_data_locality", "sahara.topology.topology_helper")
|
||||
|
||||
LOG = logging.getLogger(__name__)
|
||||
|
||||
CORE_DEFAULT = x.load_hadoop_xml_defaults(
|
||||
'plugins/vanilla/v2_7_1/resources/core-default.xml')
|
||||
|
||||
HDFS_DEFAULT = x.load_hadoop_xml_defaults(
|
||||
'plugins/vanilla/v2_7_1/resources/hdfs-default.xml')
|
||||
|
||||
MAPRED_DEFAULT = x.load_hadoop_xml_defaults(
|
||||
'plugins/vanilla/v2_7_1/resources/mapred-default.xml')
|
||||
|
||||
YARN_DEFAULT = x.load_hadoop_xml_defaults(
|
||||
'plugins/vanilla/v2_7_1/resources/yarn-default.xml')
|
||||
|
||||
OOZIE_DEFAULT = x.load_hadoop_xml_defaults(
|
||||
'plugins/vanilla/v2_7_1/resources/oozie-default.xml')
|
||||
|
||||
HIVE_DEFAULT = x.load_hadoop_xml_defaults(
|
||||
'plugins/vanilla/v2_7_1/resources/hive-default.xml')
|
||||
|
||||
XML_CONFS = {
|
||||
"Hadoop": [CORE_DEFAULT],
|
||||
"HDFS": [HDFS_DEFAULT],
|
||||
"YARN": [YARN_DEFAULT],
|
||||
"MapReduce": [MAPRED_DEFAULT],
|
||||
"JobFlow": [OOZIE_DEFAULT],
|
||||
"Hive": [HIVE_DEFAULT]
|
||||
}
|
||||
|
||||
ENV_CONFS = {
|
||||
"YARN": {
|
||||
'ResourceManager Heap Size': 1024,
|
||||
'NodeManager Heap Size': 1024
|
||||
},
|
||||
"HDFS": {
|
||||
'NameNode Heap Size': 1024,
|
||||
'SecondaryNameNode Heap Size': 1024,
|
||||
'DataNode Heap Size': 1024
|
||||
},
|
||||
"MapReduce": {
|
||||
'JobHistoryServer Heap Size': 1024
|
||||
},
|
||||
"JobFlow": {
|
||||
'Oozie Heap Size': 1024
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
# Initialise plugin Hadoop configurations
|
||||
PLUGIN_XML_CONFIGS = c_helper.init_xml_configs(XML_CONFS)
|
||||
PLUGIN_ENV_CONFIGS = c_helper.init_env_configs(ENV_CONFS)
|
||||
|
||||
|
||||
def _init_all_configs():
|
||||
configs = []
|
||||
configs.extend(PLUGIN_XML_CONFIGS)
|
||||
configs.extend(PLUGIN_ENV_CONFIGS)
|
||||
configs.extend(c_helper.PLUGIN_GENERAL_CONFIGS)
|
||||
return configs
|
||||
|
||||
|
||||
PLUGIN_CONFIGS = _init_all_configs()
|
||||
|
||||
|
||||
def get_plugin_configs():
|
||||
return PLUGIN_CONFIGS
|
||||
|
||||
|
||||
def get_xml_configs():
|
||||
return PLUGIN_XML_CONFIGS
|
||||
|
||||
|
||||
def get_env_configs():
|
||||
return ENV_CONFS
|
35
sahara/plugins/vanilla/v2_7_1/edp_engine.py
Normal file
35
sahara/plugins/vanilla/v2_7_1/edp_engine.py
Normal file
@ -0,0 +1,35 @@
|
||||
# Copyright (c) 2015 Red Hat, Inc.
|
||||
#
|
||||
# Licensed 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.
|
||||
|
||||
from sahara.plugins.vanilla import confighints_helper as ch_helper
|
||||
from sahara.plugins.vanilla.hadoop2 import edp_engine
|
||||
from sahara.utils import edp
|
||||
|
||||
|
||||
class EdpOozieEngine(edp_engine.EdpOozieEngine):
|
||||
@staticmethod
|
||||
def get_possible_job_config(job_type):
|
||||
if edp.compare_job_type(job_type, edp.JOB_TYPE_HIVE):
|
||||
return {'job_config': ch_helper.get_possible_hive_config_from(
|
||||
'plugins/vanilla/v2_7_1/resources/hive-default.xml')}
|
||||
if edp.compare_job_type(job_type,
|
||||
edp.JOB_TYPE_MAPREDUCE,
|
||||
edp.JOB_TYPE_MAPREDUCE_STREAMING):
|
||||
return {'job_config': ch_helper.get_possible_mapreduce_config_from(
|
||||
'plugins/vanilla/v2_7_1/resources/mapred-default.xml')}
|
||||
if edp.compare_job_type(job_type, edp.JOB_TYPE_PIG):
|
||||
return {'job_config': ch_helper.get_possible_pig_config_from(
|
||||
'plugins/vanilla/v2_7_1/resources/mapred-default.xml')}
|
||||
return edp_engine.EdpOozieEngine.get_possible_job_config(job_type)
|
28
sahara/plugins/vanilla/v2_7_1/resources/README.rst
Normal file
28
sahara/plugins/vanilla/v2_7_1/resources/README.rst
Normal file
@ -0,0 +1,28 @@
|
||||
Apache Hadoop Configurations for Sahara
|
||||
=======================================
|
||||
|
||||
This directory contains default XML configuration files:
|
||||
|
||||
* core-default.xml
|
||||
* hdfs-default.xml
|
||||
* mapred-default.xml
|
||||
* yarn-default.xml
|
||||
* oozie-default.xml
|
||||
* hive-default.xml
|
||||
|
||||
These files are applied for Sahara's plugin of Apache Hadoop version 2.7.1
|
||||
|
||||
|
||||
Files were taken from here:
|
||||
|
||||
* `core-default.xml <https://github.com/apache/hadoop/blob/release-2.7.1/hadoop-common-project/hadoop-common/src/main/resources/core-default.xml>`_
|
||||
* `hdfs-default.xml <https://github.com/apache/hadoop/blob/release-2.7.1/hadoop-hdfs-project/hadoop-hdfs/src/main/resources/hdfs-default.xml>`_
|
||||
* `yarn-default.xml <https://github.com/apache/hadoop/blob/release-2.7.1/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/main/resources/yarn-default.xml>`_
|
||||
* `mapred-default.xml <https://github.com/apache/hadoop/blob/release-2.7.1/hadoop-mapreduce-project/hadoop-mapreduce-client/hadoop-mapreduce-client-core/src/main/resources/mapred-default.xml>`_
|
||||
* `oozie-default.xml <https://github.com/apache/oozie/blob/release-4.2.0/core/src/main/resources/oozie-default.xml>`_
|
||||
* `hive-default.xml <https://github.com/apache/hive/blob/release-0.11.0/conf/hive-default.xml.template>`_
|
||||
|
||||
XML configs are used to expose default Hadoop configurations to the users
|
||||
through Sahara's REST API. It allows users to override some config values which
|
||||
will be pushed to the provisioned VMs running Hadoop services as part of
|
||||
appropriate xml config.
|
1902
sahara/plugins/vanilla/v2_7_1/resources/core-default.xml
Normal file
1902
sahara/plugins/vanilla/v2_7_1/resources/core-default.xml
Normal file
File diff suppressed because it is too large
Load Diff
2323
sahara/plugins/vanilla/v2_7_1/resources/hdfs-default.xml
Normal file
2323
sahara/plugins/vanilla/v2_7_1/resources/hdfs-default.xml
Normal file
File diff suppressed because it is too large
Load Diff
1873
sahara/plugins/vanilla/v2_7_1/resources/hive-default.xml
Normal file
1873
sahara/plugins/vanilla/v2_7_1/resources/hive-default.xml
Normal file
File diff suppressed because it is too large
Load Diff
2128
sahara/plugins/vanilla/v2_7_1/resources/mapred-default.xml
Normal file
2128
sahara/plugins/vanilla/v2_7_1/resources/mapred-default.xml
Normal file
File diff suppressed because it is too large
Load Diff
2546
sahara/plugins/vanilla/v2_7_1/resources/oozie-default.xml
Normal file
2546
sahara/plugins/vanilla/v2_7_1/resources/oozie-default.xml
Normal file
File diff suppressed because it is too large
Load Diff
1623
sahara/plugins/vanilla/v2_7_1/resources/yarn-default.xml
Normal file
1623
sahara/plugins/vanilla/v2_7_1/resources/yarn-default.xml
Normal file
File diff suppressed because it is too large
Load Diff
140
sahara/plugins/vanilla/v2_7_1/versionhandler.py
Normal file
140
sahara/plugins/vanilla/v2_7_1/versionhandler.py
Normal file
@ -0,0 +1,140 @@
|
||||
# Copyright (c) 2015 Mirantis Inc.
|
||||
#
|
||||
# Licensed 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.
|
||||
|
||||
from oslo_config import cfg
|
||||
from oslo_log import log as logging
|
||||
|
||||
from sahara import conductor
|
||||
from sahara import context
|
||||
from sahara.plugins import utils
|
||||
from sahara.plugins.vanilla import abstractversionhandler as avm
|
||||
from sahara.plugins.vanilla.hadoop2 import config as c
|
||||
from sahara.plugins.vanilla.hadoop2 import recommendations_utils as ru
|
||||
from sahara.plugins.vanilla.hadoop2 import run_scripts as run
|
||||
from sahara.plugins.vanilla.hadoop2 import scaling as sc
|
||||
from sahara.plugins.vanilla.hadoop2 import starting_scripts as s_scripts
|
||||
from sahara.plugins.vanilla.hadoop2 import validation as vl
|
||||
from sahara.plugins.vanilla import utils as vu
|
||||
from sahara.plugins.vanilla.v2_7_1 import config_helper as c_helper
|
||||
from sahara.plugins.vanilla.v2_7_1 import edp_engine
|
||||
|
||||
|
||||
conductor = conductor.API
|
||||
LOG = logging.getLogger(__name__)
|
||||
CONF = cfg.CONF
|
||||
|
||||
|
||||
class VersionHandler(avm.AbstractVersionHandler):
|
||||
def __init__(self):
|
||||
self.pctx = {
|
||||
'env_confs': c_helper.get_env_configs(),
|
||||
'all_confs': c_helper.get_plugin_configs()
|
||||
}
|
||||
|
||||
def get_plugin_configs(self):
|
||||
return self.pctx['all_confs']
|
||||
|
||||
def get_node_processes(self):
|
||||
return {
|
||||
"Hadoop": [],
|
||||
"MapReduce": ["historyserver"],
|
||||
"HDFS": ["namenode", "datanode", "secondarynamenode"],
|
||||
"YARN": ["resourcemanager", "nodemanager"],
|
||||
"JobFlow": ["oozie"],
|
||||
"Hive": ["hiveserver"]
|
||||
}
|
||||
|
||||
def validate(self, cluster):
|
||||
vl.validate_cluster_creating(self.pctx, cluster)
|
||||
|
||||
def update_infra(self, cluster):
|
||||
pass
|
||||
|
||||
def configure_cluster(self, cluster):
|
||||
c.configure_cluster(self.pctx, cluster)
|
||||
|
||||
def start_cluster(self, cluster):
|
||||
s_scripts.start_namenode(cluster)
|
||||
s_scripts.start_secondarynamenode(cluster)
|
||||
s_scripts.start_resourcemanager(cluster)
|
||||
|
||||
run.start_dn_nm_processes(utils.get_instances(cluster))
|
||||
run.await_datanodes(cluster)
|
||||
|
||||
s_scripts.start_historyserver(cluster)
|
||||
s_scripts.start_oozie(self.pctx, cluster)
|
||||
s_scripts.start_hiveserver(self.pctx, cluster)
|
||||
|
||||
self._set_cluster_info(cluster)
|
||||
|
||||
def decommission_nodes(self, cluster, instances):
|
||||
sc.decommission_nodes(self.pctx, cluster, instances)
|
||||
|
||||
def validate_scaling(self, cluster, existing, additional):
|
||||
vl.validate_additional_ng_scaling(cluster, additional)
|
||||
vl.validate_existing_ng_scaling(self.pctx, cluster, existing)
|
||||
|
||||
def scale_cluster(self, cluster, instances):
|
||||
sc.scale_cluster(self.pctx, cluster, instances)
|
||||
|
||||
def _set_cluster_info(self, cluster):
|
||||
nn = vu.get_namenode(cluster)
|
||||
rm = vu.get_resourcemanager(cluster)
|
||||
hs = vu.get_historyserver(cluster)
|
||||
oo = vu.get_oozie(cluster)
|
||||
|
||||
info = {}
|
||||
|
||||
if rm:
|
||||
info['YARN'] = {
|
||||
'Web UI': 'http://%s:%s' % (rm.management_ip, '8088'),
|
||||
'ResourceManager': 'http://%s:%s' % (rm.management_ip, '8032')
|
||||
}
|
||||
|
||||
if nn:
|
||||
info['HDFS'] = {
|
||||
'Web UI': 'http://%s:%s' % (nn.management_ip, '50070'),
|
||||
'NameNode': 'hdfs://%s:%s' % (nn.hostname(), '9000')
|
||||
}
|
||||
|
||||
if oo:
|
||||
info['JobFlow'] = {
|
||||
'Oozie': 'http://%s:%s' % (oo.management_ip, '11000')
|
||||
}
|
||||
|
||||
if hs:
|
||||
info['MapReduce JobHistory Server'] = {
|
||||
'Web UI': 'http://%s:%s' % (hs.management_ip, '19888')
|
||||
}
|
||||
|
||||
ctx = context.ctx()
|
||||
conductor.cluster_update(ctx, cluster, {'info': info})
|
||||
|
||||
def get_edp_engine(self, cluster, job_type):
|
||||
if job_type in edp_engine.EdpOozieEngine.get_supported_job_types():
|
||||
return edp_engine.EdpOozieEngine(cluster)
|
||||
return None
|
||||
|
||||
def get_edp_job_types(self):
|
||||
return edp_engine.EdpOozieEngine.get_supported_job_types()
|
||||
|
||||
def get_edp_config_hints(self, job_type):
|
||||
return edp_engine.EdpOozieEngine.get_possible_job_config(job_type)
|
||||
|
||||
def get_open_ports(self, node_group):
|
||||
return c.get_open_ports(node_group)
|
||||
|
||||
def recommend_configs(self, cluster):
|
||||
ru.recommend_configs(cluster, self.get_plugin_configs())
|
Loading…
Reference in New Issue
Block a user