我是靠谱客的博主 靓丽河马,最近开发中收集的这篇文章主要介绍Hadoop实用工具学习总结,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

## 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实用工具学习总结所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(56)

评论列表共有 0 条评论

立即
投稿
返回
顶部