概述
目录
一、环境准备
二、集成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中的一样,呵呵。成功。
最后
以上就是虚心康乃馨为你收集整理的flume1.8远程写hdfs+hadoop2.8集成一、环境准备二、集成hadoop配置的全部内容,希望文章能够帮你解决flume1.8远程写hdfs+hadoop2.8集成一、环境准备二、集成hadoop配置所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复