Streampark集成Cloudera Flink、ldap、告警,以及部署常见问题

这篇具有很好参考价值的文章主要介绍了Streampark集成Cloudera Flink、ldap、告警,以及部署常见问题。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

集成背景

我们当前集群使用的是Cloudera CDP,Flink版本为Cloudera Version 1.14,整体Flink安装目录以及配置文件结构与社区版本有较大出入。直接根据Streampark官方文档进行部署,将无法配置Flink Home,以及后续整体Flink任务提交到集群中,因此需要进行针对化适配集成,在满足使用需求上,尽量提供完整的Streampark使用体验。

集成步骤

版本匹配问题解决

首先解决无法识别Cloudera中的Flink Home问题,根据报错主要明确到的事情是无法读取到Flink版本、lib下面的jar包名称无法匹配。

修改对象:

Streampark集成Cloudera Flink、ldap、告警,以及部署常见问题

修改源码:(解决无法匹配cloudera jar包)

class FlinkVersion(val flinkHome: String) extends java.io.Serializable with Logger {

  private[this] lazy val FLINK_VER_PATTERN = Pattern.compile("^(\\d+\\.\\d+)(\\.)?.*$")

  private[this] lazy val FLINK_VERSION_PATTERN = Pattern.compile("^Version: (\\d+\\.\\d+\\.\\d)(-csa)?(\\d+\\.\\d+\\.\\d+\\.\\d)?, Commit ID: (.*)$")

  private[this] lazy val FLINK_SCALA_VERSION_PATTERN = Pattern.compile("^flink-dist_(\\d+\\.\\d*)-(\\d+\\.\\d+\\.\\d)(-csa.*)?.jar$")

  lazy val scalaVersion: String = {
    val matcher = FLINK_SCALA_VERSION_PATTERN.matcher(flinkDistJar.getName)
    if (matcher.matches()) {
      matcher.group(1);
    } else {
      // flink 1.15 + on support scala 2.12
      "2.12"
    }
  }

  lazy val fullVersion: String = s"${version}_$scalaVersion"

  lazy val flinkLib: File = {
    require(flinkHome != null, "[StreamPark] flinkHome must not be null.")
    require(new File(flinkHome).exists(), "[StreamPark] flinkHome must be exists.")
    val lib = new File(s"$flinkHome/lib")
    require(lib.exists() && lib.isDirectory, s"[StreamPark] $flinkHome/lib must be exists and must be directory.")
    lib
  }

  lazy val flinkLibs: List[NetURL] = flinkLib.listFiles().map(_.toURI.toURL).toList

  lazy val version: String = {
    val flinkVersion = new AtomicReference[String]
    val cmd = List(s"java -classpath ${flinkDistJar.getAbsolutePath} org.apache.flink.client.cli.CliFrontend --version")
    val success = new AtomicBoolean(false)
    val buffer = new mutable.StringBuilder
    CommandUtils.execute(
      flinkLib.getAbsolutePath,
      cmd,
      new Consumer[String]() {
        override def accept(out: String): Unit = {
          buffer.append(out).append("\n")
          val matcher = FLINK_VERSION_PATTERN.matcher(out)
          if (matcher.find) {
            success.set(true)
            flinkVersion.set(matcher.group(1))
          }
        }
      })
    logInfo(buffer.toString())
    if (!success.get()) {
      throw new IllegalStateException(s"[StreamPark] parse flink version failed. $buffer")
    }
    buffer.clear()
    flinkVersion.get
  }

  // flink major version, like "1.13", "1.14"
  lazy val majorVersion: String = {
    if (version == null) {
      null
    } else {
      val matcher = FLINK_VER_PATTERN.matcher(version)
      matcher.matches()
      matcher.group(1)
    }
  }

  lazy val flinkDistJar: File = {
    val distJar = flinkLib.listFiles().filter(_.getName.matches("flink-dist.*\\.jar"))
    distJar match {
      case x if x.isEmpty =>
        throw new IllegalArgumentException(s"[StreamPark] can no found flink-dist jar in $flinkLib")
      case x if x.length > 1 =>
        throw new IllegalArgumentException(s"[StreamPark] found multiple flink-dist jar in $flinkLib")
      case _ =>
    }
    distJar.head
  }

  // StreamPark flink shims version, like "streampark-flink-shims_flink-1.13"
  lazy val shimsVersion: String = s"streampark-flink-shims_flink-$majorVersion"

