Hive入门--4.flume-数据收集工具

Flume简介


Flume安装

1. 解压 flume安装包到 /itcast/ 目录下


tar -zxvf /*flume安装包*/ /itcast/

2. 修改 flume配置文件:

2.1 flume-env.sh

修改文件名称:

mv flume-env.sh.template flume-env.sh

添加java_home,保证flume所使用的jdk和hdfs是一样的(可以使用 echo JAVA_HOME 查看当前机器所使用的javaHome所在路径)

2.2 编写agent配置文件a4.conf

定义agent名, source、channel、sink的名称


a4.sources = r1
a4.channels = c1
a4.sinks = k1

具体定义source


a4.sources.r1.type = spooldir #具体实现类是通过反射加载的
a4.sources.r1.spoolDir = /root/logs #监听这个目录

具体定义channel


a4.channels.c1.type = memory #
a4.channels.c1.capacity = 10000 #多少条数据进行一次发送
a4.channels.c1.transactionCapacity = 100 #事物的容量

定义拦截器,为消息添加时间戳


a4.sources.r1.interceptors = i1
a4.sources.r1.interceptors.i1.type= org.apache.flume.interceptor.TimestampInterceptor$Builder

具体定义sink


a4.sinks.k1.type = hdfs
a4.sinks.k1.hdfs.path = hdfs://ns1/flume/%Y%m%d #根据时间动态生成
a4.sinks.k1.hdfs.filePrefix = events- #产生日志的前缀
a4.sinks.k1.hdfs.fileType = DataStream #纯文本方式接收

不按照条数生成文件


a4.sinks.k1.hdfs.rollCount = 0 #多少条flush成1个文件

HDFS上的文件达到128M时生成一个文件


a4.sinks.k1.hdfs.rollSize = 134217728 #文件达到多大时flush成一个文件

HDFS上的文件达到60秒生成一个文件


a4.sinks.k1.hdfs.rollInterval = 60 #flush成一个文件的时间间隔

组装source、channel、sink


a4.sources.r1.channels = c1
a4.sinks.k1.channel = c1

3. 启动flume


先切换到 /itcast/apache-flume-1.5.0-bin/ 目录下:

输入命令:

bin/flume-ng agent -n a4 -c conf -f conf a4.conf -Dflume.root.logger=INFO,console

命令解释:


启动后有可能遇到如下的错误,这里一一列举出来,出错的童鞋对号入座:


错误1:


解决:说明缺少jar包,拷贝 /itcast/hadoop-2.6.0/share/hadoop/common/hadoop-common-2.6.0.jar/itcast/apache-flume-1.5.0-bin/lib/ 文件夹下

使用scp命令:


错误2:


解决:说明缺少jar包,拷贝/itcast/hadoop-2.6.0/share/hadoop/common/lib/commons-configuration-.jar/itcast/apache-flume-1.5.0-bin/lib/文件夹下


错误3:

解决:将/itcast/hadoop-2.6.0/share/hadoop/common/lib/ hadoop-auth-2.6.0.jar拷贝到flume/lib目录下


错误4:

解决:在 /root目录下创建logs目录 :mkdir /root/logs


错误5:


解决:告知flume ns1的配置信息

1)拷贝core-site.xml和 hdfs-site.xml到flume的conf目录下

scp /itcast/hadoop-2.6.0/etc/hadoop/{core-site.xml, hdfs-site.xml}  

192.168.1.204:/itcast/apache-flume-1.5.0-bin/conf

2)修改/etc/hosts 文件,让该主机知道itcast01 和itcast02的IP地址

添加itcast01 和itcast02 ip和主机名的映射

3)拷贝hadoop-hdfs-2.6.0.jar


如果出现如下的内容并且显示在不断滚动,说明没问题了,flume启动成功!
启动成功之后的样子应该是这样的:
http://a1.qpic.cn/psb?/V10Zmdsw4YSoqq/fMmXfJ7K1qrritvBcVWq5Ol2M4fi3PAdfvWstPtcqSk!/b/dHQBAAAAAAAA&bo=4QIuAQAAAAADAOk!&rf=viewer_4

3.1 写入测试

现在如果向 /root/logs 目录下丢进文件,flume则会将这个文件下的内容写入hdfs中

先执行命令:

    bin/flume-ng agent -n a4 -c conf -f conf/a4.conf 
    -Dflume.root.logger=INFO,console

启动flume之后,将日志文件 access_2013_05_30.log 放到 logs 文件夹下:

通过网页查看hdfs,发现多了一个目录 /flume ,在这个目录下的文件有 20160618 ,说明文件是以时间命名的

/flume/20160618 这个文件夹下


问题:为什么生成的是3个文件,我写入的不是1个吗?而且这3个文件大小加起来刚好等于日志文件access_2013_05_30.log的大小


原因:这里sink设置了每60秒滚动写入一次或者当缓冲区文件大小达到134217728字节(128M)时进行滚动写入。

通过计算时间,写入总共花费几分钟,那势必第二个滚动选项是无法满足的,所以文件每60s的时候刚刚读入了一部分,接着就被写入hdfs中了。

4.flume的另外一种配置


source—exec
channel—memory
sink—logger


启动方式和之前的一样,只是读入的配置文件不同:

bin/flume-ng agent -n a2 -f /home/hadoop/a2.conf -c conf -Dflume.root.logger=INFO,console

a2.conf配置文件:

定义agent名, source、channel、sink的名称


a2.sources = r1
a2.channels = c1
a2.sinks = k1

具体定义source


a2.sources.r1.type = exec
a2.sources.r1.command = tail -F /home/hadoop/a.log

具体定义channel


a2.channels.c1.type = memory
a2.channels.c1.capacity = 1000
a2.channels.c1.transactionCapacity = 100

