Nifi详细部署(配置文件,单节点,集群,性能优化)

2024-04-10 08:58

本文主要是介绍Nifi详细部署(配置文件,单节点,集群,性能优化),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

Nifi部署

文章目录

  • Nifi部署
    • 前言
      • 信息
      • 引用
    • 单节点部署
      • 简单配置
        • 修改使用的JDK
        • 修改Nifi端口
        • 配置Nifi使用的内存
      • 启动
      • 命令
      • 配置文件详解
        • bootstrap.conf
        • nifi.properties
    • 集群搭建
      • 步骤目录
      • 准备Zookeeper配置文件
      • 准备节点1的配置
      • 准备节点2的配置
      • 准备节点3的配置
      • Docker的配置
    • Nifi性能优化
      • 1.配置最大文件句柄
      • 2.配置最大派生进程数
      • 3.配置TCP Socket端口数
      • 4.设置Socket套接字停留时间
      • 5.禁止SWAP
      • 6.对Repository禁用atime
      • 7.排除防病毒扫描目录

前言

信息

Author: Tine Aine

Version: 1.0

protocol: None

UpdateDate: 2021年1月28日16:45:46

引用

Apache Document

单节点部署

简单配置

一般情况下nifi官方包开箱即用,不需要进行额外配置,不过默认使用的http端口为8080,极有可能和其他程序发送冲突,因此要着重关注

修改使用的JDK
vi /usr/local/nifi/bin/nifi.env.sh

其中文件改为:

export JAVA_HOME=/usr/local/jdk1.8.0_144
修改Nifi端口
vi /usr/local/nifi/bin/nifi.properties

其中内容修改为:

# nifi使用的端口,默认8080
nifi.web.http.port=9802
配置Nifi使用的内存
vi /usr/local/nifi/conf/bootstarp.conf

其中内容修改为:

# 可以修改使用的内存
java.arg.2=-Xms4096m
java.arg.3=-Xmx8192m

启动