  override def toString: String =
    s"""
       |----------------------------------------- flink version -----------------------------------
       |     flinkHome    : $flinkHome
       |     distJarName  : ${flinkDistJar.getName}
       |     flinkVersion : $version
       |     majorVersion : $majorVersion
       |     scalaVersion : $scalaVersion
       |     shimsVersion : $shimsVersion
       |-------------------------------------------------------------------------------------------
       |""".stripMargin

}

Flink Home指定

由于Cloudera Flink的默认安装路径为/opt/cloudera/parcels/Flink-${version},而执行/opt/cloudera/parcels/Flink-${version}/bin/flink 为整体环境配置,vi flink可查看到具体过程

Streampark集成Cloudera Flink、ldap、告警,以及部署常见问题

实际的flink提交路径在/opt/cloudera/parcels/Flink-${version}/lib/flink/bin/flink,因此/opt/cloudera/parcels/Flink-${version}/lib/flink可以理解为真正的Flink Home,具体查看该目录下内容

Streampark集成Cloudera Flink、ldap、告警,以及部署常见问题

发现缺少conf目录,倘若配置该目录在Streampark为Flink Home将无法访问到集群,因此可软连接Flink配置或者在该路径下编辑集群中的Flink配置文件。

Streampark集成Cloudera Flink、ldap、告警,以及部署常见问题

综上,前置配置和打包好代码(代码中可能会涉及到自己使用上的优化修改)之后,可以进行部署。

注意2.0的版本打包的话直接执行源码中的build.sh即可,选择混合部署,生成的包在dist目录下。

部署流程

前置部署流程建议参考官方步骤安装部署 | Apache StreamPark (incubating)

特别注意需要对元数据库进行初始化以及初始数据插入,执行sql在${streamarkHome}/script/data&schema

根据官方的意思需要将mysql的connector添加到lib目录下,不然无法连接数据库。

在conf/application.yml中修改数据源为mysql,配置好集群中使用到的用户(默认hdfs),默认在hdfs创建streampark的工作目录hdfs:///streampark。

部署结果验证

部署完成之后,执行bin下的startup.sh 可以启动集群,在web上进入部署地址ip:port(默认10000)

Streampark集成Cloudera Flink、ldap、告警,以及部署常见问题

使用默认账号 admin streampark可以进去

登录进去之后点击设置中心可以进行Flink home的配置

Streampark集成Cloudera Flink、ldap、告警,以及部署常见问题

LDAP集成

主要是需要配置conf下application.yml中的ldap配置信息即可,然后重启streampark。

使用与踩坑点:

Streampark集成Cloudera Flink、ldap、告警,以及部署常见问题

登录选择LDAP登录

利用公司LDAP登录之后,提示

Streampark集成Cloudera Flink、ldap、告警,以及部署常见问题

但是刚才使用ladp登录的用户,在streampark上已经创建对应的用户,须在成员管理里面将刚才创建的用户添加到对应的团队中,刚才那个用户才可以登录。

Streampark集成Cloudera Flink、ldap、告警,以及部署常见问题

告警配置

主要配置的是企业微信告警,在设置中心配置企业微信机器人的token(注意公司环境为内网的话,需要在代码中修改对应的url,拼接为内网发送地址)
告警模板在代码中的修改路径为:

Streampark集成Cloudera Flink、ldap、告警,以及部署常见问题

中间修改了的告警模板,重新打包一下即可。

一些问题及解决办法

一、Hadoop环境

Streampark集成Cloudera Flink、ldap、告警,以及部署常见问题

解决办法:在部署Streampark的节点上添加一下hadoop环境即可

vi /etc/profile

Streampark集成Cloudera Flink、ldap、告警,以及部署常见问题

source一下,重启streampark即可

二、依赖jar的初始化

Streampark集成Cloudera Flink、ldap、告警,以及部署常见问题

解决办法:在于部署后的streampark在hdfs上的工作目录上lib目录没有正常上传,找到hdfs上初始化的strempark work路径,观察一下hdfs:///streampark/flink/.../下的lib目录是否完整,不完整的话手动将本地Flink Home目录下的lib put上去即可。文章来源地址https://www.toymoban.com/news/detail-407614.html

