设为首页 加入收藏

TOP

flume1.8远程写hdfs+hadoop2.8集成
2019-03-05 00:19:39 】 浏览:118
Tags:flume1.8 远程 hdfs hadoop2.8 集成

目录

一、环境准备

二、集成hadoop配置

1、复制hadoop相关配置文件到flume服务器上

2、新建/修改 flume的配置文件:

3、复制相关jar包到flume lib目录(我的是/opt/flume/apache-flume-1.8.0-bin/lib)

4、启动flume:

5、测试flume采集到HDFS保存


近几天抽时间研究了一下flume的安装配置,flume的应用场景自行百度一下吧,这里不废话了。由于己经利用虚拟机成功安装了hadoop集群,这里主要是讲一下flume的安装。我是另外虚拟化了一台机器单独用于作flume agent服务器,这台机器上没有安装hadoop哦,所以是远程写hdfs,呵呵。如果是在己安装hadoop的机器上,应该会更简单吧。

一、环境准备

1、官网下载flume1.8,这个就自己去下载吧,下载好以后,通过ftp放到系统里面。进入centos系统后,通过 tar -zxvf -C命令解压到指定的目录 ,我的是/opt/flume

2、安装JDK,自行百度,rpm安装、下载压缩文件再解决的都行,记得设置JAVA_HOME环境变量。我是rpm安装的,安装成功后,java -version是可以查看信息的,但是事实是启动flume的时候还是会有警告JAVA_HOME is not set ,所以还是在/etc/profile中配置一下环境变量吧。

3、(不要在flume的服务器上作为节点)hadoop伪分布式集群安装(比较多,参考我之前的文章吧,这里不作重点讲解),我的namenode节点服务器Ip是:10.10.10.129,主机名是:hserver1,这里先写出来,后面会用到,避免刚接触的朋友直接复制出现问题,这里作出说明,需要根据自己的服务器信息修改;

4、在flume服务器上把/etc/host修改一下,将hadoop主节点的主机名配置一下:hserver1 10.10.10.129 (建议添加,没测试过不加是否可以访问远程服务器。)

二、集成hadoop配置

1、复制hadoop相关配置文件到flume服务器上

在hadoop namenode节点服务器上,将core-site.xml,hdfs-site.xml(这两个是hadoop集群的配置文件),将文件通过ftp传到flume服务器上后,需要放到 /opt/flume/apache-flume-1.8.0-bin/conf这个目录下(也就是flume的配置目录)

2、新建/修改 flume的配置文件:

我这里是直接新建的一个了,在conf目录下执行 touch hdfs.properties,创建配置文件。我的配置文件内容如下:

# Name the components on this agent

agent1.sources = spooldirSource

agent1.channels = fileChannel

agent1.sinks = hdfsSink



# Describe/configure the source

agent1.sources.spooldirSource.type=spooldir(source type有好几种,自行百度,我这里是用的这个)

agent1.sources.spooldirSource.spoolDir=/usr/data/spooldir(自定义监控目录,需要先创建好,不然启动flume的时候会报错)



# Describe the sink

agent1.sinks.hdfsSink.type=hdfs

agent1.sinks.hdfsSink.hdfs.path=hdfs://hserver1:9000/flume/%y-%m-%d/%H%M/%S (自定义hdfs上保存路径,hserver1为namenode的路径,是hadoop集群hdfs的访问路径,根据自己的hadoop集成安装情况修改,如果没有修改/etc/host文件,添加主机名映射,建议直接用ip地址,不要用hserver1这种主机名)

agent1.sinks.hdfsSink.hdfs.round = true

agent1.sinks.hdfsSink.hdfs.roundValue = 10

agent1.sinks.hdfsSink.hdfs.roundUnit = minute

agent1.sinks.hdfsSink.hdfs.useLocalTimeStamp = true

agent1.sinks.hdfsSink.hdfs.fileType=DataStream



# Describe the channel

agent1.channels.fileChannel.type = file

agent1.channels.fileChannel.dataDirs=/hadoop/flume/datadir



# Bind the source and sink to the channel

agent1.sources.spooldirSource.channels=fileChannel

agent1.sinks.hdfsSink.channel=fileChannel

3、复制相关jar包到flume lib目录(我的是/opt/flume/apache-flume-1.8.0-bin/lib)

由于flume服务器没有安装hadoop,但是要依赖hadoop的相关类来将文件保存到hdfs的,所以要复制依赖的jar包到 flume。中间经过N多的尝试,给大家理出来。从hadoop安装目录的 /share/common 、 /share/hdfs目录下找,我的是hadoop2.8,其他版本的可能略有出入,大家启动flume的时候,根据不同的异常对照一下)

1、hadoop-common-2.8.0.jar、hadoop-hdfs-2.8.0.jar、(没有的话会报NoClass Found :XXXXX.SequenceFile异常)

2、hadoop-auth-2.8.0.jar (ClassNotFoundException: org.apache.hadoop.util.PlatformName)

3、commons-configuration-1.6.jar (ClassNotFoundException::XXXX.Configuration异常)

3、htrace-core4-4.0.1-incubating.jar (ClassNotFoundException::XXXX.Trace$Build异常)

4、hadoop-hdfs-client-2.8.0.jar (java.io.IOException: No FileSystem for scheme: hdfs,被这个异常差点玩死,百度一下,有位兄弟说要降版本才能解决,还有说要改jar包里面的core-default.xml文件,无意中看到有这个client包,仔细想想flume应该是作为客户端向远程的hdfs服务器写入文件,所以试着把这个jar包添上,果然成功解决)

4、启动flume:

这里有个地方要注意: 如果你是在flume安装目录下的bin目录内(例如我的:/opt/flume/apache-flume-1.8.0-bin/bin)启动flume,启动以后,可能控制台是没有显示实时的log信息的,这个是正常的情况,不要以为没有成功启动。建议大家在上一级目录(例如我的:/opt/flume/apache-flume-1.8.0-bin)下使用以下命令启动:

bin/flume-ng agent --conf /opt/flume/apache-flume-1.8.0-bin/conf(这个改成自己的目录位置)--conf-file conf/hdfs.properties(改成自己flume配置文件的名字)--name agent1 -Dflume.root.logger=DEBUG,console

5、测试flume采集到HDFS保存

5.1 再打开一个虚拟终端,连接到flume服务器,利用vim,在监控目录( /usr/data/spooldir)中新建一个 test.log,内容随意;

5.2 在原终端上的实时Log可以看到test.log文件被flume读取到,然后保存到了hdfs,生成了tmp文件,同时test.log被添加了后缀 .complete;

5.3 访问hadoop集群web管理界面 ,查看hadoop文件系统,根据之前配置的hdfs保存目录 ,查看是否生成了文件。

利用 hdfs dfs -cat /flume/18-09-18/0410/00/XXX查看文件内容,与test.log中的一样,呵呵。成功。



】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇Hadoop HDFS FileSystem详解 下一篇Java通过认证kerberos连接HDFS

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目