#!/bin/sh
#
#    Licensed to the Apache Software Foundation (ASF) under one or more
#    contributor license agreements.  See the NOTICE file distributed with
#    this work for additional information regarding copyright ownership.
#    The ASF licenses this file to You under the Apache License, Version 2.0
#    (the "License"); you may not use this file except in compliance with
#    the License.  You may obtain a copy of the License at
#
#       http://www.apache.org/licenses/LICENSE-2.0
#
#    Unless required by applicable law or agreed to in writing, software
#    distributed under the License is distributed on an "AS IS" BASIS,
#    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
#    See the License for the specific language governing permissions and
#    limitations under the License.# Script structure inspired from Apache Karaf and other Apache projects with similar startup approaches# Discover the path of the file# Since MacOS X, FreeBSD and some other systems lack gnu readlink, we use a more portable
# approach based on following StackOverflow comment http://stackoverflow.com/a/1116890/888876TARGET_FILE=$0cd $(dirname $TARGET_FILE)
TARGET_FILE=$(basename $TARGET_FILE)# Iterate down a (possible) chain of symlinks
while [ -L "$TARGET_FILE" ]
doTARGET_FILE=$(readlink $TARGET_FILE)cd $(dirname $TARGET_FILE)TARGET_FILE=$(basename $TARGET_FILE)
done# Compute the canonicalized name by finding the physical path
# for the directory we're in and appending the target file.
PHYS_DIR=$(pwd -P)SCRIPT_DIR=$PHYS_DIR
PROGNAME=$(basename "$0"). "${SCRIPT_DIR}/nifi-env.sh"warn() {echo "${PROGNAME}: $*"
}die() {warn "$*"exit 1
}detectOS() {# OS specific support (must be 'true' or 'false').cygwin=false;aix=false;os400=false;darwin=false;case "$(uname)" inCYGWIN*)cygwin=true;;AIX*)aix=true;;OS400*)os400=true;;Darwin)darwin=true;;esac# For AIX, set an environment variableif ${aix}; thenexport LDR_CNTRL=MAXDATA=0xB0000000@DSAecho ${LDR_CNTRL}fi# In addition to those, go around the linux space and query the widely# adopted /etc/os-release to detect linux variantsif [ -f /etc/os-release ]; then. /etc/os-releasefi
}unlimitFD() {# Use the maximum available, or set MAX_FD != -1 to use thatif [ "x${MAX_FD}" = "x" ]; thenMAX_FD="maximum"fi# Increase the maximum file descriptors if we canif [ "${os400}" = "false" ] && [ "${cygwin}" = "false" ]; thenMAX_FD_LIMIT=$(ulimit -H -n)if [ "${MAX_FD_LIMIT}" != 'unlimited' ]; thenif [ $? -eq 0 ]; thenif [ "${MAX_FD}" = "maximum" -o "${MAX_FD}" = "max" ]; then# use the system maxMAX_FD="${MAX_FD_LIMIT}"fiulimit -n ${MAX_FD} > /dev/null# echo "ulimit -n" `ulimit -n`if [ $? -ne 0 ]; thenwarn "Could not set maximum file descriptor limit: ${MAX_FD}"fielsewarn "Could not query system maximum file descriptor limit: ${MAX_FD_LIMIT}"fififi
}locateJava() {# Setup the Java Virtual Machineif $cygwin ; then[ -n "${JAVA}" ] && JAVA=$(cygpath --unix "${JAVA}")[ -n "${JAVA_HOME}" ] && JAVA_HOME=$(cygpath --unix "${JAVA_HOME}")fiif [ "x${JAVA}" = "x" ] && [ -r /etc/gentoo-release ] ; thenJAVA_HOME=$(java-config --jre-home)fiif [ "x${JAVA}" = "x" ]; thenif [ "x${JAVA_HOME}" != "x" ]; thenif [ ! -d "${JAVA_HOME}" ]; thendie "JAVA_HOME is not valid: ${JAVA_HOME}"fiJAVA="${JAVA_HOME}/bin/java"elsewarn "JAVA_HOME not set; results may vary"JAVA=$(type java)JAVA=$(expr "${JAVA}" : '.* \(/.*\)$')if [ "x${JAVA}" = "x" ]; thendie "java command not found"fififi# if command is env, attempt to add more to the classpathif [ "$1" = "env" ]; then[ "x${TOOLS_JAR}" =  "x" ] && [ -n "${JAVA_HOME}" ] && TOOLS_JAR=$(find -H "${JAVA_HOME}" -name "tools.jar")[ "x${TOOLS_JAR}" =  "x" ] && [ -n "${JAVA_HOME}" ] && TOOLS_JAR=$(find -H "${JAVA_HOME}" -name "classes.jar")if [ "x${TOOLS_JAR}" =  "x" ]; thenwarn "Could not locate tools.jar or classes.jar. Please set manually to avail all command features."fifi}init() {# Determine if there is special OS handling we must performdetectOS# Unlimit the number of file descriptors if possibleunlimitFD# Locate the Java VM to executelocateJava "$1"
}install() {detectOSif [ "${darwin}" = "true"  ] || [ "${cygwin}" = "true" ]; thenecho 'Installing Apache NiFi as a service is not supported on OS X or Cygwin.'exit 1fiSVC_NAME=nifiif [ "x$2" != "x" ] ; thenSVC_NAME=$2fi# since systemd seems to honour /etc/init.d we don't still create native systemd services# yet...initd_dir='/etc/init.d'SVC_FILE="${initd_dir}/${SVC_NAME}"if [ ! -w  "${initd_dir}" ]; thenecho "Current user does not have write permissions to ${initd_dir}. Cannot install NiFi as a service."exit 1fi# Create the init script, overwriting anything currently present
cat <<SERVICEDESCRIPTOR > ${SVC_FILE}
#!/bin/sh#
#    Licensed to the Apache Software Foundation (ASF) under one or more
#    contributor license agreements.  See the NOTICE file distributed with
#    this work for additional information regarding copyright ownership.
#    The ASF licenses this file to You under the Apache License, Version 2.0
#    (the "License"); you may not use this file except in compliance with
#    the License.  You may obtain a copy of the License at
#
#       http://www.apache.org/licenses/LICENSE-2.0
#
#    Unless required by applicable law or agreed to in writing, software
#    distributed under the License is distributed on an "AS IS" BASIS,
#    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
#    See the License for the specific language governing permissions and
#    limitations under the License.
#
# chkconfig: 2345 20 80
# description: Apache NiFi is a dataflow system based on the principles of Flow-Based Programming.
## Make use of the configured NIFI_HOME directory and pass service requests to the nifi.sh executable
NIFI_HOME=${NIFI_HOME}
bin_dir=\${NIFI_HOME}/bin
nifi_executable=\${bin_dir}/nifi.sh\${nifi_executable} "\$@"
SERVICEDESCRIPTORif [ ! -f "${SVC_FILE}" ]; thenecho "Could not create service file ${SVC_FILE}"exit 1fi# Provide the user execute access on the filechmod u+x ${SVC_FILE}# If SLES or OpenSuse...if [ "${ID}" = "opensuse" ] || [ "${ID}" = "sles" ]; thenrm -f "/etc/rc.d/rc2.d/S65${SVC_NAME}"ln -s "/etc/init.d/${SVC_NAME}" "/etc/rc.d/rc2.d/S65${SVC_NAME}" || { echo "Could not create link /etc/rc.d/rc2.d/S65${SVC_NAME}"; exit 1; }rm -f "/etc/rc.d/rc2.d/K65${SVC_NAME}"ln -s "/etc/init.d/${SVC_NAME}" "/etc/rc.d/rc2.d/K65${SVC_NAME}" || { echo "Could not create link /etc/rc.d/rc2.d/K65${SVC_NAME}"; exit 1; }echo "Service ${SVC_NAME} installed"# Anything other fallback to the old approachelse

这篇关于Nifi详细部署(配置文件,单节点,集群,性能优化)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/890618

相关文章

Python设置Cookie永不超时的详细指南

《Python设置Cookie永不超时的详细指南》Cookie是一种存储在用户浏览器中的小型数据片段,用于记录用户的登录状态、偏好设置等信息,下面小编就来和大家详细讲讲Python如何设置Cookie... 目录一、Cookie的作用与重要性二、Cookie过期的原因三、实现Cookie永不超时的方法(一)

SpringBoot整合liteflow的详细过程

《SpringBoot整合liteflow的详细过程》:本文主要介绍SpringBoot整合liteflow的详细过程,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋...  liteflow 是什么? 能做什么?总之一句话:能帮你规范写代码逻辑 ,编排并解耦业务逻辑,代码

MyBatisPlus如何优化千万级数据的CRUD

《MyBatisPlus如何优化千万级数据的CRUD》最近负责的一个项目,数据库表量级破千万,每次执行CRUD都像走钢丝,稍有不慎就引起数据库报警,本文就结合这个项目的实战经验,聊聊MyBatisPl... 目录背景一、MyBATis Plus 简介二、千万级数据的挑战三、优化 CRUD 的关键策略1. 查

浏览器插件cursor实现自动注册、续杯的详细过程

《浏览器插件cursor实现自动注册、续杯的详细过程》Cursor简易注册助手脚本通过自动化邮箱填写和验证码获取流程,大大简化了Cursor的注册过程,它不仅提高了注册效率,还通过友好的用户界面和详细... 目录前言功能概述使用方法安装脚本使用流程邮箱输入页面验证码页面实战演示技术实现核心功能实现1. 随机

springboot项目打jar制作成镜像并指定配置文件位置方式

《springboot项目打jar制作成镜像并指定配置文件位置方式》:本文主要介绍springboot项目打jar制作成镜像并指定配置文件位置方式,具有很好的参考价值,希望对大家有所帮助,如有错误... 目录一、上传jar到服务器二、编写dockerfile三、新建对应配置文件所存放的数据卷目录四、将配置文

C++链表的虚拟头节点实现细节及注意事项

《C++链表的虚拟头节点实现细节及注意事项》虚拟头节点是链表操作中极为实用的设计技巧,它通过在链表真实头部前添加一个特殊节点,有效简化边界条件处理,:本文主要介绍C++链表的虚拟头节点实现细节及注... 目录C++链表虚拟头节点(Dummy Head)一、虚拟头节点的本质与核心作用1. 定义2. 核心价值二

Redis分片集群、数据读写规则问题小结

《Redis分片集群、数据读写规则问题小结》本文介绍了Redis分片集群的原理,通过数据分片和哈希槽机制解决单机内存限制与写瓶颈问题,实现分布式存储和高并发处理,但存在通信开销大、维护复杂及对事务支持... 目录一、分片集群解android决的问题二、分片集群图解 分片集群特征如何解决的上述问题?(与哨兵模

HTML img标签和超链接标签详细介绍

《HTMLimg标签和超链接标签详细介绍》:本文主要介绍了HTML中img标签的使用,包括src属性(指定图片路径)、相对/绝对路径区别、alt替代文本、title提示、宽高控制及边框设置等,详细内容请阅读本文,希望能对你有所帮助... 目录img 标签src 属性alt 属性title 属性width/h

SpringBoot连接Redis集群教程

《SpringBoot连接Redis集群教程》:本文主要介绍SpringBoot连接Redis集群教程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1. 依赖2. 修改配置文件3. 创建RedisClusterConfig4. 测试总结1. 依赖 <de

Redis 配置文件使用建议redis.conf 从入门到实战

《Redis配置文件使用建议redis.conf从入门到实战》Redis配置方式包括配置文件、命令行参数、运行时CONFIG命令,支持动态修改参数及持久化,常用项涉及端口、绑定、内存策略等,版本8... 目录一、Redis.conf 是什么?二、命令行方式传参(适用于测试)三、运行时动态修改配置(不重启服务