CDH安装的flume1.5.0怎么添加自定义插件

CDH安装的flume1.5.0怎么添加自定义插件,第1张

将你的插件jar包丢到flume的lib下就行了 给你看一个示例: 登录名 * 这里的验证控件RequiredFieldValidator是验证“登录名”的TextBox文本框不能为空。 ControlToValidate指定你要验证的控件,这里是要验证的是txtName。

安装地址:

安装部署:

本地使用的是CDH 6.3.1 版本,已安装Flume,此处略过安装步骤

使用 Flume 监听一个端口,收集该端口数据,并打印到控制台。

安装netcat并检查端口是否被占用

在Flume的安装目录下创建conf/lib目录,并创建flume的配置文件

添加内容如下:

第一种写法:

第二种写法:

参数说明:

--conf/-c:表示配置文件存储在 conf/目录

--name/-n:表示给 agent 起名为 a1

--conf-file/-f:flume 本次启动读取的配置文件是在 job 文件夹下的 flume-telnet.conf

文件。

-Dflume.root.logger=INFO,console :-D 表示 flume 运行时动态修改 flume.root.logger

参数属性值,并将控制台日志打印级别设置为 INFO 级别。日志级别包括:log、info、warn、

error。

通过nc输入的数据,flume监听页面都接受到了,并且输出到了控制台

实时监控 Hive 日志,并上传到 HDFS 中

注:要想读取 Linux 系统中的文件,就得按照 Linux 命令的规则执行命令。由于 Hive 日志在 Linux 系统中所以读取文件的类型选择:exec 即 execute 执行的意思。表示执行Linux 命令来读取文件。

添加如下内容:

注意: 对于所有与时间相关的转义序列,Event Header 中必须存在以 “timestamp”的key(除非 hdfs.useLocalTimeStamp 设置为 true,此方法会使用 TimestampInterceptor 自动添加 timestamp)。

a3.sinks.k3.hdfs.useLocalTimeStamp = true

从日志可以看到文件已经上传到HDFS:

在HDFS上查看:

1小时自动生产一个目录

1分钟自动生产一个文件

tmp结尾的文件为正在写入的文件,时间到了后就会自动重命名

使用 Flume 监听整个目录的文件,并上传至 HDFS

添加如下内容:

flume日志:

从日志输出可以看到原目录的 c.txt直接被修改为 c.txt.COMPLETED,然后c.txt上传到一个另外名字的文件,而且从输出可以看到,多个文件的内容会合并上传到一个hdfs上的文件。

hdfs上看输出:

同样是1分钟一个文件,但是有写入才会创建,如果没有写入是不行的。

  Exec source 适用于监控一个实时追加的文件,不能实现断点续传;Spooldir Source 适合用于同步新文件,但不适合对实时追加日志的文件进行监听并同步;而 Taildir Source 适合用于监听多个实时追加的文件,并且能够实现断点续传。

案例需求:

使用 Flume 监听整个目录的实时追加文件,并上传至 HDFS 。

添加如下内容:

flume控制台输出:

HDFS查看输出文件:

Taildir Source 维护了一个 json 格式的 position File,其会定期的往 position File中更新每个文件读取到的最新的位置,因此能够实现断点续传

注:

Linux 中储存文件元数据的区域就叫做 inode,每个 inode 都有一个号码, *** 作系统用 inode 号码来识别不同的文件,Unix/Linux 系统内部不使用文件名,而使用 inode 号码来识别文件。

改名后inode不会发生变化,这点要注意

最近一直研究Hadoop的搭建、配置、管理层面的内容,越来越发现,如果缺乏应用开发以及源码阅读能力,在Hadoop的研究上很难更深一步(其实其他方面同样如此),在Jerry帮助下搭建了Eclipse+Maven进行Hadoop应用开发的环境,在pom.xml文件中指定依赖名称,就能方便地下载依赖包、查看源代码,Great!

在Maven的使用中,出现如下错误信息Maven Dependency Problem:

Missing artifact jdk.tools:jdk.tools:jar:1.6

这是什么原因呢?如何解决?

我这里的repository采用的是内部搭建的地址,依赖方面配置如下:

<dependency>

    <groupId>org.apache.hive</groupId>

    <artifactId>hive-jdbc</artifactId>

    <version>0.10.0-cdh4.3.0</version>

</dependency>

<dependency>

    <groupId>org.apache.hbase</groupId>

    <artifactId>hbase</artifactId>

    <version>0.94.6-cdh4.3.0</version>

</dependency>

<dependency>

    <groupId>org.apache.flume.flume-ng-sinks</groupId>

    <artifactId>flume-hdfs-sink</artifactId>

    <version>1.3.0-cdh4.3.0</version>

</dependency>

<dependency>

    <groupId>org.apache.zookeeper</groupId>

    <artifactId>zookeeper</artifactId>

    <version>3.4.5-cdh4.3.0</version>

</dependency>

<dependency>

    <groupId>org.apache.hadoop</groupId>

    <artifactId>hadoop-mapreduce-client-app</artifactId>

    <version>2.0.0-cdh4.3.0</version>

</dependency>

接着Maven就报错了,指出pom.xml中存在Maven Dependency Problem:

Missing artifact jdk.tools:jdk.tools:jar:1.6

Google一番后了解到,jdk.tools:jdk.tools是与JDK一起分发的一个JAR文件,可以如下方式加入到Maven项目中:

<dependency>

    <groupId>jdk.tools</groupId>

    <artifactId>jdk.tools</artifactId>

    <version>1.6</version>

    <scope>system</scope>

    <systemPath>${JAVA_HOME}/lib/tools.jar</systemPath>

</dependency>

详见Maven FAQ for adding dependencies to tools.jar

也可以在本地仓库中手动安装tools.jar,如下

mvn install:install-file -DgroupId=jdk.tools 

-DartifactId=jdk.tools -Dpackaging=jar -Dversion=1.6 -Dfile=tools.jar 

-DgeneratePom=true

然后在pom.xml中添加:

<dependency>

    <groupId>jdk.tools</groupId>

    <artifactId>jdk.tools</artifactId>

    <version>1.6</version>

</dependency>

Done!


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/bake/7839399.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-10
下一篇 2023-04-10

发表评论

登录后才能评论

评论列表(0条)

保存