yarn.py 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346
  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. from ambari_commons.os_family_impl import OsFamilyFuncImpl, OsFamilyImpl
  21. from ambari_commons import OSConst
  22. @OsFamilyFuncImpl(os_family=OSConst.WINSRV_FAMILY)
  23. def yarn(name = None):
  24. import params
  25. XmlConfig("mapred-site.xml",
  26. conf_dir=params.config_dir,
  27. configurations=params.config['configurations']['mapred-site'],
  28. owner=params.yarn_user,
  29. mode='f'
  30. )
  31. XmlConfig("yarn-site.xml",
  32. conf_dir=params.config_dir,
  33. configurations=params.config['configurations']['yarn-site'],
  34. owner=params.yarn_user,
  35. mode='f',
  36. configuration_attributes=params.config['configuration_attributes']['yarn-site']
  37. )
  38. XmlConfig("capacity-scheduler.xml",
  39. conf_dir=params.config_dir,
  40. configurations=params.config['configurations']['capacity-scheduler'],
  41. owner=params.yarn_user,
  42. mode='f'
  43. )
  44. if params.service_map.has_key(name):
  45. service_name = params.service_map[name]
  46. ServiceConfig(service_name,
  47. action="change_user",
  48. username = params.yarn_user,
  49. password = Script.get_password(params.yarn_user))
  50. @OsFamilyFuncImpl(os_family=OsFamilyImpl.DEFAULT)
  51. def yarn(name = None):
  52. import params
  53. if name == "historyserver":
  54. if params.yarn_log_aggregation_enabled:
  55. params.HdfsResource(params.yarn_nm_app_log_dir,
  56. action="create_on_execute",
  57. type="directory",
  58. owner=params.yarn_user,
  59. group=params.user_group,
  60. mode=0777,
  61. recursive_chmod=True
  62. )
  63. params.HdfsResource("/mapred",
  64. type="directory",
  65. action="create_on_execute",
  66. owner=params.mapred_user
  67. )
  68. params.HdfsResource("/mapred/system",
  69. type="directory",
  70. action="create_on_execute",
  71. owner=params.hdfs_user
  72. )
  73. params.HdfsResource(params.mapreduce_jobhistory_done_dir,
  74. type="directory",
  75. action="create_on_execute",
  76. owner=params.mapred_user,
  77. group=params.user_group,
  78. change_permissions_for_parents=True,
  79. mode=0777
  80. )
  81. params.HdfsResource(None, action="execute")
  82. if name == "nodemanager":
  83. Directory(params.nm_local_dirs.split(',') + params.nm_log_dirs.split(','),
  84. owner=params.yarn_user,
  85. group=params.user_group,
  86. recursive=True,
  87. cd_access="a",
  88. ignore_failures=True,
  89. mode=0775
  90. )
  91. smokeuser_directories = [os.path.join(dir, 'usercache' ,params.smokeuser)
  92. for dir in params.nm_local_dirs.split(',')]
  93. if not params.security_enabled:
  94. for directory in smokeuser_directories:
  95. Execute(('chown', '-R', params.yarn_user, directory),
  96. only_if=format("test -d {directory}"),
  97. sudo=True)
  98. if params.security_enabled:
  99. for directory in smokeuser_directories:
  100. Execute(('chown', '-R', params.smokeuser, directory),
  101. only_if=format("test -d {directory}"),
  102. sudo=True,
  103. )
  104. Directory([params.yarn_pid_dir_prefix, params.yarn_pid_dir, params.yarn_log_dir],
  105. owner=params.yarn_user,
  106. group=params.user_group,
  107. recursive=True,
  108. cd_access = 'a',
  109. )
  110. Directory([params.mapred_pid_dir_prefix, params.mapred_pid_dir, params.mapred_log_dir_prefix, params.mapred_log_dir],
  111. owner=params.mapred_user,
  112. group=params.user_group,
  113. recursive=True,
  114. cd_access = 'a',
  115. )
  116. Directory([params.yarn_log_dir_prefix],
  117. owner=params.yarn_user,
  118. recursive=True,
  119. ignore_failures=True,
  120. cd_access = 'a',
  121. )
  122. XmlConfig("core-site.xml",
  123. conf_dir=params.hadoop_conf_dir,
  124. configurations=params.config['configurations']['core-site'],
  125. configuration_attributes=params.config['configuration_attributes']['core-site'],
  126. owner=params.hdfs_user,
  127. group=params.user_group,
  128. mode=0644
  129. )
  130. XmlConfig("mapred-site.xml",
  131. conf_dir=params.hadoop_conf_dir,
  132. configurations=params.config['configurations']['mapred-site'],
  133. configuration_attributes=params.config['configuration_attributes']['mapred-site'],
  134. owner=params.yarn_user,
  135. group=params.user_group,
  136. mode=0644
  137. )
  138. XmlConfig("yarn-site.xml",
  139. conf_dir=params.hadoop_conf_dir,
  140. configurations=params.config['configurations']['yarn-site'],
  141. configuration_attributes=params.config['configuration_attributes']['yarn-site'],
  142. owner=params.yarn_user,
  143. group=params.user_group,
  144. mode=0644
  145. )
  146. XmlConfig("capacity-scheduler.xml",
  147. conf_dir=params.hadoop_conf_dir,
  148. configurations=params.config['configurations']['capacity-scheduler'],
  149. configuration_attributes=params.config['configuration_attributes']['capacity-scheduler'],
  150. owner=params.yarn_user,
  151. group=params.user_group,
  152. mode=0644
  153. )
  154. if name == 'resourcemanager':
  155. File(params.yarn_job_summary_log,
  156. owner=params.yarn_user,
  157. group=params.user_group
  158. )
  159. 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:
  160. params.HdfsResource(params.node_labels_dir,
  161. type="directory",
  162. action="create_on_execute",
  163. change_permissions_for_parents=True,
  164. owner=params.yarn_user,
  165. group=params.user_group,
  166. mode=0700
  167. )
  168. params.HdfsResource(None, action="execute")
  169. elif name == 'apptimelineserver':
  170. Directory(params.ats_leveldb_dir,
  171. owner=params.yarn_user,
  172. group=params.user_group,
  173. recursive=True,
  174. cd_access="a",
  175. )
  176. # if HDP stack is greater than/equal to 2.2, mkdir for state store property (added in 2.2)
  177. if (Script.is_hdp_stack_greater_or_equal("2.2")):
  178. Directory(params.ats_leveldb_state_store_dir,
  179. owner=params.yarn_user,
  180. group=params.user_group,
  181. recursive=True,
  182. cd_access="a",
  183. )
  184. File(params.rm_nodes_exclude_path,
  185. owner=params.yarn_user,
  186. group=params.user_group
  187. )
  188. File(format("{limits_conf_dir}/yarn.conf"),
  189. mode=0644,
  190. content=Template('yarn.conf.j2')
  191. )
  192. File(format("{limits_conf_dir}/mapreduce.conf"),
  193. mode=0644,
  194. content=Template('mapreduce.conf.j2')
  195. )
  196. File(format("{hadoop_conf_dir}/yarn-env.sh"),
  197. owner=params.yarn_user,
  198. group=params.user_group,
  199. mode=0755,
  200. content=InlineTemplate(params.yarn_env_sh_template)
  201. )
  202. container_executor = format("{yarn_container_bin}/container-executor")
  203. File(container_executor,
  204. group=params.yarn_executor_container_group,
  205. mode=params.container_executor_mode
  206. )
  207. File(format("{hadoop_conf_dir}/container-executor.cfg"),
  208. group=params.user_group,
  209. mode=0644,
  210. content=Template('container-executor.cfg.j2')
  211. )
  212. Directory(params.cgroups_dir,
  213. group=params.user_group,
  214. recursive=True,
  215. mode=0755,
  216. cd_access="a")
  217. if params.security_enabled:
  218. tc_mode = 0644
  219. tc_owner = "root"
  220. else:
  221. tc_mode = None
  222. tc_owner = params.hdfs_user
  223. File(format("{hadoop_conf_dir}/mapred-env.sh"),
  224. owner=tc_owner,
  225. content=InlineTemplate(params.mapred_env_sh_template)
  226. )
  227. if params.security_enabled:
  228. File(os.path.join(params.hadoop_bin, "task-controller"),
  229. owner="root",
  230. group=params.mapred_tt_group,
  231. mode=06050
  232. )
  233. File(os.path.join(params.hadoop_conf_dir, 'taskcontroller.cfg'),
  234. owner = tc_owner,
  235. mode = tc_mode,
  236. group = params.mapred_tt_group,
  237. content=Template("taskcontroller.cfg.j2")
  238. )
  239. else:
  240. File(os.path.join(params.hadoop_conf_dir, 'taskcontroller.cfg'),
  241. owner=tc_owner,
  242. content=Template("taskcontroller.cfg.j2")
  243. )
  244. if "mapred-site" in params.config['configurations']:
  245. XmlConfig("mapred-site.xml",
  246. conf_dir=params.hadoop_conf_dir,
  247. configurations=params.config['configurations']['mapred-site'],
  248. configuration_attributes=params.config['configuration_attributes']['mapred-site'],
  249. owner=params.mapred_user,
  250. group=params.user_group
  251. )
  252. if "capacity-scheduler" in params.config['configurations']:
  253. XmlConfig("capacity-scheduler.xml",
  254. conf_dir=params.hadoop_conf_dir,
  255. configurations=params.config['configurations'][
  256. 'capacity-scheduler'],
  257. configuration_attributes=params.config['configuration_attributes']['capacity-scheduler'],
  258. owner=params.hdfs_user,
  259. group=params.user_group
  260. )
  261. if "ssl-client" in params.config['configurations']:
  262. XmlConfig("ssl-client.xml",
  263. conf_dir=params.hadoop_conf_dir,
  264. configurations=params.config['configurations']['ssl-client'],
  265. configuration_attributes=params.config['configuration_attributes']['ssl-client'],
  266. owner=params.hdfs_user,
  267. group=params.user_group
  268. )
  269. Directory(params.hadoop_conf_secure_dir,
  270. recursive=True,
  271. owner='root',
  272. group=params.user_group,
  273. cd_access='a',
  274. )
  275. XmlConfig("ssl-client.xml",
  276. conf_dir=params.hadoop_conf_secure_dir,
  277. configurations=params.config['configurations']['ssl-client'],
  278. configuration_attributes=params.config['configuration_attributes']['ssl-client'],
  279. owner=params.hdfs_user,
  280. group=params.user_group
  281. )
  282. if "ssl-server" in params.config['configurations']:
  283. XmlConfig("ssl-server.xml",
  284. conf_dir=params.hadoop_conf_dir,
  285. configurations=params.config['configurations']['ssl-server'],
  286. configuration_attributes=params.config['configuration_attributes']['ssl-server'],
  287. owner=params.hdfs_user,
  288. group=params.user_group
  289. )
  290. if os.path.exists(os.path.join(params.hadoop_conf_dir, 'fair-scheduler.xml')):
  291. File(os.path.join(params.hadoop_conf_dir, 'fair-scheduler.xml'),
  292. owner=params.mapred_user,
  293. group=params.user_group
  294. )
  295. if os.path.exists(
  296. os.path.join(params.hadoop_conf_dir, 'ssl-client.xml.example')):
  297. File(os.path.join(params.hadoop_conf_dir, 'ssl-client.xml.example'),
  298. owner=params.mapred_user,
  299. group=params.user_group
  300. )
  301. if os.path.exists(
  302. os.path.join(params.hadoop_conf_dir, 'ssl-server.xml.example')):
  303. File(os.path.join(params.hadoop_conf_dir, 'ssl-server.xml.example'),
  304. owner=params.mapred_user,
  305. group=params.user_group
  306. )