Kafka、Flink安装,简单使用

内容来自尚硅谷、黑马、DeepSeek 

1. 安装Kafka

1.1 下载安装包

安装包名:kafka_2.12-3.8.0.tgz

下载地址:apache-kafka-3.8.0安装包下载_开源镜像站-阿里云

用xftp,传到任意一个节点上。

1.2 解压、配置Kafka

1.2.1 解压,改名

cd /component/packages
tar -zxvf kafka_2.12-3.8.0.tgz -C /component/
mv kafka_2.12-3.8.0/ kafka # 改名

1.2.2 修改配置文件

cd config/

vim server.properties
>>>
#broker的全局唯一编号,不能重复,只能是数字。
broker.id=0

#kafka运行日志(数据)存放的路径,路径不需要提前创建,kafka自动帮你创建,可以配置多个磁盘路径,路径与路径之间可以用","分隔
log.dirs=/component/kafka/datas

#配置连接Zookeeper集群地址(在zk根目录下创建/kafka,方便管理)
zookeeper.connect=zx101:2181,zx102:2181,zx103:2181/kafka
>>>

1.2.3 分发Kafka包

第一节点:broker.id=0

第二节点:broker.id=1

第三节点:broker.id=2

cd /component
xsync kafka

# 修改第二台、第三台节点的brokerid
#broker的全局唯一编号,不能重复,只能是数字。
broker.id=2

1.2.4 修改/etc/profile.d/my_env.sh 

sudo vim /etc/profile.d/my_env.sh

#KAFKA_HOME
export KAFKA_HOME=/component/kafka
export PATH=$PATH:$KAFKA_HOME/bin

# 分发
sudo ~/bin/xsync /etc/profile.d/my_env.sh

# 所有机器,刷新
source /etc/profile

1.3 启动Kafka

# 1. 启动zookeeper
zookeeper.sh start

# 2. 所有机器启动Kafka
cd /component/kafka/bin
kafka-server-start.sh -daemon config/server.properties # 每一个节点上运行一次


# 3. 关闭Kafka
kafka-server-stop.sh # 每一个节点上运行一次

1.4 群起Kafka

vim ~/bin/kafka.sh【加执行权限】

#! /bin/bash

case $1 in
"start"){
    for i in zx101 zx102 zx103
    do
        echo " --------启动 $i Kafka-------"
        ssh $i "/component/kafka/bin/kafka-server-start.sh -daemon /component/kafka/config/server.properties"
    done
};;
"stop"){
    for i in zx101 zx102 zx103
    do
        echo " --------停止 $i Kafka-------"
        ssh $i "/component/kafka/bin/kafka-server-stop.sh "
    done
};;
esac
cd /home/zx101/bin/
chmod +x kafka.sh

zookeeper报错处理

使用zookeeper.sh群起zookeeper集群时,报错,解决办法。

[kyiredicket@newdata1 ~]$ zookeeper.sh start
[ERROR] Missing peer id argument. Usage: zookeeper.sh ((start|start-foreground) peer-id)|stop|stop-all.

把zookeeper.sh改个名字,改成zeek.sh,我的就好了。

kafka 安装异常

进入Zookeeper的客户端

] zkCli.sh

) ls /

# 按顺序删除以下内容

deleteall /admin
deleteall /brokers
deleteall /cluster
deleteall /config
deleteall /consumers
deleteall /controller
deleteall /controller_epoch
deleteall /isr_change_notification
deleteall /latest_producer_id_block
deleteall /log_dir_event_notification

# 把3台Kafka的logs下面的文件全部删掉,

