概述
## Hadoop实用工具
### 1、kafka
大数据平台的分布式消息队列依赖于zookeeper
服务启动命令:nohup bin/kafka-server-start.sh config/server.properties &
#### 1.1、组件
producer:消息生产者
consumer:消息消费者
topic:消费者消费消息的标识
消费者组:同一时间点,同一个数据只能被同一个消费者组的消费者消费一次
broker:一台kafka服务器就是一个broker。负责存放数据。
#### 1.2、特点
1、基于页缓存技术和磁盘顺序读写,使Kafka的速度非常快
2、Kafka能够从三个方面保证数据不丢失
生产者端:
有两种方式:同步方式生产一条发送一条,发送成功后才生产下一条,效率太低
一般采用异步模式,生产者生产一批数据后,批量发送到broker上进行保存,采用ack应答机制确保数据发送成功,ack有三种模式(-1,0,1)
0:表示生产者端只要吧数据发送出去就认为发送成功
1:表示只要leader应答接受成功就认为发送成功
-1:表示leader和follower全部应答接收成功才认为成功
broker端:采用多副本机制,生产者生产数据后发送给leader。然后leader同步多个副本到多个follower节点,采用ISR机制,在leader上维护一个ISR列表,用来维护多副本,确保数据不丢失
消费者端:采用kafka低级API手动维护偏移量确保数据不丢失
3、kafka集群只有leader对外提供数据读写服务。follwer只做数据备份,只有当leader单点故障才会通过zookeeper选举机制,从follower中选出一个新的leader对外提供服务
### 2、flume
flume是一个高可用高可靠的分布式海量数据采集、聚合、和传输系统
启动方式:bin/flume-ng agent --name agent名 --conf conf/ --conf-file 自定义采集方案
#### 2.1、组件
Agent:agent是flume采集数据的基本单元。一般包括三个部分
source:数据源
channel:数据传输通道(具有缓存的作用)Flume自带两种Channel:Memory Channel和File Channel。
sink:下沉数据(具有事务性)
Event:是传输的数据的基本单元,数据在agent是以一个个Event的形式进行传输的
#### 2.2、特点
flume可以采集多种形式的数据,半结构化、非结构化、结构化数据
flume可以自定义source、channel、和sink,使用非常灵活
不适合做实时性要求较强的数据库方面的增量数据迁移,因为其轮询的采集数据的方式会对业务数据造成较大压力
### 3、Kylin
kylin是一个分布式分析引擎,能在亚秒内查询巨大的hive表,这是因为他的可以进行预计算,将可能需要的业务逻辑已离线的方式计算出来,然后再查询计算结果
缺点:计算过程基于内存
#### 4、Phoeinx
启动命令:安装目录下 bin/sqlline.py hadoop003:2181
phoenix是一个封装hbase的操作工具,hbase的api不支持类sql语句查询,使用phoenix封装hbase可以实现hbase的类sql查询。本质是把类sql语句翻译成hbase的api
特点:
1、并不会降低hbase的性能
2、完美支持hbase二级索引创建(需要在hbase配置支持phoeinx二级索引)
3、类sql操作,方便快捷
#### 5、impala
用于封装hive的工具
优点:
1、基于内存的运算不需要把中间结果写入磁盘,节省大量io
2、无需转换为Mapreduce,直接访问hdfs的数据进行作业调度,速度快
3、支持多种数据文件格式
4、可以访问hive的元数据表,对hive数据直接做数据分析
缺点:
1、对内存依赖大,且完全依赖hive
2、只能读文本文件,不能读取自定义二进制文件
3、分区数量超过1万,性能严重下降
### 6、tez
也是用于封装hive的工具,半基于内存,能将多个mr任务优化成一个任务,能提升hive查询速度
### 7、数据迁移工具
datax 数据迁移工具:可以做数据的全量和增量数据迁移功能非常强大
sqoop 数据迁移工具:可以做全量数据的迁移(底层是没有用reduce阶段的mapreduce,不适合做增量数据迁移)
ogg(oracle golden gate):做oracle和mysql的增量数据迁移和全量数据迁移,原理是解析数据库归档日志,然后写入目标数据库,不会对业务数据库造成负担
flume:可以做结构化、非结构化、半结构化的数据的全量(自定义source维护偏移量)和增量迁移,功能非常强大,但是对一些实时性要求较高的增量数据迁移时就不太适合,因为flume会频繁访问数据库,给业务数据库造成极大压力
canal:增量数据的迁移工具,原理是,解析预写日志进行数据迁移。
### 8、azkaban
任务调度工具
### 9、非关系型数据库
mogodb:分布式存储数据库
优点:面向文档存储操作简单,支持多种语言,安装简单,支持故障恢复
缺点:不支持事务,占用大量空间。不能进行表关联
redis:基于内存的轻量级数据库,默认16个库,支持String,set,map,等方式存储
数据持久化方式:rdb定期(分钟级)进行快照保存,数据恢复快,但是容易丢失批量数据
Aof每秒对用户的操作日志进行保存,数据相对丢失较少,但是恢复速度慢
最后
以上就是靓丽河马为你收集整理的Hadoop实用工具学习总结的全部内容,希望文章能够帮你解决Hadoop实用工具学习总结所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复