具体定义sink


a2.sinks.k1.type = logger

组装source、channel、sink


a2.sources.r1.channels = c1
a2.sinks.k1.channel = c1

监控当有数据写入这个log文件中时,flume将这些数据采集并打印在控制台上
a) 就像tail –F file 命令一样

    # echo 111111 >> log
    # echo 222222 >> log
    # echo 333333 >> log

以阻塞形式打印,向log文件中追加记录

b) 以a2.conf配置文件运行flume
将a2.conf文件拷贝到flume/conf 目录下
在/root目录下创建文件log

运行命令:

    bin/flume-ng agent -n a2 -f /itcast/apache-flume-1.5.0-bin/conf/a2.conf 
    -c conf -Dflume.root.logger=INFO,console

本页内容版权归属为原作者,如有侵犯您的权益,请通知我们删除。
注:本文为自用,随时更新。 一.系统环境 Windows7、Ecplise 4.4.0,Hadoop2.7.2 Hadoop安装教程请看: Hadoop2.7.2安装教程 此处需要注意的是:你的hadoop运行在远程的虚拟机上,但是你的windows上也需要有hadoop的运行环境,这样eclipse才能进行远程调试,所按照上面教程安装完虚拟机上的hadoop,还需要下载同样版本的Hadoop加压到windows上即可,还需要配置相应的环境变量,拷贝winutil.exe.hadoop.dll等文件到ha
2、spark wordCount程序深度剖析 标签: spark 一、Eclipse(scala IDE)开发local和cluster (一). 配置开发环境 要在本地安装好java和scala。  由于spark1.6需要scala 2.10.X版本的。推荐 2.10.4,java版本最好是1.8。所以提前我们要需要安装好java和scala并在环境变量中配置好。 下载scala IDE for eclipse安装 连接: http://scala-ide.org/download/sdk.html
1、spark 部署 标签: spark 0 apache spark项目架构 spark SQL -- spark streaming -- MLlib -- GraphX 0.1 hadoop快速搭建,主要利用hdfs存储框架 下载hadoop-2.6.0,解压,到etc/hadoop/目录下 0.2 快速配置文件 cat core-site.xml configuration property name fs.defaultFS /name value hdfs://worker1:9000 /va

Devstack单节点环境实战配置 - 2016-07-23 14:07:05

本实验是在VMware12下建立虚机的一个测试环境。 1 前期准备工作 真机环境win10 Linux版本 centos-everything-7.0 VMware版本 VMwareworkstations12 虚机配置如下: 8G内存 2核cpu(开启虚拟化) 网络配置为桥接模式 /boot 500M(一定要分大点不然之后会遇到问题) swap分区4G 其余的空间全部分给/分区 配置yum源,你可以保持装机自带的centos自带官方yum源,或者使用国内的给的镜像,本次试验中用的国外镜像并且使用fast
Openstack自动化部署工具, 主要用于生产环境. 一. 环境准备 这里用的是Openstack 9.0版本. Fuel Documentation 下载 Fuel for OpenStack镜像文件 , 用于安装Feul Master. 安装 Xshell , 用于远程连接. 安装 xftp , 用于从Windows主机向虚拟机传输文件. 二. 安装fuel_master节点 1. VirtualBox网络配置 管理-全局设定-网络-仅主机(Host-Only)网络 新建三张新的网卡: Host-O
本篇主要阐述通过DeveStack 去部署Openstack(mitaka),对大多数来说安装部署Openstack 来说是个痛苦的过程,尤其是 OpenStack和它依赖的一些组件在快速发展中,经常出现这个版本组件对不上那个版本 dashboard等情况。如果只是看看或者初期玩玩 OpenStack的话,使用DevStack也是个不错的办法。DevStack采用了自动化源码部署的方式,适用于开发环境的部署和Openstack开发者,单节点,小环境;这里采用的操作系统为Ubuntu14.04。 一、操作系
操作过程: 第一步删除phoenix中系统的表格信息,主要为SYSTEM.CATALOG,第二步删除Hbase中的表格信息。 操作步骤: (1)查询phoenix系统表 SYSTEM.CATALOG 内容是所有表格的信息,系统表和自建表 SYSTEM.FUNCTION 内容是所有函数信息,系统函数和自定义函数 SYSTEM.SEQUENCE 我也不知道 SYSTEM.STATS 内容是所有表格的最后状态信息 (2)查询SYSTEM.CATALOG表结构 (3)我要删除的表格 DELETE from SYS
1.查看mysql中metastore数据存储结构 Metastore中只保存了表的描述信息( 名字,列,类型,对应目录 ) 使用SQLYog连接itcast05 的mysql数据库 查看hive数据库的表结构: 2.建表(默认是内部表(先建表,后有数据)) (建表时必须指定列的分隔符) create table trade_detail(id bigint, account string, income double, expenses double, time string) row format d
1、查看系统环境 cat /etc/redhat-releaseuname -runame -m 关闭所有服务器的防火墙 /etc/init.d/iptables stopchkconfig iptables offchkconfig --list iptables 2、Spark集群机器规划 一共准备了四台机器 Host IP Hadoop Spark Node1 192.168.2.128 Master Master Node2 192.168.2.130 Slave Slave Node3 192.
本篇主要阐述通过DeveStack 去部署Openstack(mitaka),对大多数来说安装部署Openstack 来说是个痛苦的过程,尤其是 OpenStack和它依赖的一些组件在快速发展中,经常出现这个版本组件对不上那个版本 dashboard等情况。如果只是看看或者初期玩玩 OpenStack的话,使用DevStack也是个不错的办法。DevStack采用了自动化源码部署的方式,适用于开发环境的部署和Openstack开发者,单节点,小环境;这里采用的操作系统为Ubuntu14.04。 一、操作系