大数据收集层常用技术-Sqoop、Flume、Kafka

  • Sqoop:关系型数据收集

使用场景:数据迁移、可视化分析结果、数据增量导入

基本架构:存在两个版本,1.4.x和1.99.x,通常简称为sqoop1和sqoop2

sqoop1:Connector定制麻烦、客户端软件繁多、安全性差

sqoop2:引入了sqoop server,将所有管理工作都放到server端,用户可以通过客户端命令或者浏览器随时随处使用sqoop。

使用方式:sqoop1:import(将关系型数据导入到HDFS)、export(将HDFS导出到关系型数据库)

sqoop2:Connector(访问某事数据源的组件)、link:一个Connector实例、job:完成数据迁移功能的分布式作业,简称:To link,可通过sqoop.sh client 进入Sqoop2提供的shell命令行。

  • Flume:非关系型数据的收集

Flume采用了插拨式软件架构,所有组件均是可插拔的,用户可以根据自己的需要定制每个组件,具体以下特点:良好的扩展性、高度定制化、声明式动态化配置、语意路由、良好的可靠性。

Flume NG基本架构:

数据流是通过一系列称为Agent的组件沟通,从客户端前一个Agent接收数据,经过过滤、路由等操作后,传递给下一个或者多个Agent(完全分布式),直到抵达目标系统。

Flume将数据流水线传递的数据称为Event,每个Event由头部和字节数组两部分构成。

Agent:主要由三个组件组成:

Source(接收Avro、Thrift、Exec、Spooling Directory、Kafka、Syslog、Http等 以上source协议发来的数据写入channel)。

Channel(是一个数据缓存区,暂存Source写入的Event,直到被Sink发送出去,主要提供了一下几种channel实现,Memory、File、JDBC、kafka)。

Sink(负责从channel读取数据,并发送给喜爱个Agent的source,主要提供一下几种sink实现,HDFS、Hbase、Avro/Thrift、MorphlineSolrSink/ElasticSearchSink、Kafka eg:使用kafka Sink写入到对应的kafka中)

Agent高级组件:Interceptor(允许用户修改或删掉传输过程中的Event)、Channel Selector(将event选择写入那几个channel)

其它感念: Apache Avro是一个数据序列化系统。

Avro所提供的属性:

1.丰富的数据结构

2.使用快速的压缩二进制数据格式

3.提供容器文件用于持久化数据

4.远程过程调用RPC

5.简单的动态语言结合功能,Avro 和动态语言结合后,读写数据文件和使用 RPC 协议都不需要生成代码,而代码生成作为一种可选的优化只值得在静态类型语言中实现。

  • 分布式消息队列Kafka

特点:高性能、良好的扩展性、数据持久性

基本架构:由Producer、Broker、Consumer三类组件构成,Producer将数据写入Broker,Consumer从Broker上读取数据进行处理,Borker构成了连接Producer和Cousumer的缓冲区,多个Broker构成一个可靠的分布式消息存储系统,避免数据dou失。Broker中的消息被划分为若干个topic,同属一个topic的所有数据按照某种策略被分成多个partition,以实现负载分摊和数据并行处理。

Kafka各组件:

  1. Kafka Producer:producer将数据转化成“消息”,并通过网络发送给Broker,格式:
  2. Kafka Broker:Broker一般有多个,组成一个分布式高容错集群,Broker主要职责是接受Producer和Consumer的请求,并把消息持久化到本地磁盘。Broker以topic为单位将消息分成不同的分区(partition)每个分区可以有多个副本,通过数据沉余的方式实现容错,当partition存在多个副本是,其中一个是leader,对外提供读写请求,其他均为follower,不对外提供服务,只同步leader的数据,并在leader故障是将其中一个follower选举为leader。

Kafka Broker能够保证同一个tipic下同一个partition内部消息是有序的,但无法保证partition之前的全局消息有序。每个分区中的消息被赋予唯一整数标识,称为offest(偏移量)

Kafka Broker中保存的数据是是有有效期的。

3. Kafka Consumer:主动从kafka Broker拉取消息进行处理,每个kafka自己维护最后一个已读消息的offset,下次请求从这个offset读取消息。

4.Zookeeper:担任分布式服务协调的作用:

所有Broker会向Zookeeper注册,将自己的位置、健康状态、维护的topic、partition等信息写入Zookeeper,以便于其它Customer可以发现和获取这些数据,当一个Consumer宕机,其它consumer可以发现故障,自动分摊改负载,实现容错机制

Kafka关键性技术点:

1、可控的可靠性级别(Producer向Broker发送数据,分同步和异步)

2、数据多副本

3、高效的持久化机制(磁盘顺序写比随机写,速度两者相差6000倍)

大数据收集层常用技术-Sqoop、Flume、Kafka_第1张图片

 

你可能感兴趣的:(大数据)