1 登录

在使用 Apache NiFi 之前,首先需要了解其默认登录方式以及如何配置安全认证,比如 用户名密码认证、LDAP、Kerberos 等。本篇将详细介绍 NiFi 登录配置,包括 默认登录方式、安全认证配置、权限管理 等内容。

  • 默认情况下,NiFi 无需登录,可以直接访问
  • 通过 单用户模式可以配置基本的用户名密码登录
  • 通过 HTTPS 提高安全性,防止明文传输
  • 通过 LDAP 认证 实现企业级用户管理
  • 通过 NiFi 权限管理 限制用户操作权限
  • 1.1  示意图

1.2 单用户模式

NiFi 在 默认安装 时,不会开启用户认证,访问时不需要登录即可操作。为了增加安全性,我们可以 启用用户名密码认证 来限制访问权限。

1.2.1无需登录

  • 直接访问 NiFi Web UI(默认端口 http://localhost:8080/nifi/
  • 无需输入用户名密码,即可进行所有操作(不安全)

1.2.2启用单用户认证(用户名/密码登录)

NiFi 提供了一个内置的 单用户模式,我们可以在 conf/authorizers.xml 和 conf/login-identity-providers.xml 中配置管理员账户。

配置步骤:

  1. 修改 conf/authorizers.xml,设置管理员用户

<userGroupProvider>

    <identifier>file-user-group-provider</identifier>

    <class>org.apache.nifi.authorization.FileUserGroupProvider</class>

    <property name="Users File">./conf/users.xml</property>

    <property name="Initial Admin Identity">admin</property>

</userGroupProvider>

截图如下:

  1. 修改 conf/login-identity-providers.xml,启用 single-user-provider

<provider>

    <identifier>single-user-provider</identifier>

    <class>org.apache.nifi.authentication.single.user.SingleUserLoginIdentityProvider</class>

    <property name="Username">admin</property>

    <property name="Password">admin123</property>

</provider>

截图如下:

3.重启NiFi,访问 http://localhost:8080/nifi/,使用 admin/admin123 登录。

1.3安全模式登录

为了更安全的登录 NiFi,我们可以启用 HTTPS + 证书,防止未授权访问。

1.3.1生成 SSL 证书(自签名证书)

NiFi 提供了一个 tls-toolkit,可以用来生成 SSL 证书:

./bin/tls-toolkit.sh standalone -n 'localhost' -C 'CN=admin, OU=NiFi'

生成的证书文件需要配置到 conf/nifi.properties 中:

nifi.web.https.host=localhost

nifi.web.https.port=8443

nifi.security.keystore=./conf/keystore.jks

nifi.security.keystoreType=JKS

nifi.security.keystorePasswd=changeit

nifi.security.truststore=./conf/truststore.jks

nifi.security.truststoreType=JKS

nifi.security.truststorePasswd=changeit

1.3.2https自定义登录

配置完成后,重新启动 NiFi,使用 https://localhost:8443/nifi/ 访问,并输入 admin/admin123 登录。

1.3.3https默认登录

也可以不配置,默认的用户名和密码在logs-->nifi-app.log--》搜索username-->定位到用户名和密码。截图如下:

1.4 LDAP 进行用户认证

如果你的企业有 LDAP 服务器,可以将 NiFi 配置成 LDAP 认证模式,让用户使用公司账户登录。

1.4.1修改 conf/login-identity-providers.xml

<provider>

    <identifier>ldap-provider</identifier>

    <class>org.apache.nifi.ldap.LdapIdentityProvider</class>

    <property name="Authentication Strategy">SIMPLE</property>

    <property name="Manager DN">cn=admin,dc=example,dc=com</property>

    <property name="Manager Password">password</property>

    <property name="User Search Base">ou=users,dc=example,dc=com</property>

    <property name="User Search Filter">uid={0}</property>

    <property name="User Identity Attribute">uid</property>

    <property name="Url">ldap://your-ldap-server:389</property></provider>

1.4.2修改 conf/authorizers.xml

<userGroupProvider>

    <identifier>ldap-user-group-provider</identifier>

    <class>org.apache.nifi.ldap.LdapUserGroupProvider</class>

    <property name="User Search Base">ou=users,dc=example,dc=com</property>

    <property name="Group Search Base">ou=groups,dc=example,dc=com</property></userGroupProvider>

1.4.3重启NiFi 并用 LDAP 账户登录

1.5 配置用户权限管理

NiFi 允许不同的用户具有不同的权限,如 只读用户、数据处理用户、管理员

1.5.1进入 NiFi 用户管理界面

  • 登录后,点击 “Access Policies”
  • “Users” 里添加新用户
  • “Policies” 里分配权限

1.5.2常见权限配置

2 NIFI介绍

2.1界面菜单诠释

2.2核心概念

·  Processor(处理器):执行具体的数据处理任务,如读取、转换、写入数据等。

·  FlowFile(数据流文件):携带数据和元数据的基本单元。

·  Connection(连接器):将不同的 Processor 连接在一起,控制数据流向和队列。

·  Controller Service(控制服务):提供共享资源配置(如数据库连接池)。

·  Data Provenance(数据溯源):记录和查看数据处理历史。

3 数据同步

3.1功能概述

nifi实现sqlserver数据库2个表的数据同步。

3.2 数据同步方案

NiFi 提供两种主要的数据同步方式:

  1. 增量同步(适用于数据量较大,目标表已存在)
  2. 全量同步(适用于数据量较小,或目标表需要完全替换)

本篇只讲全量同步

3.2.1全量同步

适用场景

  • 目标表为空,或需要全量替换数据
  • 数据量 较小(几十万条)。
  • 同步周期较长,不需要频繁同步
  • 3.2.2流程设计

  • 3.2.3 数据库连接说明

  • 3.2.4数据库连接配置说明

  • 3.2.5 JDBC下载

    JDBC根据自己连接的数据库相关,选择对应的版本,对应下载地址如下:

    https://learn.microsoft.com/zh-cn/sql/connect/jdbc/download-microsoft-jdbc-driver-for-sql-server?view=sql-server-ver16

    3.2.6配置过程

3.2.7添加processgroup

3.2.8获取源数据

3.2.9添加目标PutDatabaseRecord

3.2.10建立连接

3.2.11启动

Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