使用场景:数据迁移、可视化分析结果、数据增量导入
基本架构:存在两个版本,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 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 协议都不需要生成代码,而代码生成作为一种可选的优化只值得在静态类型语言中实现。
特点:高性能、良好的扩展性、数据持久性
基本架构:由Producer、Broker、Consumer三类组件构成,Producer将数据写入Broker,Consumer从Broker上读取数据进行处理,Borker构成了连接Producer和Cousumer的缓冲区,多个Broker构成一个可靠的分布式消息存储系统,避免数据dou失。Broker中的消息被划分为若干个topic,同属一个topic的所有数据按照某种策略被分成多个partition,以实现负载分摊和数据并行处理。
Kafka各组件:
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倍)