Create Cloudera Manager extensions

success 以支持腾讯云 COS 为例

构建 parcel 包

通过 parcel 机制给 cdh 中的 yarn 添加 cos 支持, 使 yarn 应用能直接访问 cos 上的文件

腾讯云 cos 支持通过 hdfs 访问(Hadoop 工具), 但公司大数据集群使用 CDH 管理, 直接修改配置虽然可行, 但每台机器都登录上去部署非常繁琐, 且万一下次通过 Clouder Manager 更新配置, 又会把配置覆盖掉, 所以要找出一种方式看能否通过 clouder manager 来做这种增强, 查了CDH 官方资料后发现应该可以通过 pracel 以插件的方式来把 cos-hadoop 部署到集群中。

parcel 文件格式参考The parcel format, 主要有以下几个文件组成

  • meta/parcel.json

  • meta/filelist.json

  • meta/cos_env.json

  • meta/alternatives.json

  • 其它 lib 文件

parcel 描述文件 meta/parcel.json

格式参考 The parcel.json file

{
  "schema_version":     1,
  "name":               "HADOOP_COS",
  "version":            "2.7.2.2",
  "extraVersionInfo": {
    "fullVersion":        "2.7.2.2",
    "baseVersion":        "2.7.2.2",
    "patchCount":         ""
  },

  "conflicts":          "CDH (<< 5.13.1), CDH (>> 5.13.1.)",

  "setActiveSymlink":   true,

  "scripts": {
    "defines": "cos_env.sh"
  },

  "packages": [
    { "name":    "cos-hadoop",
      "version": "2.7.2.2"
    }
  ],

  "components": [
    { "name":    "cos-hadoop",
      "version": "2.7.2.2",
      "pkg_version": "2.7.2.2"
    }
  ],

  "provides": [
    "yarn-plugin",
    "mapreduce-plugin",
    "mapreduce2-plugin",
    "spark-plugin",
    "hive-plugin"
  ],

  "users": { },

  "groups": [ ]
}

文件列表 meta/filelist.json

描述插件中每个组件的文件列表

Defind Script meta/cos_env.json

Defind Script 用于在插件影响到的组件启动时执行, 一般是把插件的 jar 包加入到组件的 classpath 中。 组件启动时以 source defind.script 方式调用。 插件影响到哪些组件在 meta/parcel.json 中的 provides 定义, 组件名称参考 Service parcel tags recognised by cloudera manager, 脚本中用到的 classpath 变量名参考 Plugin parcel environment variables

软链接描述 meta/alternatives.json

用于建立软链接, hadoop_cos 中没有用到, 参考The alternatives.json file

构建 parcel 文件

参考 Building a parcel, parcel 文件实际是一个 .tar.gz 文件

parcel 文件名必须符合格式 ${parcel_name}-${version}-${distro_suffixes}.pracel, 其中 ${distro_suffixes} 参考 Parcel distro suffixes

使用 validator 检验文件合法性 使用 [make_manifest.py][12] 创建 parcel 描述 文件

安装 parcel (略)

修改 hdfs配置

路径 Cloudera Manager -> HDFS -> Configuration -> Scope(Gateway) 配置项 HDFS Client Advanced Configuration Snippet (Safety Valve) for hdfs-site.xml 内容

[12]:https://github.com/cloudera/cm_ext/tree/master/make_manifest

Last updated