Flume简介
Flume是Cloudera提供的一个高可用、高可靠、分布式的海量日志采集、聚合和传输的系统,Flume支持在日志系统中定制各类数据发送方,用于收集数据;同时,Flume提供对数据进行简单处理,并写到各种数据接受方(可定制)的能力。
Flume主要由3个重要的组件构成:
1)Source:完成对日志数据的收集,分成transtion 和 event 打入到channel之中。
2)Channel:主要提供一个队列的功能,对source提供中的数据进行简单的缓存。
3)Sink:取出Channel中的数据,进行相应的存储文件系统,数据库,或者提交到远程服务器
Flume逻辑上分三层架构:agent,collector,storage。agent用于采集数据,agent是Flume中产生数据流的地方,同时,agent会将产生的数据流传输到collector。collector的作用是将多个agent的数据汇总后,加载到storage中。storage是存储系统,可以是一个普通file,也可以是HDFS,HIVE,HBase等。
Flume安装
1)下载apache-flume-1.8.0-bin.tar.gz,下载网址是:
2)执行tar -zxvf apache-flume-1.8.0-bin.tar.gz -C /hadoop/ 命令进行解压缩,此例的解压路径是/hadoop。
3)编辑/etc/profile文件,加入以下内容:(以前的JAVA配置在安装hadoop时已经配置)。
4) 生成conf路径下的flume-env.sh 配置文件,执行拷贝命令
5)编辑flume-env.sh文件,在文件的最开始位置增加一行内容,根据你的jdk安装路径设置JAVA_HOME变量
export JAVA_HOME=/usr/java/jdk1.8.0_161
6) 生成conf路径下的/flume-conf.properties 配置文件,执行拷贝命令
7)编辑flume-env.sh文件,在文件末尾加入agent1、source1、channel1、sink1配置
8)启动服务,命令行上执行以下命令:
flume-ng agent -n agent1 -c conf -f /hadoop/apache-flume-1.8.0-bin/conf/flume-conf.properties -Dflume.root.logger=DEBUG,console
9)测试:在/hadoop/apache-flume-1.8.0-bin/logs创建一个文件test.txt,输入文本hello flume,可以看到flume的agent自动上传了我们刚刚创建的文件
Kafka简介
Kafka是一种高吞吐量的分布式发布订阅消息系统,它可以处理生产者和消费者的所有动作流数据。生产者(Produce)向Kafka集群发送消息,在发送消息之前,会对消息进行分类,即主题(Topic),通过对消息指定主题可以将消息分类,消费者可以只关注自己需要的Topic中的消息。消费者(Consumer)通过与kafka集群建立长连接的方式,不断地从集群中拉取消息,然后可以对这些消息进行处理
Kafka安装
1)下载/kafka_2.11-2.4.1.tgz,
2)执行tar -zxvf kafka_2.11-2.4.1.tgz -C /hadoop/ 命令进行解压缩,此例的解压路径是/hadoop.
3)编辑/etc/profile文件,加入以下内容
export ZOOKEEPER_HOME=/hadoop/zookeeper-3.4.13 export KAFKA_HOME=/hadoop/kafka_2.11-2.4.1 export PATH=$PATH:$KAFKA_HOME/bin
4)修改config路径下的server.properties 配置文件
broker.id=0 listeners=PLAINTEXT://172.16.106.69:9092 advertised.listeners=PLAINTEXT://172.16.106.69:9092 zookeeper.connect=172.16.106.69:2181,172.16.106.70:2181,172.16.106.71:2181 #根据自己ip对应修改即可
5)将安装文件拷贝到另两个节点,命令如下:
scp -r kafka_2.11-2.4.1 root@172.16.106.70:/hadoop/ scp -r kafka_2.11-2.4.1 root@172.16.106.71:/hadoop/
6)另外两个节点上的配置
broker.id 分别修改成: 1 和 2 listeners 在ip那里分别修改成子节点对应的 advertised.listeners ip那里分别修改成子节点对应的
(2)另外两个节点上配置kafka环境变量
7)启动服务, 在三个节点都启动kafka上执行以下命令:
./kafka-server-start.sh /hadoop/kafka_2.11-2.4.1/config/server.pro
8)测试。 在主节点上创建主题TestTopic,命令如下:
kafka-topics.sh --zookeeper 172.16.106.69:2181,172.16.106.70:2181,172.16.106.71:2181 --topic TestTopic --replication-factor 1 --partitions 1 --create
在主节点上启动一个生产者,命令如下:
kafka-console-producer.sh --broker-list 172.16.106.69:9092,172.16.106.70:9092,172.16.106.71:9092 --topic TestTopic
在其他两个节点上分别创建消费,命令如下:
kafka-console-consumer.sh --bootstrap-server ,172.16.106.70:9092 --topic TestTopic --from-beginning kafka-console-consumer.sh --bootstrap-server ,172.16.106.71:9092 --topic TestTopic --from-beginning
在主节点生产者命令行那里输入一段话
然后你就会发现在其他两个消费者节点那里也出现了这句话,即消费到了该数据,演示如下
创作不易 觉得有帮助请点赞关注收藏~~~