logs] rm -rf ./*


 2. Kafka基础命令

# 查看当前节点的topic
bin/kafka-topics.sh --bootstrap-server newdata1:9092 --list


# 创建topic,名为first
bin/kafka-topics.sh --bootstrap-server newdata1:9092 --create --partitions 1 --replication-factor 3 --topic first


# 查看topic的主题详情
bin/kafka-topics.sh --bootstrap-server newdata1:9092 --describe --topic first


# 删除topic
bin/kafka-topics.sh --bootstrap-server newdata1:9092 --delete --topic first



# 生产发送消息
bin/kafka-console-producer.sh --bootstrap-server newdata1:9092 --topic first

# 消费者查看消息,(每次运行这个命令,消费者组就会增加一个,即使退出了也会存在)
bin/kafka-console-consumer.sh --bootstrap-server newdata1:9092 --topic first
# 可以手动增加group的消费者组
bin/kafka-console-consumer.sh --bootstrap-server newdata1:9092 --topic first --group group_consumer_1234
# 消费者查看历史所有消息
bin/kafka-console-consumer.sh --bootstrap-server newdata1:9092 --from-beginning --topic first

3. 安装Kafka可视化监控

进入EFAK官网下载Eagle (http://download.kafka-eagle.org/)

3.1 解压、安装MySQL

如果已安装过,就不需再安装(安装过程见【Hive安装】)。

3.2 解压、安装Kafka-Eagle(只需安装在mysql同一台上)

3.2.1 修改kafka配置、分发

# 修改kafka中的配置,改完之后,要分发到其他节点
vim bin/kafka-server-start.sh
>>>
# 以前的内容
if [ "x$KAFKA_HEAP_OPTS" = "x" ]; then
    export KAFKA_HEAP_OPTS="-Xmx1G -Xms1G"
fi

# 改成如下内容
if [ "x$KAFKA_HEAP_OPTS" = "x" ]; then
    export KAFKA_HEAP_OPTS="-server -Xms2G -Xmx2G -XX:PermSize=128m -XX:+UseG1GC -XX:MaxGCPauseMillis=200 -XX:ParallelGCThreads=8 -XX:ConcGCThreads=5 -XX:InitiatingHeapOccupancyPercent=70"
    export JMX_PORT="9999"
    #export KAFKA_HEAP_OPTS="-Xmx1G -Xms1G"
fi
>>>

3.2.2 解压、安装Kafka-Eagle

有两步解压,比其他组件,多一步骤。

# 第一步解压
tar -zxvf kafka-eagle-bin-2.0.8.tar.gz -C /component/packages

# 第二步解压
tar -zxvf efak-web-2.0.8-bin.tar.gz -C /component

# 修改名字(看个人习惯)

找到该文件对应的地方,修改。其他的不用改。

# 修改配置文件
cd /component/efak/conf
vim system-config.properties

>>>
######################################
# multi zookeeper & kafka cluster list
# Settings prefixed with 'kafka.eagle.' will be deprecated, use 'efak.' instead
######################################
efak.zk.cluster.alias=cluster1
cluster1.zk.list=newdata1:2181,newdata2:2181,newdata3:2181/kafka   # 这个按各自情况更改


######################################
# kafka offset storage
######################################
# offset保存在kafka
cluster1.efak.offset.storage=kafka


######################################
# kafka sqlite jdbc driver address
######################################
# 配置mysql连接
efak.driver=com.mysql.jdbc.Driver
efak.url=jdbc:mysql://newdata1:3306/ke?useUnicode=true&characterEncoding=UTF-8&zeroDateTimeBehavior=convertToNull  # 这个按各自情况更改,还要在mysql库中,建一个叫做ke的database
efak.username=root  # 这个按各自情况更改
efak.password=123456  # 这个按各自情况更改


>>>

3.2.3 添加环境变量(这个不用分发)

sudo vim /etc/profile.d/my_env.sh

>>>
# kafkaEFAK
export KE_HOME=/component/efak
export PATH=$PATH:$KE_HOME/bin
>>>

# 刷新
source /etc/profile

3.2.4 启动、关闭efak

kf.sh start
kf.sh stop

3.2.5 登录网页

Windows上登录网页:http://192.168.84.138:8048/ 【网页、账号密码,会在启动efak时提供】

4. Flink安装(Flink on yarn)

4.1 Flink解压、安装。【选一台安装Flink(我选了newdata1)】

tar -zxvf flink-1.13.0-bin-scala_2.12.tgz -C /component/

# 修改配置
vim flink-conf.yaml
>>>
jobmanager.rpc.address: newdata1
>>>


vim workers
>>>
newdata2
newdata3
>>>

1.2 修改环境变量

sudo vim /etc/profile.d/my_env.sh
>>>
# FLINK_HOME
export HADOOP_CONF_DIR=${HADOOP_HOME}/etc/hadoop
export HADOOP_CLASSPATH=`hadoop classpath`
>>>

source /etc/profile

1.3 创建Windows的flink-maven工程

maven的配置和简单使用,参考【https://blog.csdn.net/ERROR101/article/details/147761152?spm=1011.2415.3001.5331

导入依赖

<properties>
    <flink.version>1.13.0</flink.version>
    <java.version>1.8</java.version>
    <scala.binary.version>2.12</scala.binary.version>
    <slf4j.version>1.7.30</slf4j.version>
</properties>

<dependencies>
    <!-- 引入Flink相关依赖-->
    <dependency>
        <groupId>org.apache.flink</groupId>
        <artifactId>flink-java</artifactId>
        <version>${flink.version}</version>
    </dependency>
    <dependency>
        <groupId>org.apache.flink</groupId>
        <artifactId>flink-streaming-java_${scala.binary.version}</artifactId>
        <version>${flink.version}</version>
    </dependency>
    <dependency>
        <groupId>org.apache.flink</groupId>
        <artifactId>flink-clients_${scala.binary.version}</artifactId>
        <version>${flink.version}</version>
    </dependency>
    
    <!-- 引入日志管理相关依赖-->
    <dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>slf4j-api</artifactId>
        <version>${slf4j.version}</version>
    </dependency>
    <dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>slf4j-log4j12</artifactId>
        <version>${slf4j.version}</version>
    </dependency>
    <dependency>
        <groupId>org.apache.logging.log4j</groupId>
        <artifactId>log4j-to-slf4j</artifactId>
        <version>2.14.0</version>
    </dependency>
</dependencies>

拉取依赖所需要的内容

新增日志管理文件

创建基础示例

package com.zx;

import org.apache.flink.api.common.typeinfo.Types;
import org.apache.flink.api.java.tuple.Tuple2;
import org.apache.flink.streaming.api.datastream.DataStreamSource;
import org.apache.flink.streaming.api.datastream.SingleOutputStreamOperator;
import org.apache.flink.streaming.api.environment.StreamExecutionEnvironment;
import org.apache.flink.util.Collector;

import java.util.Arrays;

public class SocketStreamWordCount {

    public static void main(String[] args) throws Exception {

        // 1. 创建流式执行环境
        StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment();

        // 2. 读取文本流:newdata12表示发送端主机名、7777表示端口号
        DataStreamSource<String> lineStream = env.socketTextStream("newdata1", 7777);

        // 3. 转换、分组、求和,得到统计结果
        SingleOutputStreamOperator<Tuple2<String, Long>> sum = lineStream.flatMap((String line, Collector<Tuple2<String, Long>> out) -> {
                    String[] words = line.split(" ");

                    for (String word : words) {
                        out.collect(Tuple2.of(word, 1L));
                    }
                }).returns(Types.TUPLE(Types.STRING, Types.LONG))
                .keyBy(data -> data.f0)
                .sum(1);

        // 4. 打印
        sum.print();

        // 5. 执行
        env.execute();
    }
}

打包成jar

flink_learn-1.0-SNAPSHOT.jar

1.3 使用-会话模式

1. 启动hdfs+yarn集群(如果是Hadoop高可用模式,提前启动zookeeper服务)
cd /component/hadoop-3.1.3
sbin/start-dfs.sh
sbin/start-yarn.sd
2. 启动Flink会话模式
bin/yarn-session.sh -nm test -d
# -nm(--name):YARN UI显示的任务名
# -d 分离式,如果不指定,会一直占用这个窗口。(试一试,指定和不指定的效果)
# 显示的INFO日志中,最后面会显示web ui地址

3. 提交作业

在web ui页面上点击【Submit New Job】->【Add New】添加Windows系统下已经打好的Jar包。

然后在虚拟机中,启动一个netcat服务

nc -lk 7777
# 启动后,输入一些单词

4. 显示、关闭application
# test替换成启动的时候,给作业取的名字。
yarn application -list | grep "test" 

./bin/yarn-session.sh -id application_123456789_0001 -stop

# 或者

yarn application -kill application_123456789_0001

完。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值