http://git-wip-us.apache.org/repos/asf/bigtop/blob/0d3448b8/bigtop-packages/src/common/ambari/ODPi/1.0/services/YARN/configuration/yarn-site.xml ---------------------------------------------------------------------- diff --git a/bigtop-packages/src/common/ambari/ODPi/1.0/services/YARN/configuration/yarn-site.xml b/bigtop-packages/src/common/ambari/ODPi/1.0/services/YARN/configuration/yarn-site.xml deleted file mode 100755 index 59ff82b..0000000 --- a/bigtop-packages/src/common/ambari/ODPi/1.0/services/YARN/configuration/yarn-site.xml +++ /dev/null @@ -1,579 +0,0 @@ -<?xml version="1.0"?> -<?xml-stylesheet type="text/xsl" href="configuration.xsl"?> -<!-- - 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. ---> -<!-- Put site-specific property overrides in this file. --> -<configuration xmlns:xi="http://www.w3.org/2001/XInclude" supports_final="true"> - <property> - <name>yarn.resourcemanager.hostname</name> - <value>localhost</value> - <description>The hostname of the RM.</description> - <on-ambari-upgrade add="false"/> - </property> - <property> - <name>yarn.resourcemanager.resource-tracker.address</name> - <value>localhost:8025</value> - <description> The address of ResourceManager. </description> - <on-ambari-upgrade add="false"/> - </property> - <property> - <name>yarn.resourcemanager.scheduler.address</name> - <value>localhost:8030</value> - <description>The address of the scheduler interface.</description> - <on-ambari-upgrade add="false"/> - </property> - <property> - <name>yarn.resourcemanager.address</name> - <value>localhost:8050</value> - <description> - The address of the applications manager interface in the - RM. - </description> - <on-ambari-upgrade add="false"/> - </property> - <property> - <name>yarn.resourcemanager.admin.address</name> - <value>localhost:8141</value> - <description>The address of the RM admin interface.</description> - <on-ambari-upgrade add="false"/> - </property> - <property> - <name>yarn.resourcemanager.scheduler.class</name> - <value>org.apache.hadoop.yarn.server.resourcemanager.scheduler.capacity.CapacityScheduler</value> - <description>The class to use as the resource scheduler.</description> - <on-ambari-upgrade add="true"/> - </property> - <property> - <name>yarn.scheduler.minimum-allocation-mb</name> - <value>512</value> - <description> - The minimum allocation for every container request at the RM, - in MBs. Memory requests lower than this won't take effect, - and the specified value will get allocated at minimum. - </description> - <display-name>Minimum Container Size (Memory)</display-name> - <value-attributes> - <type>int</type> - <minimum>0</minimum> - <maximum>5120</maximum> - <unit>MB</unit> - <increment-step>256</increment-step> - </value-attributes> - <depends-on> - <property> - <type>yarn-site</type> - <name>yarn.nodemanager.resource.memory-mb</name> - </property> - </depends-on> - <on-ambari-upgrade add="true"/> - </property> - <property> - <name>yarn.scheduler.maximum-allocation-mb</name> - <value>5120</value> - <description> - The maximum allocation for every container request at the RM, - in MBs. Memory requests higher than this won't take effect, - and will get capped to this value. - </description> - <display-name>Maximum Container Size (Memory)</display-name> - <value-attributes> - <type>int</type> - <minimum>0</minimum> - <maximum>5120</maximum> - <unit>MB</unit> - <increment-step>256</increment-step> - </value-attributes> - <depends-on> - <property> - <type>yarn-site</type> - <name>yarn.nodemanager.resource.memory-mb</name> - </property> - </depends-on> - <on-ambari-upgrade add="true"/> - </property> - <property> - <name>yarn.nodemanager.address</name> - <value>0.0.0.0:45454</value> - <description>The address of the container manager in the NM.</description> - <on-ambari-upgrade add="true"/> - </property> - <property> - <name>yarn.nodemanager.resource.memory-mb</name> - <value>5120</value> - <description>Amount of physical memory, in MB, that can be allocated - for containers.</description> - <display-name>Memory allocated for all YARN containers on a node</display-name> - <value-attributes> - <type>int</type> - <minimum>0</minimum> - <maximum>268435456</maximum> - <unit>MB</unit> - <increment-step>256</increment-step> - </value-attributes> - <on-ambari-upgrade add="true"/> - </property> - <property> - <name>yarn.application.classpath</name> - <value>/etc/hadoop/conf,/usr/lib/hadoop/*,/usr/lib/hadoop/lib/*,/usr/lib/hadoop-hdfs/*,/usr/lib/hadoop-hdfs/lib/*,/usr/lib/hadoop-yarn/*,/usr/lib/hadoop-yarn/lib/*,/usr/lib/hadoop-mapreduce/*,/usr/lib/hadoop-mapreduce/lib/*</value> - <description>Classpath for typical applications.</description> - <on-ambari-upgrade add="true"/> - </property> - <property> - <name>yarn.nodemanager.vmem-pmem-ratio</name> - <value>2.1</value> - <description>Ratio between virtual memory to physical memory when - setting memory limits for containers. Container allocations are - expressed in terms of physical memory, and virtual memory usage - is allowed to exceed this allocation by this ratio. - </description> - <display-name>Virtual Memory Ratio</display-name> - <value-attributes> - <type>float</type> - <minimum>0.1</minimum> - <maximum>5.0</maximum> - <increment-step>0.1</increment-step> - </value-attributes> - <on-ambari-upgrade add="true"/> - </property> - <property> - <name>yarn.nodemanager.container-executor.class</name> - <value>org.apache.hadoop.yarn.server.nodemanager.DefaultContainerExecutor</value> - <description>ContainerExecutor for launching containers</description> - <on-ambari-upgrade add="true"/> - </property> - <property> - <name>yarn.nodemanager.linux-container-executor.group</name> - <value>hadoop</value> - <description>Unix group of the NodeManager</description> - <depends-on> - <property> - <type>cluster-env</type> - <name>user_group</name> - </property> - </depends-on> - <on-ambari-upgrade add="true"/> - </property> - <property> - <name>yarn.nodemanager.aux-services</name> - <value>mapreduce_shuffle</value> - <description>Auxilliary services of NodeManager. A valid service name should only contain a-zA-Z0-9_ and can - not start with numbers</description> - <on-ambari-upgrade add="true"/> - </property> - <property> - <name>yarn.nodemanager.aux-services.mapreduce_shuffle.class</name> - <value>org.apache.hadoop.mapred.ShuffleHandler</value> - <description>The auxiliary service class to use </description> - <on-ambari-upgrade add="true"/> - </property> - <property> - <name>yarn.nodemanager.log-dirs</name> - <value>/hadoop/yarn/log</value> - <description> - Where to store container logs. An application's localized log directory - will be found in ${yarn.nodemanager.log-dirs}/application_${appid}. - Individual containers' log directories will be below this, in directories - named container_{$contid}. Each container directory will contain the files - stderr, stdin, and syslog generated by that container. - </description> - <value-attributes> - <type>directories</type> - </value-attributes> - <on-ambari-upgrade add="true"/> - </property> - <property> - <name>yarn.nodemanager.local-dirs</name> - <value>/hadoop/yarn/local</value> - <description> - List of directories to store localized files in. An - application's localized file directory will be found in: - ${yarn.nodemanager.local-dirs}/usercache/${user}/appcache/application_${appid}. - Individual containers' work directories, called container_${contid}, will - be subdirectories of this. - </description> - <value-attributes> - <type>directories</type> - </value-attributes> - <on-ambari-upgrade add="true"/> - </property> - <property> - <name>yarn.nodemanager.container-monitor.interval-ms</name> - <value>3000</value> - <description> - The interval, in milliseconds, for which the node manager - waits between two cycles of monitoring its containers' memory usage. - </description> - <on-ambari-upgrade add="true"/> - </property> - <!-- - <property> - <name>yarn.nodemanager.health-checker.script.path</name> - <value>/etc/hadoop/conf/health_check_nodemanager</value> - <description>The health check script to run.</description> - </property> - --> - <property> - <name>yarn.nodemanager.health-checker.interval-ms</name> - <value>135000</value> - <description>Frequency of running node health script.</description> - <on-ambari-upgrade add="true"/> - </property> - <property> - <name>yarn.nodemanager.health-checker.script.timeout-ms</name> - <value>60000</value> - <description>Script time out period.</description> - <on-ambari-upgrade add="true"/> - </property> - <property> - <name>yarn.nodemanager.log.retain-second</name> - <value>604800</value> - <description> - Time in seconds to retain user logs. Only applicable if - log aggregation is disabled. - </description> - <on-ambari-upgrade add="true"/> - </property> - <property> - <name>yarn.log-aggregation-enable</name> - <value>true</value> - <description>Whether to enable log aggregation. </description> - <display-name>Enable Log Aggregation</display-name> - <value-attributes> - <type>boolean</type> - </value-attributes> - <on-ambari-upgrade add="true"/> - </property> - <property> - <name>yarn.nodemanager.remote-app-log-dir</name> - <value>/app-logs</value> - <description>Location to aggregate logs to. </description> - <property-type>NOT_MANAGED_HDFS_PATH</property-type> - <on-ambari-upgrade add="true"/> - </property> - <property> - <name>yarn.nodemanager.remote-app-log-dir-suffix</name> - <value>logs</value> - <description> - The remote log dir will be created at - {yarn.nodemanager.remote-app-log-dir}/${user}/{thisParam}. - </description> - <on-ambari-upgrade add="true"/> - </property> - <property> - <name>yarn.nodemanager.log-aggregation.compression-type</name> - <value>gz</value> - <description> - T-file compression types used to compress aggregated logs. - </description> - <on-ambari-upgrade add="true"/> - </property> - <property> - <name>yarn.nodemanager.delete.debug-delay-sec</name> - <value>0</value> - <description> - Number of seconds after an application finishes before the nodemanager's - DeletionService will delete the application's localized file directory - and log directory. - - To diagnose Yarn application problems, set this property's value large - enough (for example, to 600 = 10 minutes) to permit examination of these - directories. After changing the property's value, you must restart the - nodemanager in order for it to have an effect. - - The roots of Yarn applications' work directories is configurable with - the yarn.nodemanager.local-dirs property (see below), and the roots - of the Yarn applications' log directories is configurable with the - yarn.nodemanager.log-dirs property (see also below). - </description> - <on-ambari-upgrade add="true"/> - </property> - <property> - <name>yarn.log-aggregation.retain-seconds</name> - <value>2592000</value> - <description> - How long to keep aggregation logs before deleting them. -1 disables. - Be careful set this too small and you will spam the name node. - </description> - <on-ambari-upgrade add="true"/> - </property> - <property> - <name>yarn.nodemanager.admin-env</name> - <value>MALLOC_ARENA_MAX=$MALLOC_ARENA_MAX</value> - <description> - Environment variables that should be forwarded from the NodeManager's - environment to the container's. - </description> - <on-ambari-upgrade add="true"/> - </property> - <property> - <name>yarn.nodemanager.disk-health-checker.min-healthy-disks</name> - <value>0.25</value> - <description> - The minimum fraction of number of disks to be healthy for the nodemanager - to launch new containers. This correspond to both - yarn-nodemanager.local-dirs and yarn.nodemanager.log-dirs. i.e. - If there are less number of healthy local-dirs (or log-dirs) available, - then new containers will not be launched on this node. - </description> - <on-ambari-upgrade add="true"/> - </property> - <property> - <name>yarn.resourcemanager.am.max-attempts</name> - <value>2</value> - <description> - The maximum number of application attempts. It's a global - setting for all application masters. Each application master can specify - its individual maximum number of application attempts via the API, but the - individual number cannot be more than the global upper bound. If it is, - the resourcemanager will override it. The default number is set to 2, to - allow at least one retry for AM. - </description> - <on-ambari-upgrade add="true"/> - </property> - <property> - <name>yarn.resourcemanager.webapp.address</name> - <value>localhost:8088</value> - <description> - The address of the RM web application. - </description> - <on-ambari-upgrade add="false"/> - </property> - <property> - <name>yarn.resourcemanager.webapp.https.address</name> - <value>localhost:8090</value> - <description> - The https address of the RM web application. - </description> - <on-ambari-upgrade add="false"/> - </property> - <property> - <name>yarn.nodemanager.vmem-check-enabled</name> - <value>false</value> - <description> - Whether virtual memory limits will be enforced for containers. - </description> - <on-ambari-upgrade add="true"/> - </property> - <property> - <name>yarn.log.server.url</name> - <value>http://localhost:19888/jobhistory/logs</value> - <description> - URI for the HistoryServer's log resource - </description> - <on-ambari-upgrade add="false"/> - </property> - <property> - <name>yarn.resourcemanager.nodes.exclude-path</name> - <value>/etc/hadoop/conf/yarn.exclude</value> - <description> - Names a file that contains a list of hosts that are - not permitted to connect to the resource manager. The full pathname of the - file must be specified. If the value is empty, no hosts are - excluded. - </description> - <on-ambari-upgrade add="true"/> - </property> - <property> - <name>yarn.http.policy</name> - <value>HTTP_ONLY</value> - <description> - This configures the HTTP endpoint for Yarn Daemons.The following values are supported: - HTTP_ONLY : Service is provided only on http - HTTPS_ONLY : Service is provided only on https - </description> - <on-ambari-upgrade add="true"/> - </property> -==================== - <property> - <name>yarn.timeline-service.enabled</name> - <value>true</value> - <description>Indicate to clients whether timeline service is enabled or not. - If enabled, clients will put entities and events to the timeline server. - </description> - <value-attributes> - <type>boolean</type> - </value-attributes> - <on-ambari-upgrade add="true"/> - </property> - <property> - <name>yarn.timeline-service.generic-application-history.store-class</name> - <value>org.apache.hadoop.yarn.server.applicationhistoryservice.NullApplicationHistoryStore</value> - <description> - Store class name for history store, defaulting to file system store - </description> - <on-ambari-upgrade add="true"/> - </property> - <property> - <name>yarn.timeline-service.leveldb-timeline-store.path</name> - <value>/var/log/hadoop-yarn/timeline</value> - <description> - Store file name for leveldb timeline store - </description> - <value-attributes> - <type>directory</type> - </value-attributes> - <on-ambari-upgrade add="true"/> - </property> - <property> - <name>yarn.timeline-service.webapp.address</name> - <value>localhost:8188</value> - <description> - The http address of the timeline service web application. - </description> - <on-ambari-upgrade add="false"/> - </property> - <property> - <name>yarn.timeline-service.webapp.https.address</name> - <value>localhost:8190</value> - <description> - The http address of the timeline service web application. - </description> - <on-ambari-upgrade add="false"/> - </property> - <property> - <name>yarn.timeline-service.address</name> - <value>localhost:10200</value> - <description> - This is default address for the timeline server to start - the RPC server. - </description> - <on-ambari-upgrade add="false"/> - </property> - <property> - <description>Enable age off of timeline store data.</description> - <name>yarn.timeline-service.ttl-enable</name> - <value>true</value> - <value-attributes> - <type>boolean</type> - </value-attributes> - <on-ambari-upgrade add="true"/> - </property> - <property> - <description>Time to live for timeline store data in milliseconds.</description> - <name>yarn.timeline-service.ttl-ms</name> - <value>2678400000</value> - <value-attributes> - <type>int</type> - </value-attributes> - <on-ambari-upgrade add="true"/> - </property> - <property> - <description>Length of time to wait between deletion cycles of leveldb timeline store in milliseconds.</description> - <name>yarn.timeline-service.leveldb-timeline-store.ttl-interval-ms</name> - <value>300000</value> - <value-attributes> - <type>int</type> - </value-attributes> - <on-ambari-upgrade add="true"/> - </property> -============================= - <property> - <name>yarn.timeline-service.recovery.enabled</name> - <description> - Enable timeline server to recover state after starting. If - true, then yarn.timeline-service.state-store-class must be specified. - </description> - <value>true</value> - <on-ambari-upgrade add="true"/> - </property> - <property> - <name>yarn.acl.enable</name> - <value>false</value> - <description> Are acls enabled. </description> - <on-ambari-upgrade add="true"/> - </property> - <property> - <name>yarn.authorization-provider</name> - <description> Yarn authorization provider class. </description> - <on-ambari-upgrade add="true"/> - </property> - <property> - <name>yarn.admin.acl</name> - <value>yarn</value> - <description> ACL of who can be admin of the YARN cluster. </description> - <value-attributes> - <empty-value-valid>true</empty-value-valid> - </value-attributes> - <on-ambari-upgrade add="true"/> - </property> - <!--ats v1.5 properties--> - <property> - <name>yarn.timeline-service.store-class</name> - <value>org.apache.hadoop.yarn.server.timeline.LeveldbTimelineStore</value> - <description>Main storage class for YARN timeline server.</description> - <on-ambari-upgrade add="true"/> - </property> - <property> - <name>yarn.timeline-service.entity-group-fs-store.active-dir</name> - <value>/ats/active/</value> - <description>DFS path to store active application’s timeline data</description> - <on-ambari-upgrade add="true"/> - </property> - <property> - <name>yarn.timeline-service.entity-group-fs-store.done-dir</name> - <value>/ats/done/</value> - <description>DFS path to store done application’s timeline data</description> - <on-ambari-upgrade add="true"/> - </property> - <property> - <name>yarn.timeline-service.entity-group-fs-store.group-id-plugin-classes</name> - <value/> - <description>Plugins that can translate a timeline entity read request into a list of timeline cache ids, separated by commas. </description> - <value-attributes> - <empty-value-valid>true</empty-value-valid> - </value-attributes> - <on-ambari-upgrade add="true"/> - </property> - <!-- advanced ats v1.5 properties--> - <property> - <name>yarn.timeline-service.entity-group-fs-store.summary-store</name> - <description>Summary storage for ATS v1.5</description> - <!-- Use rolling leveldb, advanced --> - <value>org.apache.hadoop.yarn.server.timeline.RollingLevelDBTimelineStore</value> - <on-ambari-upgrade add="true"/> - </property> - <property> - <name>yarn.timeline-service.entity-group-fs-store.scan-interval-seconds</name> - <description> - Scan interval for ATS v1.5 entity group file system storage reader.This - value controls how frequent the reader will scan the HDFS active directory - for application status. - </description> - <!-- Default is 60 seconds, advanced --> - <value>60</value> - <on-ambari-upgrade add="true"/> - </property> - <property> - <name>yarn.timeline-service.entity-group-fs-store.cleaner-interval-seconds</name> - <description> - Scan interval for ATS v1.5 entity group file system storage cleaner.This - value controls how frequent the reader will scan the HDFS done directory - for stale application data. - </description> - <!-- 3600 is default, advanced --> - <value>3600</value> - <on-ambari-upgrade add="true"/> - </property> - <property> - <name>yarn.timeline-service.entity-group-fs-store.retain-seconds</name> - <description> - How long the ATS v1.5 entity group file system storage will keep an - application's data in the done directory. - </description> - <!-- 7 days is default, advanced --> - <value>604800</value> - <on-ambari-upgrade add="true"/> - </property> -</configuration>
http://git-wip-us.apache.org/repos/asf/bigtop/blob/0d3448b8/bigtop-packages/src/common/ambari/ODPi/1.0/services/YARN/kerberos.json ---------------------------------------------------------------------- diff --git a/bigtop-packages/src/common/ambari/ODPi/1.0/services/YARN/kerberos.json b/bigtop-packages/src/common/ambari/ODPi/1.0/services/YARN/kerberos.json deleted file mode 100755 index 4093431..0000000 --- a/bigtop-packages/src/common/ambari/ODPi/1.0/services/YARN/kerberos.json +++ /dev/null @@ -1,214 +0,0 @@ -{ - "services": [ - { - "name": "YARN", - "identities": [ - { - "name": "/spnego" - }, - { - "name": "/smokeuser" - } - ], - "configurations": [ - { - "yarn-site": { - "yarn.timeline-service.enabled": "false", - "yarn.timeline-service.http-authentication.type": "kerberos", - "yarn.acl.enable": "true", - "yarn.timeline-service.http-authentication.signature.secret": "", - "yarn.timeline-service.http-authentication.signature.secret.file": "", - "yarn.timeline-service.http-authentication.signer.secret.provider": "", - "yarn.timeline-service.http-authentication.signer.secret.provider.object": "", - "yarn.timeline-service.http-authentication.token.validity": "", - "yarn.timeline-service.http-authentication.cookie.domain": "", - "yarn.timeline-service.http-authentication.cookie.path": "", - "yarn.timeline-service.http-authentication.proxyusers.*.hosts": "", - "yarn.timeline-service.http-authentication.proxyusers.*.users": "", - "yarn.timeline-service.http-authentication.proxyusers.*.groups": "", - "yarn.timeline-service.http-authentication.kerberos.name.rules": "", - "yarn.resourcemanager.proxyusers.*.groups": "", - "yarn.resourcemanager.proxyusers.*.hosts": "", - "yarn.resourcemanager.proxyusers.*.users": "", - "yarn.resourcemanager.proxy-user-privileges.enabled": "true", - "yarn.nodemanager.linux-container-executor.cgroups.mount-path": "" - } - }, - { - "core-site": { - "hadoop.proxyuser.${yarn-env/yarn_user}.groups": "*", - "hadoop.proxyuser.${yarn-env/yarn_user}.hosts": "${clusterHostInfo/rm_host}" - } - } - ], - "components": [ - { - "name": "NODEMANAGER", - "identities": [ - { - "name": "nodemanager_nm", - "principal": { - "value": "nm/_HOST@${realm}", - "type" : "service", - "configuration": "yarn-site/yarn.nodemanager.principal", - "local_username": "${yarn-env/yarn_user}" - }, - "keytab": { - "file": "${keytab_dir}/nm.service.keytab", - "owner": { - "name": "${yarn-env/yarn_user}", - "access": "r" - }, - "group": { - "name": "${cluster-env/user_group}", - "access": "" - }, - "configuration": "yarn-site/yarn.nodemanager.keytab" - } - }, - { - "name": "/spnego", - "principal": { - "configuration": "yarn-site/yarn.nodemanager.webapp.spnego-principal" - }, - "keytab": { - "configuration": "yarn-site/yarn.nodemanager.webapp.spnego-keytab-file" - } - } - ], - "configurations": [ - { - "yarn-site": { - "yarn.nodemanager.container-executor.class": "org.apache.hadoop.yarn.server.nodemanager.LinuxContainerExecutor" - } - } - ] - }, - { - "name": "RESOURCEMANAGER", - "identities": [ - { - "name": "resource_manager_rm", - "principal": { - "value": "rm/_HOST@${realm}", - "type" : "service", - "configuration": "yarn-site/yarn.resourcemanager.principal", - "local_username": "${yarn-env/yarn_user}" - }, - "keytab": { - "file": "${keytab_dir}/rm.service.keytab", - "owner": { - "name": "${yarn-env/yarn_user}", - "access": "r" - }, - "group": { - "name": "${cluster-env/user_group}", - "access": "" - }, - "configuration": "yarn-site/yarn.resourcemanager.keytab" - } - }, - { - "name": "/spnego", - "principal": { - "configuration": "yarn-site/yarn.resourcemanager.webapp.spnego-principal" - }, - "keytab": { - "configuration": "yarn-site/yarn.resourcemanager.webapp.spnego-keytab-file" - } - } - ] - }, - { - "name": "APP_TIMELINE_SERVER", - "identities": [ - { - "name": "app_timeline_server_yarn", - "principal": { - "value": "yarn/_HOST@${realm}", - "type" : "service", - "configuration": "yarn-site/yarn.timeline-service.principal", - "local_username": "${yarn-env/yarn_user}" - }, - "keytab": { - "file": "${keytab_dir}/yarn.service.keytab", - "owner": { - "name": "${yarn-env/yarn_user}", - "access": "r" - }, - "group": { - "name": "${cluster-env/user_group}", - "access": "" - }, - "configuration": "yarn-site/yarn.timeline-service.keytab" - } - }, - { - "name": "/spnego", - "principal": { - "configuration": "yarn-site/yarn.timeline-service.http-authentication.kerberos.principal" - }, - "keytab": { - "configuration": "yarn-site/yarn.timeline-service.http-authentication.kerberos.keytab" - } - }, - { - "name": "/HDFS/NAMENODE/hdfs" - } - ] - } - ] - }, - { - "name": "MAPREDUCE2", - "identities": [ - { - "name": "/spnego" - }, - { - "name": "/smokeuser" - } - ], - "components": [ - { - "name": "HISTORYSERVER", - "identities": [ - { - "name": "/HDFS/NAMENODE/hdfs" - }, - { - "name": "history_server_jhs", - "principal": { - "value": "jhs/_HOST@${realm}", - "type" : "service", - "configuration": "mapred-site/mapreduce.jobhistory.principal", - "local_username": "${mapred-env/mapred_user}" - }, - "keytab": { - "file": "${keytab_dir}/jhs.service.keytab", - "owner": { - "name": "${mapred-env/mapred_user}", - "access": "r" - }, - "group": { - "name": "${cluster-env/user_group}", - "access": "" - }, - "configuration": "mapred-site/mapreduce.jobhistory.keytab" - } - }, - { - "name": "/spnego", - "principal": { - "configuration": "mapred-site/mapreduce.jobhistory.webapp.spnego-principal" - }, - "keytab": { - "configuration": "mapred-site/mapreduce.jobhistory.webapp.spnego-keytab-file" - } - } - ] - } - ] - } - ] -} http://git-wip-us.apache.org/repos/asf/bigtop/blob/0d3448b8/bigtop-packages/src/common/ambari/ODPi/1.0/services/YARN/metainfo.xml ---------------------------------------------------------------------- diff --git a/bigtop-packages/src/common/ambari/ODPi/1.0/services/YARN/metainfo.xml b/bigtop-packages/src/common/ambari/ODPi/1.0/services/YARN/metainfo.xml deleted file mode 100755 index 3e79bc5..0000000 --- a/bigtop-packages/src/common/ambari/ODPi/1.0/services/YARN/metainfo.xml +++ /dev/null @@ -1,317 +0,0 @@ -<?xml version="1.0"?> -<!-- - 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. ---> - -<metainfo> - <schemaVersion>2.0</schemaVersion> - <services> - <service> - <name>YARN</name> - <displayName>YARN</displayName> - <comment>Apache Hadoop NextGen MapReduce (YARN)</comment> - <version>2.7.1+odpi</version> - <components> - - <component> - <name>APP_TIMELINE_SERVER</name> - <displayName>App Timeline Server</displayName> - <category>MASTER</category> - <cardinality>0-1</cardinality> - <versionAdvertised>false</versionAdvertised> - <reassignAllowed>true</reassignAllowed> - <commandScript> - <script>scripts/application_timeline_server.py</script> - <scriptType>PYTHON</scriptType> - <timeout>1200</timeout> - </commandScript> - </component> - - <component> - <name>RESOURCEMANAGER</name> - <displayName>ResourceManager</displayName> - <category>MASTER</category> - <cardinality>1</cardinality> - <versionAdvertised>false</versionAdvertised> - <reassignAllowed>true</reassignAllowed> - <commandScript> - <script>scripts/resourcemanager.py</script> - <scriptType>PYTHON</scriptType> - <timeout>1200</timeout> - </commandScript> - <logs> - <log> - <logId>yarn_resourcemanager</logId> - <primary>true</primary> - </log> - <log> - <logId>yarn_historyserver</logId> - </log> - <log> - <logId>yarn_jobsummary</logId> - </log> - </logs> - <customCommands> - <customCommand> - <name>DECOMMISSION</name> - <commandScript> - <script>scripts/resourcemanager.py</script> - <scriptType>PYTHON</scriptType> - <timeout>600</timeout> - </commandScript> - </customCommand> - <customCommand> - <name>REFRESHQUEUES</name> - <commandScript> - <script>scripts/resourcemanager.py</script> - <scriptType>PYTHON</scriptType> - <timeout>600</timeout> - </commandScript> - </customCommand> - </customCommands> - <configuration-dependencies> - <config-type>capacity-scheduler</config-type> - <config-type>hdfs-site</config-type> - </configuration-dependencies> - </component> - - <component> - <name>NODEMANAGER</name> - <displayName>NodeManager</displayName> - <category>SLAVE</category> - <cardinality>1+</cardinality> - <versionAdvertised>false</versionAdvertised> - <decommissionAllowed>true</decommissionAllowed> - <commandScript> - <script>scripts/nodemanager.py</script> - <scriptType>PYTHON</scriptType> - <timeout>1200</timeout> - </commandScript> - <bulkCommands> - <displayName>NodeManagers</displayName> - <!-- Used by decommission and recommission --> - <masterComponent>RESOURCEMANAGER</masterComponent> - </bulkCommands> - <logs> - <log> - <logId>yarn_nodemanager</logId> - </log> - </logs> - </component> - - <component> - <name>YARN_CLIENT</name> - <displayName>YARN Client</displayName> - <category>CLIENT</category> - <cardinality>1+</cardinality> - <versionAdvertised>false</versionAdvertised> - <commandScript> - <script>scripts/yarn_client.py</script> - <scriptType>PYTHON</scriptType> - <timeout>1200</timeout> - </commandScript> - <configFiles> - <configFile> - <type>xml</type> - <fileName>yarn-site.xml</fileName> - <dictionaryName>yarn-site</dictionaryName> - </configFile> - <configFile> - <type>xml</type> - <fileName>core-site.xml</fileName> - <dictionaryName>core-site</dictionaryName> - </configFile> - <configFile> - <type>env</type> - <fileName>yarn-env.sh</fileName> - <dictionaryName>yarn-env</dictionaryName> - </configFile> - <configFile> - <type>env</type> - <fileName>log4j.properties</fileName> - <dictionaryName>hdfs-log4j,yarn-log4j</dictionaryName> - </configFile> - <configFile> - <type>xml</type> - <fileName>capacity-scheduler.xml</fileName> - <dictionaryName>capacity-scheduler</dictionaryName> - </configFile> - </configFiles> - </component> - </components> - - <osSpecifics> - <osSpecific> - <osFamily>any</osFamily> - <packages> - <package> - <name>hadoop-yarn</name> - </package> - <package> - <name>hadoop-hdfs</name> - </package> - <package> - <name>hadoop-mapreduce</name> - </package> - </packages> - </osSpecific> - </osSpecifics> - - <commandScript> - <script>scripts/service_check.py</script> - <scriptType>PYTHON</scriptType> - <timeout>300</timeout> - </commandScript> - - <requiredServices> - <service>HDFS</service> - <service>MAPREDUCE2</service> - </requiredServices> - - <configuration-dependencies> - <config-type>yarn-site</config-type> - <config-type>yarn-env</config-type> - <config-type>hdfs-site</config-type> - <config-type>hadoop-env</config-type> - <config-type>core-site</config-type> - <config-type>mapred-site</config-type> - <config-type>yarn-log4j</config-type> - <config-type>ams-ssl-client</config-type> - <config-type>ranger-yarn-plugin-properties</config-type> - <config-type>ranger-yarn-audit</config-type> - <config-type>ranger-yarn-policymgr-ssl</config-type> - <config-type>ranger-yarn-security</config-type> - </configuration-dependencies> - <widgetsFileName>YARN_widgets.json</widgetsFileName> - <metricsFileName>YARN_metrics.json</metricsFileName> - </service> - - <service> - <name>MAPREDUCE2</name> - <displayName>MapReduce2</displayName> - <comment>Apache Hadoop NextGen MapReduce (YARN)</comment> - <version>2.7.1+odpi</version> - <components> - <component> - <name>HISTORYSERVER</name> - <displayName>History Server</displayName> - <category>MASTER</category> - <cardinality>1</cardinality> - <versionAdvertised>false</versionAdvertised> - <reassignAllowed>true</reassignAllowed> - <auto-deploy> - <enabled>true</enabled> - <co-locate>YARN/RESOURCEMANAGER</co-locate> - </auto-deploy> - <dependencies> - <dependency> - <name>HDFS/HDFS_CLIENT</name> - <scope>host</scope> - <auto-deploy> - <enabled>true</enabled> - </auto-deploy> - </dependency> - <dependency> - <name>TEZ/TEZ_CLIENT</name> - <scope>host</scope> - <auto-deploy> - <enabled>true</enabled> - </auto-deploy> - </dependency> - </dependencies> - <commandScript> - <script>scripts/historyserver.py</script> - <scriptType>PYTHON</scriptType> - <timeout>1200</timeout> - </commandScript> - <logs> - <log> - <logId>mapred_historyserver</logId> - <primary>true</primary> - </log> - </logs> - </component> - - <component> - <name>MAPREDUCE2_CLIENT</name> - <displayName>MapReduce2 Client</displayName> - <category>CLIENT</category> - <cardinality>0+</cardinality> - <versionAdvertised>false</versionAdvertised> - <commandScript> - <script>scripts/mapreduce2_client.py</script> - <scriptType>PYTHON</scriptType> - <timeout>1200</timeout> - </commandScript> - <configFiles> - <configFile> - <type>xml</type> - <fileName>mapred-site.xml</fileName> - <dictionaryName>mapred-site</dictionaryName> - </configFile> - <configFile> - <type>xml</type> - <fileName>core-site.xml</fileName> - <dictionaryName>core-site</dictionaryName> - </configFile> - <configFile> - <type>env</type> - <fileName>mapred-env.sh</fileName> - <dictionaryName>mapred-env</dictionaryName> - </configFile> - </configFiles> - </component> - </components> - - <osSpecifics> - <osSpecific> - <osFamily>any</osFamily> - <packages> - <package> - <name>hadoop-mapreduce</name> - </package> - </packages> - </osSpecific> - </osSpecifics> - - <commandScript> - <script>scripts/mapred_service_check.py</script> - <scriptType>PYTHON</scriptType> - <timeout>300</timeout> - </commandScript> - - <requiredServices> - <service>YARN</service> - </requiredServices> - - <configuration-dir>configuration-mapred</configuration-dir> - - <configuration-dependencies> - <config-type>hdfs-site</config-type> - <config-type>hadoop-env</config-type> - <config-type>core-site</config-type> - <config-type>mapred-site</config-type> - <config-type>mapred-env</config-type> - <config-type>ssl-client</config-type> - <config-type>ssl-server</config-type> - <config-type>ams-ssl-client</config-type> - </configuration-dependencies> - <restartRequiredAfterRackChange>true</restartRequiredAfterRackChange> - <widgetsFileName>MAPREDUCE2_widgets.json</widgetsFileName> - <metricsFileName>MAPREDUCE2_metrics.json</metricsFileName> - </service> - </services> -</metainfo> http://git-wip-us.apache.org/repos/asf/bigtop/blob/0d3448b8/bigtop-packages/src/common/ambari/ODPi/1.0/services/YARN/package/.hash ---------------------------------------------------------------------- diff --git a/bigtop-packages/src/common/ambari/ODPi/1.0/services/YARN/package/.hash b/bigtop-packages/src/common/ambari/ODPi/1.0/services/YARN/package/.hash deleted file mode 100755 index c26dcc7..0000000 --- a/bigtop-packages/src/common/ambari/ODPi/1.0/services/YARN/package/.hash +++ /dev/null @@ -1 +0,0 @@ -51572fff0a03b67b13f41bbe7c55c4c2b682d089 \ No newline at end of file http://git-wip-us.apache.org/repos/asf/bigtop/blob/0d3448b8/bigtop-packages/src/common/ambari/ODPi/1.0/services/YARN/package/alerts/alert_nodemanager_health.py ---------------------------------------------------------------------- diff --git a/bigtop-packages/src/common/ambari/ODPi/1.0/services/YARN/package/alerts/alert_nodemanager_health.py b/bigtop-packages/src/common/ambari/ODPi/1.0/services/YARN/package/alerts/alert_nodemanager_health.py deleted file mode 100755 index d7159e4..0000000 --- a/bigtop-packages/src/common/ambari/ODPi/1.0/services/YARN/package/alerts/alert_nodemanager_health.py +++ /dev/null @@ -1,209 +0,0 @@ -#!/usr/bin/env python - -""" -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 ambari_simplejson as json # simplejson is much faster comparing to Python 2.6 json module and has the same functions set. -import socket -import urllib2 -import logging -import traceback -from ambari_commons import OSCheck -from ambari_commons.inet_utils import resolve_address -from resource_management.libraries.functions.curl_krb_request import curl_krb_request -from resource_management.libraries.functions.curl_krb_request import DEFAULT_KERBEROS_KINIT_TIMER_MS -from resource_management.libraries.functions.curl_krb_request import KERBEROS_KINIT_TIMER_PARAMETER -from resource_management.core.environment import Environment - -RESULT_CODE_OK = 'OK' -RESULT_CODE_CRITICAL = 'CRITICAL' -RESULT_CODE_UNKNOWN = 'UNKNOWN' - -NODEMANAGER_HTTP_ADDRESS_KEY = '{{yarn-site/yarn.nodemanager.webapp.address}}' -NODEMANAGER_HTTPS_ADDRESS_KEY = '{{yarn-site/yarn.nodemanager.webapp.https.address}}' -YARN_HTTP_POLICY_KEY = '{{yarn-site/yarn.http.policy}}' - -OK_MESSAGE = 'NodeManager Healthy' -CRITICAL_CONNECTION_MESSAGE = 'Connection failed to {0} ({1})' -CRITICAL_HTTP_STATUS_MESSAGE = 'HTTP {0} returned from {1} ({2}) \n{3}' -CRITICAL_NODEMANAGER_STATUS_MESSAGE = 'NodeManager returned an unexpected status of "{0}"' -CRITICAL_NODEMANAGER_UNKNOWN_JSON_MESSAGE = 'Unable to determine NodeManager health from unexpected JSON response' - -KERBEROS_KEYTAB = '{{yarn-site/yarn.nodemanager.webapp.spnego-keytab-file}}' -KERBEROS_PRINCIPAL = '{{yarn-site/yarn.nodemanager.webapp.spnego-principal}}' -SECURITY_ENABLED_KEY = '{{cluster-env/security_enabled}}' -SMOKEUSER_KEY = '{{cluster-env/smokeuser}}' -EXECUTABLE_SEARCH_PATHS = '{{kerberos-env/executable_search_paths}}' - -NODEMANAGER_DEFAULT_PORT = 8042 - -CONNECTION_TIMEOUT_KEY = 'connection.timeout' -CONNECTION_TIMEOUT_DEFAULT = 5.0 - -LOGGER_EXCEPTION_MESSAGE = "[Alert] NodeManager Health on {0} fails:" -logger = logging.getLogger('ambari_alerts') - -def get_tokens(): - """ - Returns a tuple of tokens in the format {{site/property}} that will be used - to build the dictionary passed into execute - """ - return (NODEMANAGER_HTTP_ADDRESS_KEY,NODEMANAGER_HTTPS_ADDRESS_KEY, EXECUTABLE_SEARCH_PATHS, - YARN_HTTP_POLICY_KEY, SMOKEUSER_KEY, KERBEROS_KEYTAB, KERBEROS_PRINCIPAL, SECURITY_ENABLED_KEY) - - -def execute(configurations={}, parameters={}, host_name=None): - """ - Returns a tuple containing the result code and a pre-formatted result label - - Keyword arguments: - configurations (dictionary): a mapping of configuration key to value - parameters (dictionary): a mapping of script parameter key to value - host_name (string): the name of this host where the alert is running - """ - result_code = RESULT_CODE_UNKNOWN - - if configurations is None: - return (result_code, ['There were no configurations supplied to the script.']) - - if host_name is None: - host_name = socket.getfqdn() - - scheme = 'http' - http_uri = None - https_uri = None - http_policy = 'HTTP_ONLY' - - if SMOKEUSER_KEY in configurations: - smokeuser = configurations[SMOKEUSER_KEY] - - executable_paths = None - if EXECUTABLE_SEARCH_PATHS in configurations: - executable_paths = configurations[EXECUTABLE_SEARCH_PATHS] - - security_enabled = False - if SECURITY_ENABLED_KEY in configurations: - security_enabled = str(configurations[SECURITY_ENABLED_KEY]).upper() == 'TRUE' - - kerberos_keytab = None - if KERBEROS_KEYTAB in configurations: - kerberos_keytab = configurations[KERBEROS_KEYTAB] - - kerberos_principal = None - if KERBEROS_PRINCIPAL in configurations: - kerberos_principal = configurations[KERBEROS_PRINCIPAL] - kerberos_principal = kerberos_principal.replace('_HOST', host_name) - - if NODEMANAGER_HTTP_ADDRESS_KEY in configurations: - http_uri = configurations[NODEMANAGER_HTTP_ADDRESS_KEY] - - if NODEMANAGER_HTTPS_ADDRESS_KEY in configurations: - https_uri = configurations[NODEMANAGER_HTTPS_ADDRESS_KEY] - - if YARN_HTTP_POLICY_KEY in configurations: - http_policy = configurations[YARN_HTTP_POLICY_KEY] - - - # parse script arguments - connection_timeout = CONNECTION_TIMEOUT_DEFAULT - if CONNECTION_TIMEOUT_KEY in parameters: - connection_timeout = float(parameters[CONNECTION_TIMEOUT_KEY]) - - - # determine the right URI and whether to use SSL - host_port = http_uri - if http_policy == 'HTTPS_ONLY': - scheme = 'https' - - if https_uri is not None: - host_port = https_uri - - label = '' - url_response = None - node_healthy = 'false' - total_time = 0 - - # replace hostname on host fqdn to make it work on all environments - if host_port is not None: - if ":" in host_port: - uri_host, uri_port = host_port.split(':') - host_port = '{0}:{1}'.format(host_name, uri_port) - else: - host_port = host_name - - # some yarn-site structures don't have the web ui address - if host_port is None: - host_port = '{0}:{1}'.format(host_name, NODEMANAGER_DEFAULT_PORT) - - query = "{0}://{1}/ws/v1/node/info".format(scheme, host_port) - - try: - if kerberos_principal is not None and kerberos_keytab is not None and security_enabled: - env = Environment.get_instance() - - # curl requires an integer timeout - curl_connection_timeout = int(connection_timeout) - - kinit_timer_ms = parameters.get(KERBEROS_KINIT_TIMER_PARAMETER, DEFAULT_KERBEROS_KINIT_TIMER_MS) - - url_response, error_msg, time_millis = curl_krb_request(env.tmp_dir, kerberos_keytab, kerberos_principal, - query, "nm_health_alert", executable_paths, False, "NodeManager Health", smokeuser, - connection_timeout=curl_connection_timeout, kinit_timer_ms = kinit_timer_ms) - - json_response = json.loads(url_response) - else: - # execute the query for the JSON that includes templeton status - url_response = urllib2.urlopen(query, timeout=connection_timeout) - json_response = json.loads(url_response.read()) - except urllib2.HTTPError, httpError: - label = CRITICAL_HTTP_STATUS_MESSAGE.format(str(httpError.code), query, - str(httpError), traceback.format_exc()) - - return (RESULT_CODE_CRITICAL, [label]) - except: - label = CRITICAL_CONNECTION_MESSAGE.format(query, traceback.format_exc()) - return (RESULT_CODE_CRITICAL, [label]) - - # URL response received, parse it - try: - node_healthy = json_response['nodeInfo']['nodeHealthy'] - node_healthy_report = json_response['nodeInfo']['healthReport'] - - # convert boolean to string - node_healthy = str(node_healthy) - except: - return (RESULT_CODE_CRITICAL, [query + "\n" + traceback.format_exc()]) - finally: - if url_response is not None: - try: - url_response.close() - except: - pass - - # proper JSON received, compare against known value - if node_healthy.lower() == 'true': - result_code = RESULT_CODE_OK - label = OK_MESSAGE - elif node_healthy.lower() == 'false': - result_code = RESULT_CODE_CRITICAL - label = node_healthy_report - else: - result_code = RESULT_CODE_CRITICAL - label = CRITICAL_NODEMANAGER_STATUS_MESSAGE.format(node_healthy) - - return (result_code, [label]) http://git-wip-us.apache.org/repos/asf/bigtop/blob/0d3448b8/bigtop-packages/src/common/ambari/ODPi/1.0/services/YARN/package/alerts/alert_nodemanagers_summary.py ---------------------------------------------------------------------- diff --git a/bigtop-packages/src/common/ambari/ODPi/1.0/services/YARN/package/alerts/alert_nodemanagers_summary.py b/bigtop-packages/src/common/ambari/ODPi/1.0/services/YARN/package/alerts/alert_nodemanagers_summary.py deleted file mode 100755 index adf27ec..0000000 --- a/bigtop-packages/src/common/ambari/ODPi/1.0/services/YARN/package/alerts/alert_nodemanagers_summary.py +++ /dev/null @@ -1,219 +0,0 @@ -#!/usr/bin/env python - -""" -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 urllib2 -import ambari_simplejson as json # simplejson is much faster comparing to Python 2.6 json module and has the same functions set. -import logging -import traceback - -from ambari_commons.urllib_handlers import RefreshHeaderProcessor -from resource_management.libraries.functions.curl_krb_request import curl_krb_request -from resource_management.libraries.functions.curl_krb_request import DEFAULT_KERBEROS_KINIT_TIMER_MS -from resource_management.libraries.functions.curl_krb_request import KERBEROS_KINIT_TIMER_PARAMETER -from resource_management.core.environment import Environment - -ERROR_LABEL = '{0} NodeManager{1} {2} unhealthy.' -OK_LABEL = 'All NodeManagers are healthy' - -NODEMANAGER_HTTP_ADDRESS_KEY = '{{yarn-site/yarn.resourcemanager.webapp.address}}' -NODEMANAGER_HTTPS_ADDRESS_KEY = '{{yarn-site/yarn.resourcemanager.webapp.https.address}}' -YARN_HTTP_POLICY_KEY = '{{yarn-site/yarn.http.policy}}' - -KERBEROS_KEYTAB = '{{yarn-site/yarn.nodemanager.webapp.spnego-keytab-file}}' -KERBEROS_PRINCIPAL = '{{yarn-site/yarn.nodemanager.webapp.spnego-principal}}' -SECURITY_ENABLED_KEY = '{{cluster-env/security_enabled}}' -SMOKEUSER_KEY = '{{cluster-env/smokeuser}}' -EXECUTABLE_SEARCH_PATHS = '{{kerberos-env/executable_search_paths}}' - -CONNECTION_TIMEOUT_KEY = 'connection.timeout' -CONNECTION_TIMEOUT_DEFAULT = 5.0 - -LOGGER_EXCEPTION_MESSAGE = "[Alert] NodeManager Health Summary on {0} fails:" -logger = logging.getLogger('ambari_alerts') - -QRY = "Hadoop:service=ResourceManager,name=RMNMInfo" - -def get_tokens(): - """ - Returns a tuple of tokens in the format {{site/property}} that will be used - to build the dictionary passed into execute - """ - return NODEMANAGER_HTTP_ADDRESS_KEY, NODEMANAGER_HTTPS_ADDRESS_KEY, EXECUTABLE_SEARCH_PATHS, \ - YARN_HTTP_POLICY_KEY, SMOKEUSER_KEY, KERBEROS_KEYTAB, KERBEROS_PRINCIPAL, SECURITY_ENABLED_KEY - - -def execute(configurations={}, parameters={}, host_name=None): - """ - Returns a tuple containing the result code and a pre-formatted result label - - Keyword arguments: - configurations (dictionary): a mapping of configuration key to value - parameters (dictionary): a mapping of script parameter key to value - host_name (string): the name of this host where the alert is running - """ - - if configurations is None: - return (('UNKNOWN', ['There were no configurations supplied to the script.'])) - - scheme = 'http' - http_uri = None - https_uri = None - http_policy = 'HTTP_ONLY' - - security_enabled = False - if SECURITY_ENABLED_KEY in configurations: - security_enabled = str(configurations[SECURITY_ENABLED_KEY]).upper() == 'TRUE' - - executable_paths = None - if EXECUTABLE_SEARCH_PATHS in configurations: - executable_paths = configurations[EXECUTABLE_SEARCH_PATHS] - - kerberos_keytab = None - if KERBEROS_KEYTAB in configurations: - kerberos_keytab = configurations[KERBEROS_KEYTAB] - - kerberos_principal = None - if KERBEROS_PRINCIPAL in configurations: - kerberos_principal = configurations[KERBEROS_PRINCIPAL] - kerberos_principal = kerberos_principal.replace('_HOST', host_name) - - if NODEMANAGER_HTTP_ADDRESS_KEY in configurations: - http_uri = configurations[NODEMANAGER_HTTP_ADDRESS_KEY] - - if NODEMANAGER_HTTPS_ADDRESS_KEY in configurations: - https_uri = configurations[NODEMANAGER_HTTPS_ADDRESS_KEY] - - if YARN_HTTP_POLICY_KEY in configurations: - http_policy = configurations[YARN_HTTP_POLICY_KEY] - - if SMOKEUSER_KEY in configurations: - smokeuser = configurations[SMOKEUSER_KEY] - - # parse script arguments - connection_timeout = CONNECTION_TIMEOUT_DEFAULT - if CONNECTION_TIMEOUT_KEY in parameters: - connection_timeout = float(parameters[CONNECTION_TIMEOUT_KEY]) - - kinit_timer_ms = parameters.get(KERBEROS_KINIT_TIMER_PARAMETER, DEFAULT_KERBEROS_KINIT_TIMER_MS) - - # determine the right URI and whether to use SSL - uri = http_uri - if http_policy == 'HTTPS_ONLY': - scheme = 'https' - - if https_uri is not None: - uri = https_uri - - uri = str(host_name) + ":" + uri.split(":")[1] - live_nodemanagers_qry = "{0}://{1}/jmx?qry={2}".format(scheme, uri, QRY) - convert_to_json_failed = False - response_code = None - try: - if kerberos_principal is not None and kerberos_keytab is not None and security_enabled: - env = Environment.get_instance() - - # curl requires an integer timeout - curl_connection_timeout = int(connection_timeout) - - url_response, error_msg, time_millis = curl_krb_request(env.tmp_dir, kerberos_keytab, kerberos_principal, - live_nodemanagers_qry, "nm_health_summary_alert", executable_paths, False, - "NodeManager Health Summary", smokeuser, connection_timeout=curl_connection_timeout, - kinit_timer_ms = kinit_timer_ms) - - try: - url_response_json = json.loads(url_response) - live_nodemanagers = json.loads(find_value_in_jmx(url_response_json, "LiveNodeManagers", live_nodemanagers_qry)) - except ValueError, error: - convert_to_json_failed = True - logger.exception("[Alert][{0}] Convert response to json failed or json doesn't contain needed data: {1}". - format("NodeManager Health Summary", str(error))) - - if convert_to_json_failed: - response_code, error_msg, time_millis = curl_krb_request(env.tmp_dir, kerberos_keytab, kerberos_principal, - live_nodemanagers_qry, "nm_health_summary_alert", executable_paths, True, - "NodeManager Health Summary", smokeuser, connection_timeout=curl_connection_timeout, - kinit_timer_ms = kinit_timer_ms) - else: - live_nodemanagers = json.loads(get_value_from_jmx(live_nodemanagers_qry, - "LiveNodeManagers", connection_timeout)) - - if kerberos_principal is not None and kerberos_keytab is not None and security_enabled: - if response_code in [200, 307] and convert_to_json_failed: - return ('UNKNOWN', ['HTTP {0} response (metrics unavailable)'.format(str(response_code))]) - elif convert_to_json_failed and response_code not in [200, 307]: - raise Exception("[Alert][NodeManager Health Summary] Getting data from {0} failed with http code {1}".format( - str(live_nodemanagers_qry), str(response_code))) - - unhealthy_count = 0 - - for nodemanager in live_nodemanagers: - health_report = nodemanager['State'] - if health_report == 'UNHEALTHY': - unhealthy_count += 1 - - if unhealthy_count == 0: - result_code = 'OK' - label = OK_LABEL - else: - result_code = 'CRITICAL' - if unhealthy_count == 1: - label = ERROR_LABEL.format(unhealthy_count, '', 'is') - else: - label = ERROR_LABEL.format(unhealthy_count, 's', 'are') - - except: - label = traceback.format_exc() - result_code = 'UNKNOWN' - - return (result_code, [label]) - - -def get_value_from_jmx(query, jmx_property, connection_timeout): - response = None - - try: - # use a customer header process that will look for the non-standard - # "Refresh" header and attempt to follow the redirect - url_opener = urllib2.build_opener(RefreshHeaderProcessor()) - response = url_opener.open(query, timeout=connection_timeout) - - data = response.read() - data_dict = json.loads(data) - return find_value_in_jmx(data_dict, jmx_property, query) - finally: - if response is not None: - try: - response.close() - except: - pass - - -def find_value_in_jmx(data_dict, jmx_property, query): - json_data = data_dict["beans"][0] - - if jmx_property not in json_data: - beans = data_dict['beans'] - for jmx_prop_list_item in beans: - if "name" in jmx_prop_list_item and jmx_prop_list_item["name"] == QRY: - if jmx_property not in jmx_prop_list_item: - raise Exception("Unable to find {0} in JSON from {1} ".format(jmx_property, query)) - json_data = jmx_prop_list_item - - return json_data[jmx_property] \ No newline at end of file http://git-wip-us.apache.org/repos/asf/bigtop/blob/0d3448b8/bigtop-packages/src/common/ambari/ODPi/1.0/services/YARN/package/files/validateYarnComponentStatusWindows.py ---------------------------------------------------------------------- diff --git a/bigtop-packages/src/common/ambari/ODPi/1.0/services/YARN/package/files/validateYarnComponentStatusWindows.py b/bigtop-packages/src/common/ambari/ODPi/1.0/services/YARN/package/files/validateYarnComponentStatusWindows.py deleted file mode 100755 index 5e2b4d9..0000000 --- a/bigtop-packages/src/common/ambari/ODPi/1.0/services/YARN/package/files/validateYarnComponentStatusWindows.py +++ /dev/null @@ -1,161 +0,0 @@ -#!/usr/bin/env python - -''' -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 optparse -import subprocess -import ambari_simplejson as json # simplejson is much faster comparing to Python 2.6 json module and has the same functions set. -import urllib2 - -RESOURCEMANAGER = 'rm' -NODEMANAGER = 'nm' -HISTORYSERVER = 'hs' - -STARTED_STATE = 'STARTED' -RUNNING_STATE = 'RUNNING' - -#Return reponse for given path and address -def getResponse(path, address, ssl_enabled): - if ssl_enabled: - url = 'https://' + address + path - else: - url = 'http://' + address + path - - try: - handle = urllib2.urlopen(url) - output = handle.read() - handle.close() - response = json.loads(output) - if response == None: - print 'There is no response for url: ' + str(url) - exit(1) - return response - except Exception as e: - print 'Error getting response for url:' + str(url), e - exit(1) - -#Verify that REST api is available for given component -def validateAvailability(component, path, address, ssl_enabled): - - try: - response = getResponse(path, address, ssl_enabled) - is_valid = validateAvailabilityResponse(component, response) - if not is_valid: - exit(1) - except Exception as e: - print 'Error checking availability status of component', e - exit(1) - -#Validate component-specific response -def validateAvailabilityResponse(component, response): - try: - if component == RESOURCEMANAGER: - rm_state = response['clusterInfo']['state'] - if rm_state == STARTED_STATE: - return True - else: - print 'Resourcemanager is not started' - return False - - elif component == NODEMANAGER: - node_healthy = bool(response['nodeInfo']['nodeHealthy']) - if node_healthy: - return True - else: - return False - elif component == HISTORYSERVER: - hs_start_time = response['historyInfo']['startedOn'] - if hs_start_time > 0: - return True - else: - return False - else: - return False - except Exception as e: - print 'Error validation of availability response for ' + str(component), e - return False - -#Verify that component has required resources to work -def validateAbility(component, path, address, ssl_enabled): - - try: - response = getResponse(path, address, ssl_enabled) - is_valid = validateAbilityResponse(component, response) - if not is_valid: - exit(1) - except Exception as e: - print 'Error checking ability of component', e - exit(1) - -#Validate component-specific response that it has required resources to work -def validateAbilityResponse(component, response): - try: - if component == RESOURCEMANAGER: - nodes = [] - if response.has_key('nodes') and not response['nodes'] == None and response['nodes'].has_key('node'): - nodes = response['nodes']['node'] - connected_nodes_count = len(nodes) - if connected_nodes_count == 0: - print 'There is no connected nodemanagers to resourcemanager' - return False - active_nodes = filter(lambda x: x['state'] == RUNNING_STATE, nodes) - active_nodes_count = len(active_nodes) - - if connected_nodes_count == 0: - print 'There is no connected active nodemanagers to resourcemanager' - return False - else: - return True - else: - return False - except Exception as e: - print 'Error validation of ability response', e - return False - -# -# Main. -# -def main(): - parser = optparse.OptionParser(usage="usage: %prog [options] component ") - parser.add_option("-p", "--port", dest="address", help="Host:Port for REST API of a desired component") - parser.add_option("-s", "--ssl", dest="ssl_enabled", help="Is SSL enabled for UI of component") - - (options, args) = parser.parse_args() - - component = args[0] - - address = options.address - ssl_enabled = (options.ssl_enabled) in 'true' - if component == RESOURCEMANAGER: - path = '/ws/v1/cluster/info' - elif component == NODEMANAGER: - path = '/ws/v1/node/info' - elif component == HISTORYSERVER: - path = '/ws/v1/history/info' - else: - parser.error("Invalid component") - - validateAvailability(component, path, address, ssl_enabled) - - if component == RESOURCEMANAGER: - path = '/ws/v1/cluster/nodes' - validateAbility(component, path, address, ssl_enabled) - -if __name__ == "__main__": - main() http://git-wip-us.apache.org/repos/asf/bigtop/blob/0d3448b8/bigtop-packages/src/common/ambari/ODPi/1.0/services/YARN/package/scripts/__init__.py ---------------------------------------------------------------------- diff --git a/bigtop-packages/src/common/ambari/ODPi/1.0/services/YARN/package/scripts/__init__.py b/bigtop-packages/src/common/ambari/ODPi/1.0/services/YARN/package/scripts/__init__.py deleted file mode 100755 index 35de4bb..0000000 --- a/bigtop-packages/src/common/ambari/ODPi/1.0/services/YARN/package/scripts/__init__.py +++ /dev/null @@ -1,20 +0,0 @@ -""" -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. - -Ambari Agent - -""" http://git-wip-us.apache.org/repos/asf/bigtop/blob/0d3448b8/bigtop-packages/src/common/ambari/ODPi/1.0/services/YARN/package/scripts/application_timeline_server.py ---------------------------------------------------------------------- diff --git a/bigtop-packages/src/common/ambari/ODPi/1.0/services/YARN/package/scripts/application_timeline_server.py b/bigtop-packages/src/common/ambari/ODPi/1.0/services/YARN/package/scripts/application_timeline_server.py deleted file mode 100755 index 4ec6aa7..0000000 --- a/bigtop-packages/src/common/ambari/ODPi/1.0/services/YARN/package/scripts/application_timeline_server.py +++ /dev/null @@ -1,155 +0,0 @@ -""" -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. - -Ambari Agent - -""" - -from resource_management import * -from resource_management.libraries.functions import conf_select -from resource_management.libraries.functions import stack_select -from resource_management.libraries.functions import StackFeature -from resource_management.libraries.functions.stack_features import check_stack_feature -from resource_management.libraries.functions.security_commons import build_expectations, \ - cached_kinit_executor, get_params_from_filesystem, validate_security_config_properties,\ - FILE_TYPE_XML -from resource_management.libraries.functions.format import format -from yarn import yarn -from service import service -from ambari_commons import OSConst -from ambari_commons.os_family_impl import OsFamilyImpl - - -class ApplicationTimelineServer(Script): - def install(self, env): - self.install_packages(env) - - def start(self, env, upgrade_type=None): - import params - env.set_params(params) - self.configure(env) # FOR SECURITY - service('timelineserver', action='start') - - def stop(self, env, upgrade_type=None): - import params - env.set_params(params) - service('timelineserver', action='stop') - - def configure(self, env): - import params - env.set_params(params) - yarn(name='apptimelineserver') - - -@OsFamilyImpl(os_family=OSConst.WINSRV_FAMILY) -class ApplicationTimelineServerWindows(ApplicationTimelineServer): - def status(self, env): - service('timelineserver', action='status') - - -@OsFamilyImpl(os_family=OsFamilyImpl.DEFAULT) -class ApplicationTimelineServerDefault(ApplicationTimelineServer): - def get_component_name(self): - return "hadoop-yarn-timelineserver" - - def pre_upgrade_restart(self, env, upgrade_type=None): - Logger.info("Executing Stack Upgrade pre-restart") - import params - env.set_params(params) - - if params.version and check_stack_feature(StackFeature.ROLLING_UPGRADE, params.version): - conf_select.select(params.stack_name, "hadoop", params.version) - stack_select.select("hadoop-yarn-timelineserver", params.version) - - def status(self, env): - import status_params - env.set_params(status_params) - Execute(format("mv {yarn_historyserver_pid_file_old} {yarn_historyserver_pid_file}"), - only_if = format("test -e {yarn_historyserver_pid_file_old}", user=status_params.yarn_user)) - functions.check_process_status(status_params.yarn_historyserver_pid_file) - - def security_status(self, env): - import status_params - env.set_params(status_params) - if status_params.security_enabled: - props_value_check = {"yarn.timeline-service.enabled": "true", - "yarn.timeline-service.http-authentication.type": "kerberos", - "yarn.acl.enable": "true"} - props_empty_check = ["yarn.timeline-service.principal", - "yarn.timeline-service.keytab", - "yarn.timeline-service.http-authentication.kerberos.principal", - "yarn.timeline-service.http-authentication.kerberos.keytab"] - - props_read_check = ["yarn.timeline-service.keytab", - "yarn.timeline-service.http-authentication.kerberos.keytab"] - yarn_site_props = build_expectations('yarn-site', props_value_check, props_empty_check, - props_read_check) - - yarn_expectations ={} - yarn_expectations.update(yarn_site_props) - - security_params = get_params_from_filesystem(status_params.hadoop_conf_dir, - {'yarn-site.xml': FILE_TYPE_XML}) - result_issues = validate_security_config_properties(security_params, yarn_expectations) - if not result_issues: # If all validations passed successfully - try: - # Double check the dict before calling execute - if ( 'yarn-site' not in security_params - or 'yarn.timeline-service.keytab' not in security_params['yarn-site'] - or 'yarn.timeline-service.principal' not in security_params['yarn-site']) \ - or 'yarn.timeline-service.http-authentication.kerberos.keytab' not in security_params['yarn-site'] \ - or 'yarn.timeline-service.http-authentication.kerberos.principal' not in security_params['yarn-site']: - self.put_structured_out({"securityState": "UNSECURED"}) - self.put_structured_out( - {"securityIssuesFound": "Keytab file or principal are not set property."}) - return - - cached_kinit_executor(status_params.kinit_path_local, - status_params.yarn_user, - security_params['yarn-site']['yarn.timeline-service.keytab'], - security_params['yarn-site']['yarn.timeline-service.principal'], - status_params.hostname, - status_params.tmp_dir) - cached_kinit_executor(status_params.kinit_path_local, - status_params.yarn_user, - security_params['yarn-site']['yarn.timeline-service.http-authentication.kerberos.keytab'], - security_params['yarn-site']['yarn.timeline-service.http-authentication.kerberos.principal'], - status_params.hostname, - status_params.tmp_dir) - self.put_structured_out({"securityState": "SECURED_KERBEROS"}) - except Exception as e: - self.put_structured_out({"securityState": "ERROR"}) - self.put_structured_out({"securityStateErrorInfo": str(e)}) - else: - issues = [] - for cf in result_issues: - issues.append("Configuration file %s did not pass the validation. Reason: %s" % (cf, result_issues[cf])) - self.put_structured_out({"securityIssuesFound": ". ".join(issues)}) - self.put_structured_out({"securityState": "UNSECURED"}) - else: - self.put_structured_out({"securityState": "UNSECURED"}) - - def get_log_folder(self): - import params - return params.yarn_log_dir - - def get_user(self): - import params - return params.yarn_user - -if __name__ == "__main__": - ApplicationTimelineServer().execute() http://git-wip-us.apache.org/repos/asf/bigtop/blob/0d3448b8/bigtop-packages/src/common/ambari/ODPi/1.0/services/YARN/package/scripts/historyserver.py ---------------------------------------------------------------------- diff --git a/bigtop-packages/src/common/ambari/ODPi/1.0/services/YARN/package/scripts/historyserver.py b/bigtop-packages/src/common/ambari/ODPi/1.0/services/YARN/package/scripts/historyserver.py deleted file mode 100755 index 34c683a..0000000 --- a/bigtop-packages/src/common/ambari/ODPi/1.0/services/YARN/package/scripts/historyserver.py +++ /dev/null @@ -1,190 +0,0 @@ -""" -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. - -Ambari Agent - -""" - -from resource_management.libraries.script.script import Script -from resource_management.libraries.resources.hdfs_resource import HdfsResource -from resource_management.libraries.functions import conf_select -from resource_management.libraries.functions import stack_select -from resource_management.libraries.functions import StackFeature -from resource_management.libraries.functions.stack_features import check_stack_feature -from resource_management.libraries.functions.check_process_status import check_process_status -from resource_management.libraries.functions.copy_tarball import copy_to_hdfs -from resource_management.libraries.functions.format import format -from resource_management.libraries.functions.security_commons import build_expectations, \ - cached_kinit_executor, get_params_from_filesystem, validate_security_config_properties, \ - FILE_TYPE_XML -from resource_management.core.source import Template -from resource_management.core.logger import Logger - -from install_jars import install_tez_jars -from yarn import yarn -from service import service -from ambari_commons import OSConst -from ambari_commons.os_family_impl import OsFamilyImpl - - -class HistoryServer(Script): - def install(self, env): - self.install_packages(env) - - def stop(self, env, upgrade_type=None): - import params - env.set_params(params) - service('historyserver', action='stop', serviceName='mapreduce') - - def configure(self, env): - import params - env.set_params(params) - yarn(name="historyserver") - - -@OsFamilyImpl(os_family=OSConst.WINSRV_FAMILY) -class HistoryserverWindows(HistoryServer): - def start(self, env): - import params - env.set_params(params) - self.configure(env) - service('historyserver', action='start', serviceName='mapreduce') - - def status(self, env): - service('historyserver', action='status') - - -@OsFamilyImpl(os_family=OsFamilyImpl.DEFAULT) -class HistoryServerDefault(HistoryServer): - def get_component_name(self): - return "hadoop-mapreduce-historyserver" - - def pre_upgrade_restart(self, env, upgrade_type=None): - Logger.info("Executing Stack Upgrade pre-restart") - import params - env.set_params(params) - - if params.version and check_stack_feature(StackFeature.ROLLING_UPGRADE, params.version): - conf_select.select(params.stack_name, "hadoop", params.version) - stack_select.select("hadoop-mapreduce-historyserver", params.version) - # MC Hammer said, "Can't touch this" - copy_to_hdfs("mapreduce", params.user_group, params.hdfs_user, host_sys_prepped=params.host_sys_prepped) - copy_to_hdfs("tez", params.user_group, params.hdfs_user, host_sys_prepped=params.host_sys_prepped) - copy_to_hdfs("slider", params.user_group, params.hdfs_user, host_sys_prepped=params.host_sys_prepped) - params.HdfsResource(None, action="execute") - - def start(self, env, upgrade_type=None): - import params - env.set_params(params) - self.configure(env) # FOR SECURITY - - if params.stack_version_formatted_major and check_stack_feature(StackFeature.COPY_TARBALL_TO_HDFS, params.stack_version_formatted_major): - # MC Hammer said, "Can't touch this" - resource_created = copy_to_hdfs( - "mapreduce", - params.user_group, - params.hdfs_user, - host_sys_prepped=params.host_sys_prepped) - resource_created = copy_to_hdfs( - "tez", - params.user_group, - params.hdfs_user, - host_sys_prepped=params.host_sys_prepped) or resource_created - resource_created = copy_to_hdfs( - "slider", - params.user_group, - params.hdfs_user, - host_sys_prepped=params.host_sys_prepped) or resource_created - if resource_created: - params.HdfsResource(None, action="execute") - else: - # In stack versions before copy_tarball_to_hdfs support tez.tar.gz was copied to a different folder in HDFS. - install_tez_jars() - - service('historyserver', action='start', serviceName='mapreduce') - - def status(self, env): - import status_params - env.set_params(status_params) - check_process_status(status_params.mapred_historyserver_pid_file) - - def security_status(self, env): - import status_params - env.set_params(status_params) - if status_params.security_enabled: - expectations = {} - expectations.update(build_expectations('mapred-site', - None, - [ - 'mapreduce.jobhistory.keytab', - 'mapreduce.jobhistory.principal', - 'mapreduce.jobhistory.webapp.spnego-keytab-file', - 'mapreduce.jobhistory.webapp.spnego-principal' - ], - None)) - - security_params = get_params_from_filesystem(status_params.hadoop_conf_dir, - {'mapred-site.xml': FILE_TYPE_XML}) - result_issues = validate_security_config_properties(security_params, expectations) - if not result_issues: # If all validations passed successfully - try: - # Double check the dict before calling execute - if ( 'mapred-site' not in security_params or - 'mapreduce.jobhistory.keytab' not in security_params['mapred-site'] or - 'mapreduce.jobhistory.principal' not in security_params['mapred-site'] or - 'mapreduce.jobhistory.webapp.spnego-keytab-file' not in security_params['mapred-site'] or - 'mapreduce.jobhistory.webapp.spnego-principal' not in security_params['mapred-site']): - self.put_structured_out({"securityState": "UNSECURED"}) - self.put_structured_out( - {"securityIssuesFound": "Keytab file or principal not set."}) - return - - cached_kinit_executor(status_params.kinit_path_local, - status_params.mapred_user, - security_params['mapred-site']['mapreduce.jobhistory.keytab'], - security_params['mapred-site']['mapreduce.jobhistory.principal'], - status_params.hostname, - status_params.tmp_dir) - cached_kinit_executor(status_params.kinit_path_local, - status_params.mapred_user, - security_params['mapred-site']['mapreduce.jobhistory.webapp.spnego-keytab-file'], - security_params['mapred-site']['mapreduce.jobhistory.webapp.spnego-principal'], - status_params.hostname, - status_params.tmp_dir) - self.put_structured_out({"securityState": "SECURED_KERBEROS"}) - except Exception as e: - self.put_structured_out({"securityState": "ERROR"}) - self.put_structured_out({"securityStateErrorInfo": str(e)}) - else: - issues = [] - for cf in result_issues: - issues.append("Configuration file %s did not pass the validation. Reason: %s" % (cf, result_issues[cf])) - self.put_structured_out({"securityIssuesFound": ". ".join(issues)}) - self.put_structured_out({"securityState": "UNSECURED"}) - else: - self.put_structured_out({"securityState": "UNSECURED"}) - - def get_log_folder(self): - import params - return params.mapred_log_dir - - def get_user(self): - import params - return params.mapred_user - -if __name__ == "__main__": - HistoryServer().execute() http://git-wip-us.apache.org/repos/asf/bigtop/blob/0d3448b8/bigtop-packages/src/common/ambari/ODPi/1.0/services/YARN/package/scripts/install_jars.py ---------------------------------------------------------------------- diff --git a/bigtop-packages/src/common/ambari/ODPi/1.0/services/YARN/package/scripts/install_jars.py b/bigtop-packages/src/common/ambari/ODPi/1.0/services/YARN/package/scripts/install_jars.py deleted file mode 100755 index 44015bf..0000000 --- a/bigtop-packages/src/common/ambari/ODPi/1.0/services/YARN/package/scripts/install_jars.py +++ /dev/null @@ -1,99 +0,0 @@ -#!/usr/bin/env python -""" -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. - -""" - -from resource_management import * -import os -import glob - -def install_tez_jars(): - import params - - destination_hdfs_dirs = get_tez_hdfs_dir_paths(params.tez_lib_uris) - - # If tez libraries are to be stored in hdfs - if destination_hdfs_dirs: - for hdfs_dir in destination_hdfs_dirs: - params.HdfsResource(hdfs_dir, - type="directory", - action="create_on_execute", - owner=params.tez_user, - mode=0755 - ) - - app_dir_path = None - lib_dir_path = None - - if len(destination_hdfs_dirs) > 0: - for path in destination_hdfs_dirs: - if 'lib' in path: - lib_dir_path = path - else: - app_dir_path = path - pass - pass - pass - - tez_jars = {} - if app_dir_path: - tez_jars[params.tez_local_api_jars] = app_dir_path - if lib_dir_path: - tez_jars[params.tez_local_lib_jars] = lib_dir_path - - for src_file_regex, dest_dir in tez_jars.iteritems(): - for src_filepath in glob.glob(src_file_regex): - src_filename = os.path.basename(src_filepath) - params.HdfsResource(format("{dest_dir}/{src_filename}"), - type="file", - action="create_on_execute", - source=src_filepath, - mode=0755, - owner=params.tez_user - ) - - for src_file_regex, dest_dir in tez_jars.iteritems(): - for src_filepath in glob.glob(src_file_regex): - src_filename = os.path.basename(src_filepath) - params.HdfsResource(format("{dest_dir}/{src_filename}"), - type="file", - action="create_on_execute", - source=src_filepath, - mode=0755, - owner=params.tez_user - ) - params.HdfsResource(None, action="execute") - - -def get_tez_hdfs_dir_paths(tez_lib_uris = None): - hdfs_path_prefix = 'hdfs://' - lib_dir_paths = [] - if tez_lib_uris and tez_lib_uris.strip().find(hdfs_path_prefix, 0) != -1: - dir_paths = tez_lib_uris.split(',') - for path in dir_paths: - if not "tez.tar.gz" in path: - lib_dir_path = path.replace(hdfs_path_prefix, '') - lib_dir_path = lib_dir_path if lib_dir_path.endswith(os.sep) else lib_dir_path + os.sep - lib_dir_paths.append(lib_dir_path) - else: - lib_dir_path = path.replace(hdfs_path_prefix, '') - lib_dir_paths.append(os.path.dirname(lib_dir_path)) - pass - pass - - return lib_dir_paths
