文章目录
- 一、flume是什么?
- 二、前置配置。
- 1.完成jdk的配置。
- 2.关闭三台虚拟机的防火墙。
- 3配置hosts映射。
- 4.配置ssh免密登陆。
- 5.完成jdk的安装。
- 6、安装 Hadoop。
- 2.创建 /export/hadoop 文件夹。
- 3.将 hadoop 压缩包解压到 /haddop 的目录下
- 4.配置 hadoop 环境变量
- 1、hadoop完全分布式的配置。
- 3.配置Hadoop核心文件 core-site.xml。(在etc的文件下的Hadoop)
- 4.HDFS 配置文件hadoop-env.sh。(在etc的文件下)
- 5. 配置 hdfs-site.xml。(在etc的文件下)
- 6.YARN 配置文件配置 yarn-env.sh。修改 JAVA_HOME 路径:(在etc的文件下)
- 7. 配置 yarn-site.xml。(在etc的文件下)
- 7.MapReduce 配置 mapred-env.sh。(在etc文件下)
- 8.配置 mapred-site.xml.template 。(在etc文件下)
- 9.配置slaves。(在etc文件下)
- 10.在集群上分发配置好的 Hadoop 目录
- 11.启动集群
- 三.启动Flume传输Hadoop日志(namenode或datanode 日志),查看 HDFS 中目录下生成的内容。
- 总结
一、flume是什么?
Flume是一个分布式、可靠且高可用的系统,用于有效地收集、聚合和传输大量日志数据。
Flume最初由Cloudera公司提供,后来成为了Apache旗下的顶级开源项目。它设计用来处理大量的事件数据,这些数据可以是网络流量、社交媒体数据、电子邮件消息等几乎任何类型的数据源。Flume的核心优势在于其能够从多种数据源收集数据,并将这些数据高效地传输到多个目的地。
Flume的架构主要包括三个核心组件:Source、Channel和Sink。具体如下:
Source :是数据进入Flume的起点,负责接收数据。这些数据可以是日志文件、标准输入或者其他形式的输入数据。
Channel :作为缓冲区,临时存储从Source来的数据,直到Sink将这些数据消费掉。Channel保证了即使在Sink无法立即处理数据时,数据也不会丢失。
Sink :负责从Channel中取出数据,并将其传输到目标存储系统,如HDFS、HBase或其他的数据库和数据仓库。
Flume的设计支持复杂的数据流场景,并且具有强大的容错能力,能够保证数据传输的可靠性。它还支持多种配置选项,允许用户根据自己的需求定制数据流的处理和传输方式。
总的来说,Flume作为一个高效的日志收集和数据传输工具,广泛应用于大数据处理和分析的场景中,尤其是在需要实时或近实时处理大量数据的环境中发挥着重要作用。
二、前置配置。
1.完成jdk的配置。
V## 1.三台虚拟机的IP。
node1 | 192.168.24.10 | 255.255.255.0 |
node2 | 192.168.24.20 | 255.255.255.0 |
node3 | 192.168.24.30 | 255.255.255.0 |
2.关闭三台虚拟机的防火墙。
systemctl stop firewalld.service //关闭防火墙
systemctl disable firewalld.service //开机自动关闭防火
3配置hosts映射。
vim /etc/hosts
把下面的内容添加到上面的文本中
192.168.24.10 node1
192.168.24.20 node2
192.168.24.30 node3
4.配置ssh免密登陆。
1.生成密钥对。
[root@node1 ~]# ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:CeXoVNQnWmbOe7UNye40vXoggf1gj4T+8un1zKlGMIQ root@node1
The key's randomart image is:
+---[RSA 2048]----+
| .+.. |
| = E*.. |
| + .B=o . . |
| o ..+oO = |
| . S o.Oo = |
| ..o.== o|
| ..o+...|
| . .o.=o.|
| ++.o+= |
+----[SHA256]-----+
2.将生成的密钥对传至另外的服务器
[root@node1 ~]# ssh-copy-id node1
/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/root/.ssh/id_rsa.pub"
The authenticity of host 'node1 (192.168.24.10)' can't be established.
ECDSA key fingerprint is SHA256:ufToEoIJNhqd8EfasQVqky7Hk5Gu+kWQVM//ix+a/cQ.
ECDSA key fingerprint is MD5:06:13:b0:6f:dc:dd:a1:b1:48:69:b3:c1:b2:b5:c2:f7.
Are you sure you want to continue connecting (yes/no)? yes
/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys
root@node1's password: //密码
Number of key(s) added: 1
Now try logging into the machine, with: "ssh 'node1'"
and check to make sure that only the key(s) you wanted were added.
[root@node1 ~]# ssh-copy-id node2
/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/root/.ssh/id_rsa.pub"
The authenticity of host 'node2 (192.168.24.20)' can't be established.
ECDSA key fingerprint is SHA256:2qW6nePm+mRHnu/T5A48W/5MIFVDYeWrfDkdd6/eibY.
ECDSA key fingerprint is MD5:e3:08:61:31:ae:59:38:2b:23:b0:98:2a:5a:ca:17:31.
Are you sure you want to continue connecting (yes/no)? yes
/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys
root@node2's password: //密码
Number of key(s) added: 1
Now try logging into the machine, with: "ssh 'node2'"
and check to make sure that only the key(s) you wanted were added.
[root@node1 ~]# ssh-copy-id node3
/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/root/.ssh/id_rsa.pub"
The authenticity of host 'node3 (192.168.24.30)' can't be established.
ECDSA key fingerprint is SHA256:KkFcVD96RB3Tqt32upX4sgUZbTyqPL9QB9l/wQpvTsk.
ECDSA key fingerprint is MD5:5c:67:a5:6f:73:9f:4d:a0:85:7f:ee:c3:f4:2f:a3:f5.
Are you sure you want to continue connecting (yes/no)? yes
/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys
root@node3's password: //密码
Number of key(s) added: 1
Now try logging into the machine, with: "ssh 'node3'"
and check to make sure that only the key(s) you wanted were added.
5.完成jdk的安装。
1.用Xftp上传压缩包。
tar -xvf jdk1.8.0_111.tar.gz -C /opt/
2.配置环境变量。
vim /etc/profile
把下面的内容添加到上面的文本中
export JAVA_HOME=/opt/jdk1.8.0_111
export PATH=$JAVA_HOME/bin:$PATH
在让环境变量生效
source /etc/profile
3.检查jdk是否安装成功。
[root@node1 ~]# jps
3860 Jps
[root@node1 ~]# javac
用法: javac <options> <source files>
其中, 可能的选项包括:
-g 生成所有调试信息
-g:none 不生成任何调试信息
-g:{lines,vars,source} 只生成某些调试信息
-nowarn 不生成任何警告
-verbose 输出有关编译器正在执行的操作的消息
-deprecation 输出使用已过时的 API 的源位置
-classpath <路径> 指定查找用户类文件和注释处理程序的位置
-cp <路径> 指定查找用户类文件和注释处理程序的位置
-sourcepath <路径> 指定查找输入源文件的位置
-bootclasspath <路径> 覆盖引导类文件的位置
-extdirs <目录> 覆盖所安装扩展的位置
-endorseddirs <目录> 覆盖签名的标准路径的位置
-proc:{none,only} 控制是否执行注释处理和/或编译。
-processor <class1>[,<class2>,<class3>...] 要运行的注释处理程序的名称; 绕过默认的搜索进程
-processorpath <路径> 指定查找注释处理程序的位置
-parameters 生成元数据以用于方法参数的反射
-d <目录> 指定放置生成的类文件的位置
-s <目录> 指定放置生成的源文件的位置
-h <目录> 指定放置生成的本机标头文件的位置
-implicit:{none,class} 指定是否为隐式引用文件生成类文件
-encoding <编码> 指定源文件使用的字符编码
-source <发行版> 提供与指定发行版的源兼容性
-target <发行版> 生成特定 VM 版本的类文件
-profile <配置文件> 请确保使用的 API 在指定的配置文件中可用
-version 版本信息
-help 输出标准选项的提要
-A关键字[=值] 传递给注释处理程序的选项
-X 输出非标准选项的提要
-J<标记> 直接将 <标记> 传递给运行时系统
-Werror 出现警告时终止编译
@<文件名> 从文件读取选项和文件名
4.把环境变量的文件传给其他的虚拟机。
[root@node1 conf]# scp -r /etc/profile node2:/etc/
profile 100% 1985 44.3KB/s 00:00
[root@node1 conf]# scp -r /etc/profile node3:/etc/
profile 100% 1985 33.8KB/s 00:00
[root@node1 conf]#
使node1,node2的环境变量生效。
[root@node2 ~]# source /etc/profile
[root@node3 ~]# source /etc/profile
6、安装 Hadoop。
2.创建 /export/hadoop 文件夹。
mkdir /export/hadoop //用来存放Hadoop的解压包
3.将 hadoop 压缩包解压到 /haddop 的目录下
tar -zxvf hadoop-2.7.7.tar.gz -C /export/hadoop/ //Hadoop的存放位置
4.配置 hadoop 环境变量
- 进入这个文件。
vim /etc/profile
把下面的内容添加到文件的最下面
#HADOOP
export HADOOP_HOME=/export/hadoop/hadoop-2.7.6
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
2.让环境变量的文件生效
source /etc/profile
- 测试是否安装成功。
hadoop version
1、hadoop完全分布式的配置。
3.配置Hadoop核心文件 core-site.xml。(在etc的文件下的Hadoop)
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://node1:9000</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/hadoop/hadoop-2.7.6/data/tmp</value>
</property>
</configuration>
4.HDFS 配置文件hadoop-env.sh。(在etc的文件下)
export JAVA_HOME=/export/server/jdk1.8.0_111 //修改JAVA_HOME
5. 配置 hdfs-site.xml。(在etc的文件下)
<configuration>
<property>
<name>dfs.replication</name>
<value>3</value>
</property>
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>node1:50090</value>
</property>
</configuration>
6.YARN 配置文件配置 yarn-env.sh。修改 JAVA_HOME 路径:(在etc的文件下)
export JAVA_HOME=/export/server/jdk1.8.0_111
7. 配置 yarn-site.xml。(在etc的文件下)
<configuration>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.resourcemanager.hostname</name>
<value>node3</value>
</property>
</configuration>
7.MapReduce 配置 mapred-env.sh。(在etc文件下)
export JAVA_HOME=/export/server/jdk1.8.0_111
8.配置 mapred-site.xml.template 。(在etc文件下)
mv mapred-site.xml.template mapred-site.xml
把下面的配置内容添加到上面的文本中
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
<property>
<name>mapreduce.jobhistory.address</name>
<value>node1:10020</value>
</property> //历史日志服务器
<property>
<name>mapreduce.jobhistory.webapp.address</name>
<value>node1:19888</value>
</property>
</configuration>
9.配置slaves。(在etc文件下)
node1
node2
node3
10.在集群上分发配置好的 Hadoop 目录
scp -r /export/hadoop/hadoop-2.7.6 node2:/export/hadoop/
scp -r /export/hadoop/hadoop-2.7.6 node3:/export/hadoop/
11.启动集群
1.集群第一次启动的话,需要格式化 NameNode。(node1上初始化)
hadoop namenode -format
2.启动集群 。(在node1上启动)
start-dfs.sh
3.启动集群 。(在node3上启动)
start-yarn.sh
- 查看集群。
三.启动Flume传输Hadoop日志(namenode或datanode 日志),查看 HDFS 中目录下生成的内容。
1.把flume上传到/opt/目录下。
2.把flume解压到指定目录下。
tar -xvf apache-flume-1.9.0-bin.tar.gz -C /opt/
3.配置flume的环境变量。
vim /etc/profile
把下面的内容添加到上面的文本中
export FLUME_HOME=/opt/apache-flume-1.9.0-bin
export PATH=$FLUME_HOME/bin:$PATH
使环境变量生效。
source /etc/profile
4.修改配置文件。
1.修改文件名并配置文件内容。(vim flume-env.sh )
mv flume-env.sh.template flume-env.sh
vim flume-env.sh
把下面的内容添加到上面的文本中
export JAVA_HOME=/opt/jdk1.8.0_111
2.修改文件名并配置文件内容。
mv flume-conf.properties.template flume-conf.properties
vim flume-conf.properties
把下面的内容添加到上面的文本中
a1.sources=r1
a1.sinks=k1
a1.channels=c1
a1.sources.r1.type=exec
a1.sources.r1.command=tail -F /export/hadoop/hadoop-2.7.6/logs/hadoop-root-namenode-node1.log
a1.sinks.k1.type=hdfs
a1.sinks.k1.hdfs.path=hdfs://node1:9000/ysc/%Y%m%d
a1.sinks.k1.hdfs.filePrefix=log-
a1.sinks.k1.hdfs.fileType=DataStream
a1.sinks.k1.hdfs.useLocalTimeStamp=true
a1.channels.c1.type=memory
a1.sources.r1.channels=c1
a1.sinks.k1.channel=c1
- flume必须持有hadoop相关的包才能将数据输出到hdfs, 将如下包上传到flume/lib下
cp /export/hadoop/hadoop-2.7.6/share/hadoop/common/hadoop-common-2.7.6.jar /opt/apache-flume-1.9.0-bin/lib/
cp /export/hadoop/hadoop-2.7.6/share/hadoop/common/lib/hadoop-auth-2.7.6.jar /opt/apache-flume-1.9.0-bin/lib/
cp /export/hadoop/hadoop-2.7.6/share/hadoop/common/lib/commons-configuration-1.6.jar /opt/apache-flume-1.9.0-bin/lib/
4.将hadoop的hdfs-site.xml和core-site.xml 放到flume/conf下
cp /export/hadoop/hadoop-2.7.6/etc/hadoop/core-site.xml /opt/apache-flume-1.9.0-bin/conf/
cp /export/hadoop/hadoop-2.7.6/etc/hadoop/hdfs-site.xml /opt/apache-flume-1.9.0-bin/conf/
5.启动flume。
flume-ng agent --conf conf/ --conf-file /opt/apache-flume-1.9.0-bin/conf/flume-conf.properties --name a1 -Dflume.root.logger=DEBUG,console
查看hdfs上的内容。
总结
以上就是今天要讲的内容,本文仅仅简单介绍了flume的使用。