yarn.py 8.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265
  1. """
  2. Licensed to the Apache Software Foundation (ASF) under one
  3. or more contributor license agreements. See the NOTICE file
  4. distributed with this work for additional information
  5. regarding copyright ownership. The ASF licenses this file
  6. to you under the Apache License, Version 2.0 (the
  7. "License"); you may not use this file except in compliance
  8. with the License. You may obtain a copy of the License at
  9. http://www.apache.org/licenses/LICENSE-2.0
  10. Unless required by applicable law or agreed to in writing, software
  11. distributed under the License is distributed on an "AS IS" BASIS,
  12. WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  13. See the License for the specific language governing permissions and
  14. limitations under the License.
  15. Ambari Agent
  16. """
  17. from resource_management import *
  18. import sys
  19. import os
  20. def yarn(name = None):
  21. import params
  22. if name in ["nodemanager","historyserver"]:
  23. if params.yarn_log_aggregation_enabled:
  24. params.HdfsDirectory(params.yarn_nm_app_log_dir,
  25. action="create_delayed",
  26. owner=params.yarn_user,
  27. group=params.user_group,
  28. mode=0777,
  29. recursive_chmod=True
  30. )
  31. params.HdfsDirectory("/mapred",
  32. action="create_delayed",
  33. owner=params.mapred_user
  34. )
  35. params.HdfsDirectory("/mapred/system",
  36. action="create_delayed",
  37. owner=params.hdfs_user
  38. )
  39. params.HdfsDirectory(params.mapreduce_jobhistory_intermediate_done_dir,
  40. action="create_delayed",
  41. owner=params.mapred_user,
  42. group=params.user_group,
  43. mode=0777
  44. )
  45. params.HdfsDirectory(params.mapreduce_jobhistory_done_dir,
  46. action="create_delayed",
  47. owner=params.mapred_user,
  48. group=params.user_group,
  49. mode=01777
  50. )
  51. params.HdfsDirectory(None, action="create")
  52. if name == "nodemanager":
  53. Directory(params.nm_local_dirs.split(',') + params.nm_log_dirs.split(','),
  54. owner=params.yarn_user,
  55. group=params.user_group,
  56. recursive=True,
  57. cd_access="a",
  58. ignore_failures=True,
  59. mode=0775
  60. )
  61. Execute(('chown', '-R', params.yarn_user, params.nm_local_dirs),
  62. only_if=format("test -d {nm_local_dirs}"),
  63. sudo=True)
  64. if params.security_enabled:
  65. smokeuser_directories = [os.path.join(dir, 'usercache' ,params.smokeuser)
  66. for dir in params.nm_local_dirs.split(',')]
  67. for directory in smokeuser_directories:
  68. Execute(('chown', '-R', params.smokeuser, directory),
  69. only_if=format("test -d {directory}"),
  70. sudo=True,
  71. )
  72. Directory([params.yarn_pid_dir_prefix, params.yarn_pid_dir, params.yarn_log_dir],
  73. owner=params.yarn_user,
  74. group=params.user_group,
  75. recursive=True,
  76. cd_access = 'a',
  77. )
  78. Directory([params.mapred_pid_dir_prefix, params.mapred_pid_dir, params.mapred_log_dir_prefix, params.mapred_log_dir],
  79. owner=params.mapred_user,
  80. group=params.user_group,
  81. recursive=True,
  82. cd_access = 'a',
  83. )
  84. Directory([params.yarn_log_dir_prefix],
  85. owner=params.yarn_user,
  86. recursive=True,
  87. ignore_failures=True,
  88. cd_access = 'a',
  89. )
  90. XmlConfig("core-site.xml",
  91. conf_dir=params.hadoop_conf_dir,
  92. configurations=params.config['configurations']['core-site'],
  93. configuration_attributes=params.config['configuration_attributes']['core-site'],
  94. owner=params.hdfs_user,
  95. group=params.user_group,
  96. mode=0644
  97. )
  98. XmlConfig("mapred-site.xml",
  99. conf_dir=params.hadoop_conf_dir,
  100. configurations=params.config['configurations']['mapred-site'],
  101. configuration_attributes=params.config['configuration_attributes']['mapred-site'],
  102. owner=params.yarn_user,
  103. group=params.user_group,
  104. mode=0644
  105. )
  106. XmlConfig("yarn-site.xml",
  107. conf_dir=params.hadoop_conf_dir,
  108. configurations=params.config['configurations']['yarn-site'],
  109. configuration_attributes=params.config['configuration_attributes']['yarn-site'],
  110. owner=params.yarn_user,
  111. group=params.user_group,
  112. mode=0644
  113. )
  114. XmlConfig("capacity-scheduler.xml",
  115. conf_dir=params.hadoop_conf_dir,
  116. configurations=params.config['configurations']['capacity-scheduler'],
  117. configuration_attributes=params.config['configuration_attributes']['capacity-scheduler'],
  118. owner=params.yarn_user,
  119. group=params.user_group,
  120. mode=0644
  121. )
  122. if name == 'resourcemanager':
  123. File(params.yarn_job_summary_log,
  124. owner=params.yarn_user,
  125. group=params.user_group
  126. )
  127. if not is_empty(params.node_label_enable) and params.node_label_enable or is_empty(params.node_label_enable) and params.node_labels_dir:
  128. params.HdfsDirectory(params.node_labels_dir,
  129. action="create",
  130. owner=params.yarn_user,
  131. group=params.user_group,
  132. mode=0700
  133. )
  134. elif name == 'apptimelineserver':
  135. Directory(params.ats_leveldb_dir,
  136. owner=params.yarn_user,
  137. group=params.user_group,
  138. recursive=True,
  139. cd_access="a",
  140. )
  141. File(params.rm_nodes_exclude_path,
  142. owner=params.yarn_user,
  143. group=params.user_group
  144. )
  145. File(format("{limits_conf_dir}/yarn.conf"),
  146. mode=0644,
  147. content=Template('yarn.conf.j2')
  148. )
  149. File(format("{limits_conf_dir}/mapreduce.conf"),
  150. mode=0644,
  151. content=Template('mapreduce.conf.j2')
  152. )
  153. File(format("{hadoop_conf_dir}/yarn-env.sh"),
  154. owner=params.yarn_user,
  155. group=params.user_group,
  156. mode=0755,
  157. content=InlineTemplate(params.yarn_env_sh_template)
  158. )
  159. if params.security_enabled:
  160. container_executor = format("{yarn_container_bin}/container-executor")
  161. File(container_executor,
  162. group=params.yarn_executor_container_group,
  163. mode=06050
  164. )
  165. File(format("{hadoop_conf_dir}/container-executor.cfg"),
  166. group=params.user_group,
  167. mode=0644,
  168. content=Template('container-executor.cfg.j2')
  169. )
  170. if params.security_enabled:
  171. tc_mode = 0644
  172. tc_owner = "root"
  173. else:
  174. tc_mode = None
  175. tc_owner = params.hdfs_user
  176. File(format("{hadoop_conf_dir}/mapred-env.sh"),
  177. owner=tc_owner,
  178. content=InlineTemplate(params.mapred_env_sh_template)
  179. )
  180. if params.security_enabled:
  181. File(os.path.join(params.hadoop_bin, "task-controller"),
  182. owner="root",
  183. group=params.mapred_tt_group,
  184. mode=06050
  185. )
  186. File(os.path.join(params.hadoop_conf_dir, 'taskcontroller.cfg'),
  187. owner = tc_owner,
  188. mode = tc_mode,
  189. group = params.mapred_tt_group,
  190. content=Template("taskcontroller.cfg.j2")
  191. )
  192. else:
  193. File(os.path.join(params.hadoop_conf_dir, 'taskcontroller.cfg'),
  194. owner=tc_owner,
  195. content=Template("taskcontroller.cfg.j2")
  196. )
  197. if "mapred-site" in params.config['configurations']:
  198. XmlConfig("mapred-site.xml",
  199. conf_dir=params.hadoop_conf_dir,
  200. configurations=params.config['configurations']['mapred-site'],
  201. configuration_attributes=params.config['configuration_attributes']['mapred-site'],
  202. owner=params.mapred_user,
  203. group=params.user_group
  204. )
  205. if "capacity-scheduler" in params.config['configurations']:
  206. XmlConfig("capacity-scheduler.xml",
  207. conf_dir=params.hadoop_conf_dir,
  208. configurations=params.config['configurations'][
  209. 'capacity-scheduler'],
  210. configuration_attributes=params.config['configuration_attributes']['capacity-scheduler'],
  211. owner=params.hdfs_user,
  212. group=params.user_group
  213. )
  214. if os.path.exists(os.path.join(params.hadoop_conf_dir, 'fair-scheduler.xml')):
  215. File(os.path.join(params.hadoop_conf_dir, 'fair-scheduler.xml'),
  216. owner=params.mapred_user,
  217. group=params.user_group
  218. )
  219. if os.path.exists(
  220. os.path.join(params.hadoop_conf_dir, 'ssl-client.xml.example')):
  221. File(os.path.join(params.hadoop_conf_dir, 'ssl-client.xml.example'),
  222. owner=params.mapred_user,
  223. group=params.user_group
  224. )
  225. if os.path.exists(
  226. os.path.join(params.hadoop_conf_dir, 'ssl-server.xml.example')):
  227. File(os.path.join(params.hadoop_conf_dir, 'ssl-server.xml.example'),
  228. owner=params.mapred_user,
  229. group=params.user_group
  230. )