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

相关文章

C#使用yield关键字实现提升迭代性能与效率

《C#使用yield关键字实现提升迭代性能与效率》yield关键字在C#中简化了数据迭代的方式,实现了按需生成数据,自动维护迭代状态,本文主要来聊聊如何使用yield关键字实现提升迭代性能与效率,感兴... 目录前言传统迭代和yield迭代方式对比yield延迟加载按需获取数据yield break显式示迭

k8s部署MongDB全过程

《k8s部署MongDB全过程》文章介绍了如何在Kubernetes集群中部署MongoDB,包括环境准备、创建Secret、创建服务和Deployment,并通过Robo3T工具测试连接... 目录一、环境准备1.1 环境说明1.2 创建 namespace1.3 创建mongdb账号/密码二、创建Sec

Java中的Opencv简介与开发环境部署方法

《Java中的Opencv简介与开发环境部署方法》OpenCV是一个开源的计算机视觉和图像处理库,提供了丰富的图像处理算法和工具,它支持多种图像处理和计算机视觉算法,可以用于物体识别与跟踪、图像分割与... 目录1.Opencv简介Opencv的应用2.Java使用OpenCV进行图像操作opencv安装j

Java操作PDF文件实现签订电子合同详细教程

《Java操作PDF文件实现签订电子合同详细教程》:本文主要介绍如何在PDF中加入电子签章与电子签名的过程,包括编写Word文件、生成PDF、为PDF格式做表单、为表单赋值、生成文档以及上传到OB... 目录前言:先看效果:1.编写word文件1.2然后生成PDF格式进行保存1.3我这里是将文件保存到本地后

windows系统下shutdown重启关机命令超详细教程

《windows系统下shutdown重启关机命令超详细教程》shutdown命令是一个强大的工具,允许你通过命令行快速完成关机、重启或注销操作,本文将为你详细解析shutdown命令的使用方法,并提... 目录一、shutdown 命令简介二、shutdown 命令的基本用法三、远程关机与重启四、实际应用

将Python应用部署到生产环境的小技巧分享

《将Python应用部署到生产环境的小技巧分享》文章主要讲述了在将Python应用程序部署到生产环境之前,需要进行的准备工作和最佳实践,包括心态调整、代码审查、测试覆盖率提升、配置文件优化、日志记录完... 目录部署前夜:从开发到生产的心理准备与检查清单环境搭建:打造稳固的应用运行平台自动化流水线:让部署像

MySQL不使用子查询的原因及优化案例

《MySQL不使用子查询的原因及优化案例》对于mysql,不推荐使用子查询,效率太差,执行子查询时,MYSQL需要创建临时表,查询完毕后再删除这些临时表,所以,子查询的速度会受到一定的影响,本文给大家... 目录不推荐使用子查询和JOIN的原因解决方案优化案例案例1:查询所有有库存的商品信息案例2:使用EX

spring6+JDK17实现SSM起步配置文件

《spring6+JDK17实现SSM起步配置文件》本文介绍了使用Spring6和JDK17配置SSM(Spring+SpringMVC+MyBatis)框架,文中通过示例代码介绍的非常详细,对大家的... 目录1.配置POM文件2.在resource目录下新建beans.XML文件,用于配置spirng3

Python项目打包部署到服务器的实现

《Python项目打包部署到服务器的实现》本文主要介绍了PyCharm和Ubuntu服务器部署Python项目,包括打包、上传、安装和设置自启动服务的步骤,具有一定的参考价值,感兴趣的可以了解一下... 目录一、准备工作二、项目打包三、部署到服务器四、设置服务自启动一、准备工作开发环境:本文以PyChar

使用SpringBoot创建一个RESTful API的详细步骤

《使用SpringBoot创建一个RESTfulAPI的详细步骤》使用Java的SpringBoot创建RESTfulAPI可以满足多种开发场景,它提供了快速开发、易于配置、可扩展、可维护的优点,尤... 目录一、创建 Spring Boot 项目二、创建控制器类(Controller Class)三、运行