概述

大数据,数据收集是非常重要的一块知识体系。数据收集,一般会对不同的数据,拥有不同的手机方式,那么常见的数据来源有什么呢?

  1. 非结构化数据。一般有用户访问日志、图片、视屏、网页等信息。
  2. 半结构化数据。一般类似xml、json之类的数据。
  3. 结构化数据。一般是传统关系型数据库(MySQL、Oracle)等存储的数据。

针对结构化数据,导入到大数据系统Hadoop中,有两种导入方式,一种是全量导入,一种是增量导入。

对于不同类型的数据,大数据提供了不同的收集方法。
非结构化的数据收集:Flume
结构化的数据收集:Sqoop、Canal、Databus

其中,Sqoop是一种全量导入数据的方式。
Canal是一种增量导入数据的方式。

Flume

它是一种由Cloudera公司开源的数据收集系统。主要针对非结构化的数据收集。

HDFS是大数据技术体系中的数据存储方案。而Flume是客户端同HDFS之间的连接桥梁。

Flume是由一个个的Agent组成,这些Agent的两端对接这数据的生产方Client以及数据的存储方HDFS。

每一个Agent由三部分构成:Source、Channel、Sink。

1、Event

它是Flume进行数据传输的基本单元,Flume以事件的方式进行数据传递,之所以使用事件的方式,是因为数据的生产方和数据的消费方,吞吐能力是不一样的,事件的方式,可以把接收的数据暂存到Channel中,让数据的消费方根据自己的能力来慢慢消费数据。

Event是由两部分组成:header以及数据体构成。header是一个key-value字符串对的无序集合。

2、Client

将原始数据进行包装,组成Flume的Event的形式进行数据传输,它存在的意义就是,将Flume的系统同数据源系统剥离出来。

3、Agent

它是整个Flume中的核心部分,Source进行数据接收,并且把Client产生的数据持续的添加到Channel中,而Channel本质上是一个队列,在队列的尾部添加数据,在队列的头部消费数据,Sink就是数据的接收方,它对Event类型的数据进行解析,然后注入HDFS系统中。

Flume在大数据的体系中,处于一个基础工具的位置,一般要求是会写基本的Souce配置以及Sink的配置等等。

3.1、Source

Source,一般用于监听一个文件夹下新产生的文件,并且读取内容,Source的数据一般发送给至少一个Channel。

Source:Spooling Directory Source
使用的时候,对于已经产生的文件不会进行任意更改,一般在使用的时候,会把文件写入一个临时目录下,之后move到监听目录之下。

配置:

a1.channels = ch-1
a1.sources = src-1a1.sources.src-1.type = spooldir
a1.sources.src-1.channels = ch-1
a1.sources.src-1.spoolDir = /var/log/apache/flumeSpool
a1.sources.src-1.fileHeader = true

Source: TailDir
这是一种,一旦写入数据,就会被监听读取的方式
配置也是脱离不了type、channels等,同时新增了positionFile,用于存储偏移量的文件。

也有其他的类型:Exec、avro等

3.2、channel

关于Memory的类型的channel的使用

a1.channels = c1
a1.channels.c1.type = memory
a1.channels.c1.capacity = 10000
......
3.3、Sink

Sink的类型很多,有HDFS、HBase、Hive等等

##Sqoop全量导入
它是链接数据库和Hadoop的桥梁
使用MapReduce加快数据传输速度
批处理的方式进行数据传输

aqoop import \--connect jdbc:mysql://mysql.example.com/sqoop \--username sqoop \--password sqoop \--table cities

其中 --connect的意思就是:指定JDBC URL

–username、password:表示mysql数据库的用户名

–table:要读取的数据库表

sqoop export \--connect jdbc:mysql://mysql.example.com/sqoop \--username sqoop \--password sqoop \--table cities \--export-dir cities

其中–export-dir代表数据在HDFS上的存放目录

Flume的Java Api的介绍

我们可能常用的类有这么几个。

  1. RpcClinet
  2. RpcClintFactory
  3. Event
  4. EventDeliveryException
  5. EventBuilder

在项目中,我们可能要在代码中体现这么几个步骤:

第一步,实例化一个Flume的client。

clinet = RpcClientFactory.getDefaultInstance(hostname, port);

第二步,组建我们需要发送的数据的Event。

Event event = EventBuilder.withBody(msg, Charset.forName("UTF-8"));

第三步,把Event当作一个数据追加到clint上完成发送。

client.append(event);

第四步,数据发送完成,关闭client

clinet.close();

Flume的配置文件介绍

在flume的安装目录下,启动一个flume的命令执行语句:

bin / flume-ng agent --conf conf --conf-file logagent.properties -- name LogAgent -Dflume.root.logger=DEBUG,console

启动命令的说明:
–name是指定这个flume的名称
–conf-file是指指定这个flume的配置文件

比如这个Flume的代理服务叫LogAgent

LogAgent.sources = mysource
LogAgent.channels = mychannel
LogAgent.sinks = mysink
LogAgent.sources.mysource.type = spooldir
LogAgent.sources.mysource.channel = mychannel
LogAgent.sources.mysource.spoolDir = /tmp/logs
LogAgent.sinks.mysink.channel = mychannel
LogAgent.sinks.mysink.type = hdfs
// 下面是设置hdfs相关的东西
LogAgent.sinks.mysink.hdfs.path = hdfs://hadoop:9000/data/newlogs/%Y/%m/%d/%H/
LogAgent.sinks.hdfs.batchSize = 1000
LogAgent.sinks.hdfs.rollSize = 0
LogAgent.sinks.hdfs.rollCount = 10000
LogAgent.sinks.hdfs.useLocalTimeStamp = true
LogAgent.channels.mychannel.type = memory
LogAgent.channels.mychannel.capacity = 10000
LogAgent.channels.mychannel.transactionCapacity = 100

