完成其中的实验要求,给出详细步骤包括软件的安装和配置环境,要非常详细
时间: 2024-12-22 22:21:30 浏览: 10
### 实验四:熟悉Flume的基本使用方法
#### 一. 实验目的
1. 了解并熟悉Flume的功能。
2. 掌握Flume的使用方法,学会按要求编写相关配置文件。
#### 二. 实验平台
- **操作系统**: Windows 10
- **Flume版本**: 1.9.0
- **Kafka版本**: 2.12
- **MySQL版本**: 8.0.23
- **Hadoop版本**: 3.1.3
#### 三. 实验要求
##### 1. MySQL数据输出
**目标**: 使用Flume实时捕捉MySQL数据库中的记录更新,并将更新记录显示到控制台。
**步骤**:
1. **安装MySQL**:
- 下载并安装MySQL 8.0.23: [下载链接](https://dev.mysql.com/downloads/mysql/)
- 安装过程中选择默认设置即可。
- 安装完成后,启动MySQL服务。
2. **创建数据库和表**:
- 打开MySQL命令行工具,连接到MySQL服务器。
```sql
mysql -u root -p
```
- 输入密码后,执行以下SQL语句创建数据库和表。
```sql
CREATE DATABASE company;
USE company;
CREATE TABLE staff (
id INT NOT NULL,
name VARCHAR(40),
age INT,
PRIMARY KEY (id)
);
```
3. **插入测试数据**:
```sql
INSERT INTO staff (id, name, age) VALUES (1, 'Xiaoming', 23);
INSERT INTO staff (id, name, age) VALUES (2, 'Zhangsan', 24);
INSERT INTO staff (id, name, age) VALUES (3, 'Lisi', 24);
INSERT INTO staff (id, name, age) VALUES (4, 'Wangwu', 21);
INSERT INTO staff (id, name, age) VALUES (5, 'Weiliu', 21);
```
4. **安装Flume**:
- 下载Flume 1.9.0: [下载链接](https://archive.apache.org/dist/flume/1.9.0/apache-flume-1.9.0-bin.tar.gz)
- 解压下载的文件到指定目录,例如 `C:\flume`。
```sh
tar -xzvf apache-flume-1.9.0-bin.tar.gz -C C:\flume
```
5. **配置Flume**:
- 创建一个Flume配置文件 `mysql_to_console.conf`,内容如下:
```properties
a1.sources = r1
a1.sinks = k1
a1.channels = c1
# 配置source为JDBC source
a1.sources.r1.type = jdbc
a1.sources.r1.driver = com.mysql.cj.jdbc.Driver
a1.sources.r1.connectUri = jdbc:mysql://localhost:3306/company
a1.sources.r1.username = root
a1.sources.r1.password = your_password
a1.sources.r1.query = SELECT * FROM staff WHERE \$\{lastModifiedTime} < NOW()
a1.sources.r1.incrementingMode = false
a1.sources.r1.useConnectionPool = true
a1.sources.r1.pollDelayMillis = 5000
# 配置sink为logger sink
a1.sinks.k1.type = logger
# 配置channel为memory channel
a1.channels.c1.type = memory
a1.channels.c1.capacity = 1000
a1.channels.c1.transactionCapacity = 100
# 绑定source、sink和channel
a1.sources.r1.channels = c1
a1.sinks.k1.channel = c1
```
6. **运行Flume**:
- 打开命令行,导航到Flume的bin目录。
```sh
cd C:\flume\apache-flume-1.9.0-bin\bin
```
- 运行Flume agent,指定配置文件。
```sh
flume-ng agent --conf ..\conf --name a1 --conf-file ..\conf\mysql_to_console.conf
```
7. **验证结果**:
- 在MySQL中插入新的记录,观察Flume控制台是否显示新的记录。
##### 2. 采集日志文件到HDFS
**目标**: 使用Flume将本地目录的日志文件采集到HDFS。
**步骤**:
1. **安装Hadoop**:
- 下载并安装Hadoop 3.1.3: [下载链接](https://archive.apache.org/dist/hadoop/core/hadoop-3.1.3/hadoop-3.1.3.tar.gz)
- 解压下载的文件到指定目录,例如 `C:\hadoop`。
```sh
tar -xzvf hadoop-3.1.3.tar.gz -C C:\hadoop
```
2. **配置Hadoop**:
- 编辑 `C:\hadoop\etc\hadoop\core-site.xml` 文件,添加HDFS配置。
```xml
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://localhost:9000</value>
</property>
</configuration>
```
- 编辑 `C:\hadoop\etc\hadoop\hdfs-site.xml` 文件,添加HDFS存储路径配置。
```xml
<configuration>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>C:\hadoop\data\namenode</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>C:\hadoop\data\datanode</value>
</property>
</configuration>
```
3. **格式化HDFS**:
```sh
C:\hadoop\bin\hdfs namenode -format
```
4. **启动Hadoop**:
- 启动NameNode和DataNode。
```sh
C:\hadoop\sbin\start-dfs.sh
```
5. **配置Flume**:
- 创建一个Flume配置文件 `log_to_hdfs.conf`,内容如下:
```properties
a1.sources = r1
a1.sinks = k1
a1.channels = c1
# 配置source为spooling directory source
a1.sources.r1.type = spooldir
a1.sources.r1.spoolDir = C:\logs\input
a1.sources.r1.fileHeader = false
# 配置sink为HDFS sink
a1.sinks.k1.type = hdfs
a1.sinks.k1.hdfs.path = hdfs://localhost:9000/user/flume/logs
a1.sinks.k1.hdfs.filePrefix = log-
a1.sinks.k1.hdfs.fileType = DataStream
a1.sinks.k1.hdfs.writeFormat = Text
a1.sinks.k1.hdfs.batchSize = 1000
a1.sinks.k1.hdfs.rollInterval = 600
a1.sinks.k1.hdfs.rollSize = 0
a1.sinks.k1.hdfs.rollCount = 0
# 配置channel为file channel
a1.channels.c1.type = file
a1.channels.c1.checkpointDir = C:\flume\checkpoint
a1.channels.c1.dataDirs = C:\flume\data
# 绑定source、sink和channel
a1.sources.r1.channels = c1
a1.sinks.k1.channel = c1
```
6. **运行Flume**:
- 打开命令行,导航到Flume的bin目录。
```sh
cd C:\flume\apache-flume-1.9.0-bin\bin
```
- 运行Flume agent,指定配置文件。
```sh
flume-ng agent --conf ..\conf --name a1 --conf-file ..\conf\log_to_hdfs.conf
```
7. **验证结果**:
- 将日志文件放入 `C:\logs\input` 目录,观察HDFS中是否有对应的日志文件。
#### 四. 实验小结
通过本次实验,我们成功地使用Flume实现了从MySQL数据库实时捕捉记录更新并显示到控制台,以及从本地目录采集日志文件到HDFS的功能。这不仅加深了对Flume的理解,还掌握了其基本配置和使用方法。
阅读全文