从用户到平台搭建的转变——Nifi集群部署

324 阅读3分钟

前言

随着大环境的影响和制造业的落寞,我赶上了裁员潮...... 这就意味着,我又要从熟悉的环境去到陌生的环境,一切从零开始!有幸在老东家接触了数位转型,工业4.0,也知道了很多大数据工具,例如apache nifi, apache kafka, Elasticsearch,Apache Flink等等。每天都在使用着这些工具,却从来没想过自己要去搭建一个大数据平台,这不机会来了么,现任也想搞这些玩意儿,于是我就榜上了度娘,各种搜索,从win10系统到Linux CentOS系统,我统统尝试了一番,结果还是喜人的,至少现在nifi每天都在耕耘!

在CentOS7环境下集群部署

准备工作:

  1. VM上分配3个IP,分别为:168.102.2.201;168.102.2.202;168.102.2.203,用来模拟三台服务器(条件艰苦,没有服务器)
  2. 版本选择
  • JDK:1.8
  • Zookeeper:3.6.4
  • Scala:2.11.12
  • Kafka:3.5.1
  • Nifi:1.25.0

JDK1.8安装

S1:官网下载JDK1.8,并将文档放在/usr/local/java目录下

S2:解压安装包

命令:tar -xvf jdk-8u411-linux-x64.tar.gz

S3: 配置环境变量

进入编辑状态命令:vim /etc/profile,其中

/etc/profile是一个全局配置文件, 所有用户登录都会使用该文件构建用户环境。

export JAVA_HOME=/usr/local/java/jdk1.8.0_411
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar

保存并退出vim编辑器(:wq)

使得修改内容生效命令:source /etc/profile

S4:验证JDK1.8是否安装成功

java -version
echo $JAVA_HOME
javac

jdk install.PNG

Scala2.11.12安装

S1:创建目录

mkdir -p /usr/local/scala cd /usr/local/scala

S2:下载scala并解压

下载网址:www.scala-lang.org/download/

解压命令:tar -zvxf scala-2.11.12.tgz

S3:配置环境变量

export SCALA_HOME=/usr/local/scala/scala-2.11.12
export PATH=$SCALA_HOME/bin:$PATH

使得修改内容生效:source /etc/profile

S4:查看是否安装成功 scala

scala install.PNG

Zookeeper3.6.4安装

S1:创建目录

mkdir -p /usr/local/zookeeper

cd /usr/local/zookeeper

S2:下载并安装

官网:archive.apache.org/dist/zookee…

解压命令:tar -zxvf apache-zookeeper-3.6.4-bin.tar.gz

S3:配置zookeeper参数

1.配置zoo.cfg

复制一份新的配置文件zoo.cfg, 命令:cp zoo_sample.cfg zoo.cfg

2.修改zoo.cfg配置项

dataDir=/tmp/zookeeper/data 
dataLogDir=/tmp/zookeeper/log 
server.1=168.102.2.201:2888:3888
server.2=168.102.2.202:2888:3888
server.3=168.102.2.203:2888:3888

3.在/tmp/zookeeper目录下新建data文件夹和log文件夹, 然后在data文件夹下创建myid文件,并写入数字1

S4:配置环境变量

export ZOOKEEPER_HOME=/usr/local/zookeeper/apache-zookeeper-3.6.4-bin
export PATH=$ZOOKEEPER_HOME/bin:$PATH

S5:启动 命令:zkServer.sh start

其它两台同上,需要注意的就是myid文件的内容要修改!

zookeeper-1 start.PNG

Kafka3.5.1安装

S1:创建目录

mkdir -p /usr/local/kafka

cd /usr/local/kafka

S2:下载并安装

官网:kafka.apache.org/downloads

解压命令:tar -zxvf kafka_2.12-3.5.1.tgz

S3:修改kafka 服务的配置

broker.id=1
listeners=PLAINTEXT://168.102.2.201:9092
log.dirs=/usr/local/kafka/kafka_2.12-3.5.1/kafka-logs
zookeeper.connect=168.102.2.201:2181,168.102.2.202:2181,168.102.2.203:2181

S4:修改zookeeper的配置

dataDir=/usr/local/kafka/kafka_2.12-3.5.1/zookeeper-data

S5:启动

cd /usr/local/kafka/kafka_2.12-3.5.1

启动zookeeper

./bin/zookeeper-server-start.sh -daemon config/zookeeper.properties

启动kafka

./bin/kafka-server-start.sh -daemon config/server.properties

S6:查看是否启动成功

jps -l

S6:创建kafka topic

命令:kafka-topics.sh --create --bootstrap-server 168.102.2.201:9092 --replication-factor 1 --partitions 1 --topic test

S7:生产消息

命令:kafka-console-producer.sh --broker-list 168.102.2.201:9092 --topic test

S8:消费消息

命令:kafka-console-consumer.sh --bootstrap-server 168.102.2.201:9092 --topic test --from-beginning

获取所有topic命令:kafka-topics.sh --list --bootstrap-server 168.102.2.201:9092

nifi1.25.0安装

这里使用的是外部zookeeper

S1:创建目录

mkdir -p /usr/local/nifi

cd /usr/local/nifi

S2:下载并安装

官网:nifi.apache.org/download/

解压命令:unzip nifi-1.25.0-bin.zip

S3:修改conf/nifi.properties文件

#####指定此NiFi实例是否应运行嵌入式ZooKeeper服务器,默认是false (连接外部zookeeper服务器) 
nifi.state.management.embedded.zookeeper.start=false

nifi.remote.input.host=168.102.2.201
nifi.remote.input.secure=false
nifi.remote.input.socket.port=9998

##### HTTP主机。默认为空白
nifi.web.http.host=168.102.2.201
##### HTTP端口。默认值为8080
nifi.web.http.port=8000

##### 如果实例是群集中的节点,请将此设置为true。默认值为false
nifi.cluster.is.node=true
nifi.cluster.node.address=168.102.2.201
nifi.cluster.node.protocol.port=9999
nifi.cluster.flow.election.max.wait.time=20 sec
nifi.cluster.flow.election.max.candidates=1


##### 连接外部的时候使用外部ZooKeeper连接地址
nifi.zookeeper.connect.string=168.102.2.201:2181,168.102.2.202:2181,168.102.2.203:2181 

其它两台的web IP分别为:168.102.2.202;168.102.2.203,端口可以用同一个

S4:配置环境变量

S5:启动 nifi.sh start

nifi cluster.PNG

Nifi用例分享

资料同步

捕获.PNG