主机 | 服务 |
---|---|
192.168.11.11 bigdata11 | NiFi、Kerberos、nifi-toolkit |
192.168.11.12 bigdata12 | NiFi |
192.168.11.13 bigdata13 | NiFi |
禁用selinux(三台)
vim /etc/selinux/config SELINUX=disabled
禁用防火墙(三台)
systemctl disable firewalld systemctl stop firewalld
jdk安装(三台)、免密(三台)以及时间同步。
useradd nifi #新建一个名为nifi的用户,三台主机都要建
yum -y install krb5-server krb5-libs krb5-workstation
配置krb5.conf,在实际环境中这个配置应该已经是配置完成的,可以不用详细配置。
vim /etc/krb5.conf
[libdefaults]
default_realm = MYCDH
[realms]
MYCDH = {
kdc = 192.168.11.11
admin_server = 192.168.11.11
}
[domain_realm]
# 将上面文件发送到另外两台主机
scp /etc/krb5.conf bigdata12:/etc/
scp /etc/krb5.conf bigdata13:/etc/
配置kdc.conf
vim /var/kerberos/krb5kdc/kdc.conf
[realms]
MYCDH = {
acl_file = /var/kerberos/krb5kdc/kadm5.acl
dict_file = /usr/share/dict/words
admin_keytab = /var/kerberos/krb5kdc/kadm5.keytab
supported_enctypes = des-cbc-crc:normal des3-hmac-sha1:normal arcfour-hmac:normal des-hmac-sha1:normal des-cbc-crc:v4 des-cbc-crc:afs3
}
配置kadm5.acl
vim /var/kerberos/krb5kdc/kadm5.acl
*/admin@MYCDH *
创建Kerberos数据库
> kdb5_util create -r MYCDH -s
Enter KDC database master key: kerberos123
Re-enter KDC database master key to verify: kerberos123
这一步设置的密码很重要,到时候登录nifi的web界面的登陆密码就是这个。
kadmin.local -q "addprinc nifi@MYCDH" # 设置密码 admin123
kadmin.local -q "xst -norandkey -k nifi.keytab nifi@MYCDH"
进入home下的nifi
chown nifi:nifi nifi.keytab
# 测试服务:激活票据
klist -k nifi.keytab
kinit -kt nifi.keytab nifi@MYCDH
将bigdata11上的keytab文件分发
cd /home/nifi
scp nifi.keytab bigdata11:/home/nifi/
scp nifi.keytab bigdata12:/home/nifi/
scp nifi.keytab bigdata13:/home/nifi/
cd /opt
rz
nifi-1.17.0-bin.zip #nifi的安装包
nifi-toolkit-1.17.0-bin.zip #对应版本的证书生成工具
unzip nifi-1.17.0-bin.zip -d /opt
mv nifi-1.17.0 nifi #修改名字为nifi
unzip nifi-toolkit-1.17.0-bin.zip -d /opt #解压 -d表示解压路径
#如果是tar包,解压命令
cd /opt
tar -zxvf nifi-1.17.0-bin.tar.gz
tar -zxvf nifi-toolkit-1.17.0-bin.tar.gz
注意:nifi的安装包三台主机都要安装,nifi-toolkit只需要在主节点安装即可。
此步骤只需要在主节点bigdata11执行
bin/tls-toolkit.sh standalone -C 'CN=nifi, OU=NIFI' -n 'bigdata11,bigdata012,bigdata13' --keyPassword admin123 --keyStorePassword admin123 --trustStorePassword admin123 -o 'bak'
-C 生成适合在指定 DN 的浏览器中使用的客户端证书 里面的都是一些标记配置 ,按自己需要填写,比如 CN=nifi
-n -hostnames要生成证书的主机名列表(以逗号分隔),可指定多次,支持范围和实例模式
-o 是输出的目录
生成的主机文件需要复制到对应每个节点的nifi/conf目录下(只需要在主节点bigdata11下执行)
cd bak
cp CN* bigdata11/ cp nifi-* bigdata11/
cd bigdata11 scp ./* /nifi/conf
cp CN* bigdata12/ cp nifi-* bigdata12/
cd bigdata12 scp ./* bigdata12:/nifi/conf/
cp CN* bigdata13/ cp nifi-* bigdata13/
cd bigdata13 scp ./* bigdata13:/nifi/conf/
注释:把节点目录发送到各个节点,外面的文件可用可不用,都是一些 https 的 key
创建myid
cd /nifi mkdir -p ./state/zookeeper echo 1 > ./state/zookeeper/myid (bigdata11 执行) cd /nifi mkdir -p ./state/zookeeper echo 1 > ./state/zookeeper/myid (bigdata12 执行) cd /nifi mkdir -p ./state/zookeeper echo 1 > ./state/zookeeper/myid (bigdata13 执行)
修改nifi目录下的**/conf/state-management.xml**(三台都需执行)
<cluster-provider> <id>zk-providerid> <class>org.apache.nifi.controller.state.providers.zookeeper.ZooKeeperStateProviderclass> <property name="Connect String">192.168.11.11:22181,192.168.11.12:22181,192.168.11.13:22181property> <property name="Root Node">/nifiproperty> <property name="Session Timeout">10 secondsproperty> <property name="Access Control">Openproperty> cluster-provider>
修改每个节点的**/conf/zookeeper.properties**(三台都需执行) 末尾修改添加
server.1=192.168.11.11:22888:23888;22181 server.2=192.168.11.12:22888:23888;22181 server.3=192.168.11.13:22888:23888;22181
修改每台节点的nifi.properties(三台都需执行)
cd /opt/nifi/conf/
vim nifi.properties
#修改nifi.properties部分参数
nifi.state.management.embedded.zookeeper.start=true
nifi.cluster.protocol.is.secure=true
nifi.cluster.is.node=true
nifi.zookeeper.connect.string=192.168.11.11:22181,192.168.11.12:22181,192.168.11.13:22181
#三台主机端口号需要更改为11443,address分别为对应的地址bigdata11、bigdata12、bigdata13
nifi.cluster.node.protocol.port=11443
nifi.cluster.node.address=bigdata11
#三台主机web端口号为9443,host分别为对应的host
nifi.web.https.port=9443
nifi.web.https.host=bigdata11
nifi.web.proxy.context.path=/ #用于端口的https转接,当我们用nginx的时候需要在nginx里面配置。
nifi.web.proxy.host=192.168.11.14:11213 #代理服务器的ip地址:代理服务的端口
#三台主机的balance为6342
nifi.cluster.load.balance.port=6342
#配置kerberos参数
nifi.remote.input.secure=true
nifi.security.user.login.identity.provider=kerberos-provider
nifi.security.user.authorizer=file-provider #属性指示authorizers.xml文件中要使用的已
#配置授权者
nifi.sensitive.props.key=123456789012 #所有选项都需要至少 12 个字符的密码
# kerberos #
nifi.kerberos.krb5.file=/etc/krb5.conf
nifi.kerberos.service.principal=nifi@MYCDH#配置的服务主体
nifi.kerberos.service.keytab.location=/home/nifi/nifi.keytab #配置服务主体的keytab
将kerberos-provider的前后注释去掉,然后配置前面设置的kdc.conf中设置的realm(MYCDH)
vim login-identity-providers.xml
<provider>
<identifier>kerberos-provideridentifier>
<class>org.apache.nifi.kerberos.KerberosProviderclass>
<property name="Default Realm">MYCDHproperty>
<property name="Authentication Expiration">12 hoursproperty>
provider>
vim authorizers.xml
<authorizer>
<identifier>file-provideridentifier>
<class>org.apache.nifi.authorization.FileAuthorizerclass>
<property name="Authorizations File">./conf/authorizations.xmlproperty>
<property name="Users File">./conf/users.xmlproperty>
<property name="Initial Admin Identity">nifi@MYCDHproperty>
<property name="Legacy Authorized Users File">property>
<property name="Node Identity 1">CN=192.168.11.11, OU=NIFIproperty>
<property name="Node Identity 2">CN=192.168.11.12, OU=NIFIproperty>
<property name="Node Identity 3">CN=192.168.11.13, OU=NIFIproperty>
authorizer>
vim bootstrap.conf
java.arg.2=-Xms10240m
java.arg.3=-Xmx10240m
cd /opt/nifi/
#需要更新key
bin/nifi.sh set-sensitive-properties-key 123456789012
#设置初始用户密码
bin/nifi.sh set-single-user-credentials admin 123456789012
启动
/bin/nifi.sh start
在浏览器输入: https://192.168.11.11:9443/nifi/
登录:nifi密码:admin123三台登录一样。
打开浏览器的设置
导入
选择证书、输入密码
证书位置与密码:
cd /opt/nifi-toolkit-1.17.0/bak
ll
进入nginx的安装目录,进入到sbin下,输入
./nginx -v
如果出现
(configure arguments: --prefix=********* --with-http_ssl_module),则已安装可以不用安装ssl模块
打开nginx的conf文件
配置下面参数:
stream {
upstream nifi232 {
server 192.168.11.11:9443;
}
upstream nifi233 {
server 192.168.11.12:9443;
}
upstream nifi234 {
server 192.168.11.13:9443;
}
server {
listen 16618;
proxy_connect_timeout 300s;
proxy_timeout 300s;
proxy_pass nifi232;
}
server {
listen 16619;
proxy_connect_timeout 300s;
proxy_timeout 300s;
proxy_pass nifi233;
}
server {
listen 16620;
proxy_connect_timeout 300s;
proxy_timeout 300s;
proxy_pass nifi234;
}
}
选择处理器组件
弹出窗口显示的就是所有处理器
ExecuteScript:执行脚本处理器,支持:clojure,ecmascript,groovy,lua,python,rubby
QueryDatabaseTable:数据库查询处理器,支持:mysql
ConvertAvroToJSON:avro数据格式转换为json。
SplitJson:将JSON文件拆分为多个单独的FlowFiles,用于由jsonPath表达式指定的的数组元素
EvaluateJsonPath:根据FlowFile的内容评估一个或多个JsonPath表达式。这些表达式的结果将分配给FlowFile属性,或者写入FlowFile本身的内容,具体取决于处理器的配置。
ReplaceText:文本组装与替换,支持正则表达式
PutHDFS:将FlowFile数据写入Hadoop分布式文件系统(HDFS)
PutHiveQL:执行hive ddl/dml命令,如:insert,update
PublishKafka_2_0:根据配置将消息发送到kafka topic
SelectHiveQL:执行hive select语句并获取结果
PutFile:将FlowFile数据写入文件
GetHDFS:从Hadoop分布式文件系统获取文件
CaptureChangeMySQL:从MySQL数据库中检索更改数据捕获(CDC)事件。CDC事件包括INSERT。UPDATE,DELETE,操作。事件作为单个流文件输出,这些文件按操作发生的时间排序。
ExecuteStreamCommand:一般用于执行sh脚本
添加一个处理器
处理器配置项说明:
Configure(配置):此选项允许用户建立或更改处理器的配置。
Start(启动或停止):此选项允许用户启动或停止处理器;该选项将为Start或Stop,具体取决于处理器当前状态。
Disable(启用或禁用):此选项允许用户启用或禁用处理器;该选项将为“启用”或“禁用”,具体取决于处理器当前状态。
View Data provenance(查看数据来源):此选项显示Nifi数据来源表,其中包含有关通过该处理器路由FlowFile的数据来源事件的信息。
View status history(查看状态历史记录):此选项打开处理器统计信息随时间的图形表示。
View usage(查看用法):此选项将用户带到处理器的使用文档。
View connection -->Upstream(查看连接–>上游):此选项允许用户查看和“跳转”入处理器的上游连接。当处理器连接进出其他进程组时,这尤其有用。
View connection -->Downstream(查看连接–>下游):此选项允许用户查看和“跳转”到处理器的下游连接。当处理器连接进出其他进程组时,这尤其有用。
Centered in view(视图中心):此选项将画布的视图置于给定的处理器上。
Change color(更改颜色):此选项允许用户更改处理器的颜色,这可以使大流量的可视化管理更容易。
Group(添加到组):把当前处理器添加到组
Create template(创建模板):此选项允许用户从所选处理器创建模板
Copy(复制):此选项将所选处理器的副本放在本 以便可以通过右键单击工作区并选择“粘贴”完成
Delete(删除):此选项允许从画布中删除处理器
右键选择Configure
SETTING(设置)
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接
SCHEDULING(任务调度)
PROPERTIES(属性)
RELATIONSHIPS(终止关系)
COMMENTS(注释)
数据流传入点(input-port)
虽说时数据流输入点,但并不是整体数据流的起点。它是作为组与组之间的数据流连接的传入点与输出点。
数据流输出点(output-port)
它是作为组与组之间的数据流连接的传入点与输出点
组(process-group)
组相当于系统中的文件夹,作用就是使数据流的各个部分看起来更工整,思路更清晰,不至于从头到尾一条线阅读起来不方便。
远程组(remote process-group)
添加远程的组
聚合(funnel)
用于将来自多个Connections的数据合并到一个Connection中
模板(template)
可以将若干组件组合在一起形成一个更大的组,从该组创建数据流模板。这些模板也可以导出为XML并导入到另一个nifi实例中,从而可以共享这些组
便签(label)
可放置在画布空白处,写上备注信息
Navigate是对工作区进行预览,点击放大缩小可调整视野,蓝框区域就是工作区当前的界面,可用鼠标在这部分进行移动从而调整工作区的视野。
配置(Configuration)
启用(enable)
禁用(disable)
开始(start)
停止(stop)
创建模板(create template)
上传模板(upload template)
kadmin.local -q "addprinc user1@MYCDH" #设置密码admin123
kadmin.local -q "addprinc user2@MYCDH" #设置密码admin123
kadmin.local -q "addprinc user3@MYCDH" #设置密码admin123
kadmin.local -q "addprinc user4@MYCDH" #设置密码admin123
Policy | Privilege | Global Menu Selection | Resource Descriptor |
---|---|---|---|
view the UI 查看用户界面 |
允许用户查看 UI | N/A | /flow |
access the controller 访问控制器 |
允许用户查看/修改控制器,包括报告任务、控制器服务、参数上下文和集群中的节点 | Controller Settings | /controller |
access parameter contexts 访问参数上下文 |
许用户查看/修改参数上下文。除非被覆盖,否则对参数上下文的访问从“访问控制器”策略继承。 | Parameter Contexts | /parameter-contexts |
query provenance 查询出处 |
允许用户提交来源搜索并请求事件沿袭 | Data Provenance | /provenance |
access restricted components 访问受限组件 |
假设其他权限足够,允许用户创建/修改受限组件。受限组件可以指示需要哪些特定权限。可以针对特定限制授予权限,也可以不考虑限制授予权限。如果不考虑限制而授予权限,则用户可以创建/修改所有受限组件 | N/A | /restricted-components |
access all policies 访问所有政策 |
允许用户查看/修改所有组件的策略 | Policies | /policies |
access users/user groups 访问用户/用户组 |
允许用户查看/修改用户和用户组 | Users | /tenants |
retrieve site-to-site details 检索站点到站点的详细信息 |
允许其他 NiFi 实例检索站点到站点详细信息 | N/A | /site-to-site |
view system diagnostics 查看系统诊断 |
允许用户查看系统诊断 | Summary | /system |
proxy user requests 代理用户请求 |
允许代理机器代表其他人发送请求 | N/A | /proxy |
access counters 访问计数器 |
允许用户查看/修改计数器 | Counters | /counters |
Policy | Privilege | Resource Descriptor & Action |
---|---|---|
view the component 查看组件 |
允许用户查看组件配置详细信息 | resource="/ |
modify the component 修改组件 |
允许用户修改组件配置详细信息 | resource="/ |
operate the component 操作组件 |
允许用户通过更改组件运行状态(启动/停止/启用/禁用)、远程端口传输状态或终止处理器线程来操作组件 | resource="/operation/ |
view provenance 查看出处 |
允许用户查看此组件生成的出处事件 | resource="/provenance-data/ |
view the data 查看数据 |
允许用户在出站连接中的流文件队列中以及通过来源事件查看此组件的元数据和内容 | resource="/data/ |
modify the data 修改数据 |
允许用户清空出站连接中的流文件队列并通过来源事件提交重播 | resource="/data/ |
view the policies 查看政策 |
允许用户查看可以查看/修改组件的用户列表 | resource="/policies/ |
modify the policies 修改政策 |
允许用户修改可以查看/修改组件的用户列表 | resource="/policies/ |
receive data via site-to-site 通过站点到站点接收数据 |
允许端口从 NiFi 实例接收数据 | resource="/data-transfer/input-ports/ |
send data via site-to-site 通过站点到站点发送数据 |
允许端口从 NiFi 实例发送数据 | resource="/data-transfer/output-ports/ |
使用管理员,编辑访问策略
选择你要赋予的权限
添加赋权的用户,或者组。
查看权限
选择组件
选择覆盖
添加相应的权限和用户