Canal、DataBus增量导入(Change Data Captrue)

大数据—数据收集系统介绍(Flume,Sqoop)相关推荐

  1. Cris 玩转大数据系列之日志收集神器 Flume

    Cris 玩转大数据系列之日志收集神器 Flume Author:Cris 文章目录 Cris 玩转大数据系列之日志收集神器 Flume Author:Cris 1. Flume 概述 1.1 什么是 ...

  2. 大数据求索(6): 使用Flume进行数据采集单机监控端口、监控文件、跨节点等多种方式

    大数据求索(6): 使用Flume进行数据采集 大数据最好的学习资料是官方文档. Flume官方文档地址http://flume.apache.org/ Flume简单介绍 Flume是一种分布式的. ...

  3. 大数据数据量估算_如何估算数据科学项目的数据收集成本

    大数据数据量估算 (Notes: All opinions are my own) (注:所有观点均为我自己) 介绍 (Introduction) Data collection is the ini ...

  4. 大数据数据收集数据困难_大数据就是好数据吗?研究人员在处理大数据集时遭遇的 5 大挑战...

    大数据给每个科研领域的研究方式带来了前所未有的变化.每个领域中,研究人员可使用的工具皆有显著性,大数据现在逐渐成为横跨各学科领域的共同工具.大数据集的可取得性以及可存储并共享大量的数据的能力为研究人员 ...

  5. CDH大数据平台搭建之FLUME安装

    CDH大数据平台搭建之FLUME安装 一.下载 二.安装及配置 1.解压 2.重命名文件夹 3.修改配置文件 一.下载 1.官网下载 2.网盘下载 提取码:cdh5 备注:官网下载的是apache版本 ...

  6. 大数据的两面性_大数据,多大的数据才是大数据?

    大数据的本质是统计学,是通过统计分析得出最终结果.比如我们经常会使用到的图像识别,为什么手机能识别出来那些可能你也不知道的东西,因为那是建立在海量数据资料的基础之上的.就连如今人人都会用到的手机美颜也 ...

  7. 《数据科学与大数据分析——数据的发现 分析 可视化与表示》一2.3 第2阶段:数据准备...

    本节书摘来自异步社区<数据科学与大数据分析--数据的发现 分析 可视化与表示>一书中的第2章,第2.3节,作者[美]EMC Education Services(EMC教育服务团队),更多 ...

  8. 《统计学》学习笔记之数据的收集

    鄙人学习笔记 文章目录 数据的收集 数据的来源 调查数据 数据的误差 数据的收集 数据的来源 数据的间接来源 如果与研究内容有关的原信息已经存在,我们只是对这些原信息重新加工.整理,使之成为我们进行统 ...

  9. 大数据技术 学习之旅_数据-数据科学之旅的起点

    大数据技术 学习之旅 什么是数据科学? (What is Data Science?) The interesting thing about Data Science is that it is a ...

  10. 大数据数据科学家常用面试题_进行数据科学工作面试

    大数据数据科学家常用面试题 During my time as a Data Scientist, I had the chance to interview my fair share of can ...

最新文章

  1. MobileViT: 一种更小,更快,高精度的轻量级Transformer端侧网络架构(附代码实现)...
  2. 城市智能化发展中,AI公司应该做什么?
  3. 一年的第几周怎么算_部编版一年级下册第7课《怎么都快乐》图文讲解+知识点梳理...
  4. Java Stringbuilder简单介绍
  5. monthdiff oracle_timestampdiff
  6. 踩坑之旅:springboot+vue+webpack项目实战(一)
  7. java反射的field.get(null)
  8. 循环小数是分数集合吗_人教版小学数学三年级上册 分数的简单计算 教案、课件,公开课视频...
  9. 【C Sharp笔记】2010年9月25日
  10. asp.net学习之扩展GridView
  11. 金九银十加薪季,测试题预热一波。
  12. html 日志记录组件,使用HTML自定义格式的Log4j.properties进行日志记录
  13. 帆软报表重要Activator之DesignerInitActivator之五CenterRegionContainerPane设计器的表格区域
  14. .net java xml_java.net.MalformedURLException – 在通过StAX解析XML文件时
  15. 咪咕:笔试题(20190916)
  16. oracle normal索引类型,Oracle学习笔记(10)管理索引
  17. 电商平台-财务系统模块的设计与架构
  18. nginx 之安全配置
  19. SPOJ PHT Pigeonhole Tower 预处理+二分 || 找规律
  20. 【Opengl】 VAO与VBO的关系

热门文章

  1. 配置华为防火墙接口IP地址和区域
  2. 深度学习常用算子(一)
  3. 即时聊天软件与开放平台
  4. Pro 了,更强了 — 米家台灯 Pro 评测
  5. 茶叶文化网站设计与实现 HTML+CSS学生网页设计作业源码
  6. pyspark 读mysql数据_spark读mysql数据
  7. THINKPHP5(TP5)新手入门必看教程
  8. UnboundLocalError: local variable ‘count‘ referenced before assignment
  9. Java九阳神功-抽象方法与抽象类
  10. 三极管:NPN和PNP