到了这里,关于Streampark集成Cloudera Flink、ldap、告警,以及部署常见问题的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • prometheus部署及钉钉告警集成Grafana

    安装包 📎alertmanager-0.23.0.linux-amd64.tar.gz 📎node_exporter-1.3.1.linux-amd64.tar.gz 📎prometheus-webhook-dingtalk-1.4.0.linux-amd64.tar.gz 服务端口 Prometheus 9090 node_exporter 9100 alertmanager 9093 prometheus-webhook-dingtalk 8060 #修改配置文件之前先备份 /usr/local /usr/local /usr/local/prometheus/prometheus.yml /usr/lib/syste

    2024年02月11日
    浏览(42)
  • Flink本地集群部署启动&常见问题的解决方法

    [zhangflink@9wmwtivvjuibcd2e software]$ vim flink/conf/flink-conf.yaml [zhangflink@9wmwtivvjuibcd2e software]$ vim flink/conf/workers [zhangflink@9wmwtivvjuibcd2e software]$ xsync flink/conf/ 启动集群在jobmanager那台机器启动 [zhangflink@9wmwtivvjuibcd2e-0001 flink]$ bin/start-cluster.sh 启动成功jobmanager会出现如下进程 启动成功taskm

    2024年02月02日
    浏览(53)
  • Flink on K8S生产集群使用StreamPark管理

    Flink on Native Kubernetes 目前支持 Application 模式和 Session 模式,两者对比 Application 模式部署规避了 Session 模式的资源隔离问题、以及客户端资源消耗问题,因此生产环境更推荐采用 Application Mode 部署 Flink 任务。下面我们分别看看使用原始脚本的方式和使用 StreamPark 开发部署一个

    2024年02月03日
    浏览(49)
  • Telegraf-Influxdb-Grafana容器化部署拓展(Https、AD域、告警集成)并监控Cisco设备指标

    还记得在去年的笔记中提到过使用python的pysnmp模块,配合Influxdb,Grafana收集Cisco设备指标。链接如下:https://blog.csdn.net/tushanpeipei/article/details/117329794 。在该实例中,我们通过python编写脚本收集设备信息,并将收集的信息格式化后发送到Influxdb进行存储,最后Grfana从Influxdb中读取

    2023年04月08日
    浏览(77)
  • ELK常见部署架构以及出现的问题及解决方案

    ELK 已经成为目前最流行的集中式日志解决方案,它主要是由 Beats 、 Logstash 、 Elasticsearch 、 Kibana 等组件组成,来共同完成实时日志的收集,存储,展示等一站式的解决方案。本文将会介绍ELK常见的架 构以及相关问题解决。 Filebeat :Filebeat是一款轻量级,占用服务资源非常少

    2024年02月13日
    浏览(42)
  • springboot集成Ldap

    一、什么是Ldap 轻型目录访问协议(英文:Lightweight Directory Access Protocol,缩写:LDAP,/ˈɛldæp/)是一个开放的,中立的,工业标准的应用协议,通过IP协议提供访问控制和维护分布式信息的目录信息。 二、为什么需要Ldap 这里举个例子,一个公司内部有很多系统,每个系统都

    2024年02月14日
    浏览(31)
  • Linux部署docker以及prometheus+node_exporter+mysqld-exporter+grafana+cadvisor+Alertmanager(告警)

    Linux安裝docker以及部署prometheus+node_exporter+mysqld-exporter+grafana+cadvisor+Alertmanager(告警) 1、官方安裝脚本自动安装docker curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun 2、启动docker systemctl start docker 3、搜索镜像-例如搜索prometheus docker search prom/prometheus 4、拉取镜像--这里仅列出我

    2024年03月15日
    浏览(65)
  • springboot集成starrocks、以及采用flink实现mysql与starrocks亚秒级同步

    (因采用dynamic-datasource-spring-boot-starter动态数据源,所以才是以下配置文件的样式,像redis,druid根据自己情况导入依赖) 这个配置文件的场景是把starrocks当成slave库在用。某些大数据慢查询就走starrocks 就这样配置好后就可把starrocks当mysql用了 重点:采用这种方式有限制,插入

    2024年01月21日
    浏览(35)
  • 搭建gerrit服务器+LDAP认证+集成gitewb详细流程

    Gerrit,一种免费、开放源代码的代码审查软件,使用网页界面。利用网页浏览器,同一个团队的软件程序员,可以相互审阅彼此修改后的程序代码,决定是否能够提交,退回或者继续修改。它使用Git作为底层版本控制系统。 本文介绍如何搭建gerrit服务器,以及搭配LDAP认证的

    2024年02月02日
    浏览(49)
  • 38、Flink 的CDC 格式:canal部署以及示例

    一、Flink 专栏 Flink 专栏系统介绍某一知识点,并辅以具体的示例进行说明。 1、Flink 部署系列 本部分介绍Flink的部署、配置相关基础内容。 2、Flink基础系列 本部分介绍Flink 的基础部分,比如术语、架构、编程模型、编程指南、基本的datastream api用法、四大基石等内容。 3、

    2024年01月23日
    浏览(55)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包