侧边栏

大数据简介

FusionInsight大数据开发

FusionInsight HD是一个大数据全栈商用平台,支持各种通用大数据应用场景。

技能需求

  • 扎实的编程基础
  • Java/Scala/python/SQL/shell常见命令
  • 掌握FusionInsight
  • 熟悉业务开发

大数据应用开发流程

  • 业务分析和方案设计
  • 应用开发
  • 应用调试
  • 应用部署

应用开发关键点

  • 账号
  • 安全认证
  • 场景约束

应用开发指南--调试

  • 常规手段
  • 协助资料
  • 保障团队

总结:

  1. 认证是应用开发的关键点,要根据业务需求,申请合适账号,完成安全认证。
  2. 华为FusionInsight易集成开发,提供了包括应用开发指南,样例代码和支持团队等各类协助。

更新中......

HDFS应用开发

HDFS(Dadoop Distributed File System)

HDFS概述

  • 高容错性
  • 高吞吐量
  • 大文件存储

HDFS架构包含三部分

  1. Name Node
  2. DataNode
  3. Client

HDFS数据写入流程

HDFS应用开发方式

  • HDFS Client

Java/shell/Web UI

  • Kerbors控制

HDFSJava应用开发

下载客户端/获取样例工程/生产样例工程/导入eclipse/编码

Java开发流程

  • 初始化
  • 目录操作
  • 文件读取
  • 文件写入/追加(
  1. 初始化FSDataOutputstream对象
  2. 使用FSDataOutputStream对象初始化BufferedOutputStream.
  3. 使用BufferedOutputStream.write写入HDFS数据。
  4. 使用BufferedOutputStream.flush和FSDataOutputstream.hflush()将数据刷新到HDFS。
  5. 关闭数据流。)

应用开发规范

规范1:Java开发时,申请资源需要及时释放。
规范2:HDFS不适用于存储大量小文件。
规范3:HDFS中数据备份3份即可。
规范4:如果有多线程进行login的操作,当第一次登陆成功后,所有线程再次登陆时应该使用relogin的方式。

更新中......

HBase应用开发

HBase的定义

HBase是一个高可靠、高性能、面向列、可伸缩的分布式存储系统。

  • 适合于存储大表数据,可以达到实时级别。
  • 利用Hadoop HDFS 作为其文件存储系统,提供实时的读写的数据库系统。
  • 利用ZooKeeper作为协同服务。

HBase架构

HBase的适用场景

  • 海量数据
  • 高吞吐量
  • 需要在海量数据中实现高效的随机读取
  • 需要很好的性能伸缩能力
  • 能够同时处理结构化和非结构化的数据
  • 不需要完全拥有传统关系型数据库所具备的ACID特性

HBase应用开发流程

  • 制定业务目标
  • 准备开发环境
  • 下载并导入样例工程
  • 设计HBase表

设计原则:

查询数据唯一

数据均匀分布

查询性能优化

其他因素(region的提前划分,冷热Family的使用)

  • 根据场景开发工程
  • 编译并运行程序
  • 查看结果与调试程序

HBase表设计-总体原则

设计目标:提高吞吐量
设计原则:预分region,是region分布均匀,提高并发
实现方法:Rowkey范围和分布已知,建议预分region

设计目标:提高写入性能
设计原则:避免过多的热点region
设计方法:根据应用场景,可以考虑将时间因素引入Rowkey

设计目标:提高查询性能
设计原则:数据连续存储,频繁访问的数据存储一个地方,数据连续存储,离散度,信息冗余。
实现方法:同时读取的数据存放在同一行、cell,使用二级索引

HBase表设计-设计内容

设计内容通过不同维度,可分为:
Table设计(表粒度的设计)

  • 建表方法
  • 预分region
  • Family属性
  • 系统并发能力、数据清洗能力

RowKey设计

  • 原则:需要同时访问的数据,RowKey尽量连续
  • 访问效率:分散写,连续读
  • 属性内容:常用的查询场景属性
  • 属性值顺序:枚举,访问权重
  • 时间属性:循环Key+TTL,周期建表
  • 二级索引
  • 折中法
  • 冗余法

Family设计

可枚举数量少扩展性弱的属性作为Family

Qualifier设计

 不可枚举、数量多且扩展性强的属性作为Qualifier

原则:同时访问的数据存放到同一个Cell,列名尽量简短

HBase常用接口

create()

put()

get()

getScanner(Scan scan)

、、、

创建Configuration实例以及Kerberos安全认证

HBaseConfiguration方法

创建表

create Table方法

写入数据

put方法

读取一行数据

get方法

读取多行数据

scan方法

 更新中......

MapReduce  应用开发

要求:

  1.  MapReduce的基本定义及过程
  2. 搭建开发环境
  3. 代码实例及运行程序
  4. MapReduce开发接口介绍

1. MapReduce的基本定义及过程
MapReduce是面向大数据并行处理的计算模型、框架和平台,其资源调度由Yarn完成,任务资源隐含了以下三层含义:

  • 1)MapReduce是 一个基于集群的高性能并行计算平台(cluster Infrastructure)。
  • 2)MapReduce是 一个并行计算与运行软件框架(SoftWare Framework)
  • 3)MapReduce是 一个并行程序设计模型与方法(Programming Model & Methodology)

MapReduce特点:

  • 易于编程
  • 良好的扩展性
  • 高容错性

MapReduce的过程:

  1. 把输入的数据(Input) 拆分为多个键值对(key-value对)
  2. 每一个键值对分别调用Map进行并行处理
  3. 每一个Map会产生多个新的键值对
  4. 对Map阶段产生的数据进行排序、组合
  5. 以键值对的形式输出最终结果

2. 搭建开发环境

  1. 确认Yarn组件和MapReduce组件已经安装。
  2. 客户端安装Eclipse和JDK程序。
  3. 客户端机器的时间与FusInsight集群时间要保持一致,时间差要小于5分钟。
  4. 在Yarn服务页面下载MapReduce客户端程序到客户端机器中。
  • 1.下载客户端
  • 2.获取样例工程
  • 3.生成样例工程
  • 4.导入eclipse
  • 5.编码

开发相关类的总结
1) InputFormat类

  • 将输入的数据分割成split,并将split拆分为<key,value>作为map的输入。

2) Mapper类

  • 实现map函数,根据输入的<key,value>对产生中间结果。

3)Combiner类

  • 实现combiner函数,合并中间结果中具有相同key值的键值对。

4) Partitioner类
实现getPartitioner函数,在Shuffle过程按照key值将中间数据分成R份,每一份由一个Reduce负责

5) Reduce类

  • 实现reduce函数,将中间结果合并,得到最终的结果。

6)OutputFormat类

  • 该类负责输出最终的结果,MapReduce使用OutputFormat类将数据输出存入到文件中,每个Reduce将它的输出直接写到自己的文件中。


调式代码

  • MapReduce开发调式采用的原理是Java的远程调式机制

Hive应用开发

  1. 了解Hive的基本架构原理
  2.  掌握JDBC客户端开发流程
  3. 了解ODBC客户端的开发流程
  4. 了解python客户端的开发流程
  5. 了解Hcatalog/webHcat开发接口
  6.  掌握Hive开发规则

1. 了解Hive的基本架构原理
守护进程:

  1. HiveServer(Thrift/Compiler)
  2. webHcat
  3. MetaStore

Hive的应用场景

  1. 数据挖掘
  2. 非实时分析
  3. 数据汇总
  4. 作为数据仓库

2. 掌握JDBC客户端开发流程
JDBC开发-参数初始化

  1. 设置ZooKeeper地址
  2. krb5文件路径
  3. 设置JAAS配置
  4. 配置ZooKeeper Principal
  5. 执行登陆

JDBC开发-拼接URL

  1. JDBC前缀设置
  2. 服务发现模式
  3. 安全配置:qop.auth.principal
  4. 非安全配置

JDBC开发-执行SQL

  1. 加载驱动类
  2. 建立连接
  3. 执行SQL
  4. 关闭连接

JDBC开发-SQL实现

  1. 创建preparedStatement
  2. 执行statement
  3. 关闭statement

规则建议:
开发调式:在开发程序时,可通过使用Hive的客户端Beeline先进行调试,检验语句与结果正确性,再部署基于JDBC等的应用程序。
获取数据库连接:Hive的数据库URL再拼接时已经经过安全认证,所以Hive数据库的用户名和密码为null或空 。


JDBC超时限制:Hive提供的JDBC实现的超时限制,默认是5分钟。

执行HQL:再JAVA JDBC应用开发中,拼装HQL语句,注意HQL语句不能以“;“结尾。

HQL语法规则之判空:判断字段为空使用:”is null“,判断不为空,即有值,使用:"is not null"

UDF的管理:建议由管理员创建永久UDF,避免每次使用时都去add jar,和重新定义UDF。

UDF的注解:Hive的UDF会有一些默认属性。@UDFType(deterministic = false)

使用分区表:当数据量较大时,且经常需要按天统计时,建议使用分区表,按天存放数据。

动态分区表:为了避免插入动态分区数据过程中,产生过多的小文件,在执行插入时,在分区字段上加distribut by。

文件格式选择:Hive支持多种存储格式,比如TextFile,RCFile,ORC,Sequence,Parquet.

sorl应用开发

要求:

  1. 了解Solr应用开发适用场景
  2. 熟悉Solr应用开发流程
  3. 熟悉并使用Solr常用API
  4. 理解Collection设计基本原则
  5. 应用开发实践

Solr简介

  1. Solr是一个高性能,基于Lucene的全文检索服务,也可以作为NoSQL数据库使用。
  2. Solr对Lucene进行了扩展,提供了比Lucene更为丰富的查询语句,同时实现了可配置、可扩展,并对查询性能进行了优化,还提供了一个完善的功能管理界面。
  3. SolrCloud是从Solr 4.0 版本开始发出的具有开创意义的分布式索引和索引方案,基于Sorl和Zookeeper进行开发的。

Solr概念体系-总述
常见术语:

  • Config Set:Solr Core提供一组配置文件 ,
  • Core:即Solr Core ,
  • Shard:Collection的逻辑分片
  • Replice:Shard下的实际存储索引的一个副本,与Core对应
  • Leader:赢得选举的Shard Peplicas
  • Zookeeper:它在Solr Core是必须的,提供分布式锁、处理Leader选举、管理配置等功能

Solr的常用应用场景

  1. 待检索数据类型复杂
  2. 检索条件多样化(如涉及字段太多),常规查询无法满足
  3. 读取远多于写入数据

Solr应用开发流程-制定业务目标
业务数据规模及数据模型

  • 涉及Collection的Shard划分及Schema的定义

实时索引、查询性能要求

  • 涉及Collection的Shard划分、索引存储位置

查询场景

  • 涉及Collection的Schema定义

Solr应用开发流程-初始化及安全认证

  1. 初始化并获取配置
  2. 安全认证
  3. 获取CloudSolrClient
  4. 调用Solr APL

Solr应用开发流程-设计Collection

  1. 根据业务数据的关系设计schema.xml
  2. 根据写入和查询场景设计uniqueKey字段
  3. 根据写入和查询性能要求设计solrconfig.xml
  4. 根据业务数据规模和Solr集群规模确定Shard数目
  5. 根据可靠性能要求设定Shard副本数

Collection设计-索引存储位置
索引存储在HDFS

缺点:

  1. 与存储在本地磁盘相比,性能下降30%-50%
  2. 实时单节点写入速度<=2MB/s
  3. 数据膨胀略高于存储在本地

优点:

  1. Sorl设置Replica即可,利用HDFS副本机制保障数据可靠性
  2. 数据管理由HDFS完成,包括各节点数据balance、方便迁移

配置集Schema设计-Field
dynamicField

  • 动态的字段设置,用于后期自定义字段,”*“号通配符。

copyField

  • 将多个字段集中到一个字段

Kafka应用开发

  1. 了解Kafka应用开发适用场景
  2. 熟悉Kafka应用开发流程
  3. 熟悉并使用Kafka常用API
  4. 进行Kafka应用开发

Kafka的定义
Kafka是一个高吞吐、分布式、基于发布订阅的消息系统
Kafka有如下几个特点:

  1. 高吞吐量
  2. 消息持久化到磁盘
  3. 分布式系统易扩展
  4. 容错性好

Kafka的适用场景

  1. 适用于离线和在线的消息消费
  2. 已对接组件
  3. Streaming、Spark、Flume

使用Kafka的好处

  • 解耦--使得消息生产、消费系统能够独立变更
  • 可靠--有效解决单点故障引发系统不可用问题
  • 易扩展--生产、消费系统扩展简单
  • 可恢复--消息缓存下来,支持故障从故障点读取
  • 异步通信--生产系统无需关心消费系统的消费时间

配置及开发准备--配置keytab文件到样例工程

  1. 配置Keytab到工程
  2. 安全认证
  3. Topic订阅
  4. 消费获取
  5. 消费处理

Kafka常用接口

  • Kafka集群安全访问端口默认为21007,非安全访问端口默认为21005

Kafka Producer接口

  1.  向管理员申请目标Topic的生产者权限
  2.  根据业务需求,配置发送相关配置参数
  3.  调用新Producer API接口发送数据

Kafka Consumer接口

  1. 向管理员申请目标Topic的消费者权限
  2. 根据业务需求,配置消费者相关配置参数
  3. 调用新Consumer API接口进行消息消费

Spark应用开发

要求:

  1. 了解Spark基本原理
  2. 搭建Spark开发环境
  3. 开发Spark应用程序
  4. 调试运行Spark应用程序

YARN资源调度,可以和Hadoop集群无缝对接

Spark适用场景
大多数现有集群计算框架如MapReduce等基于从稳定存储(文件系统)到稳定存储的非循环数据流,数据重用都是基于磁盘的,执行效率比较低。
与传统的MapReduce任务频繁读写磁盘数据相比,基于内存计算的Spark则更适合应用在迭代计算,交互式分析等场景。

Spark应用运行流程--关键角色

  • Client:需求提出方,负责提交需求(应用)。
  • Driver:负责应用的业务逻辑和运行规划(DAG)。
  • ApplicationMaster:负责应用的资源管理,根据应用的需求,向资源管理部门(ResourceManager)申请资源。
  • ResourceManager:资源管理部门,负责整个集群的资源统一调度和分配
  • Executor:负责实际计算工作,一个应用会分拆给多个Executor来进行计算。

Spark核心概念--RDD
RDD(Resilient Distributed Datasets)即弹性分布式数据集,指的是一个只读的,可分区的分布式数据集。这个数据集的全部或部分可以缓存在内存中,在多次计算间重用。
RDD的生成

  1. 从Hadoop文件系统(或与Hadoop兼容的其它存储系统)输入创建(如HDFS)
  2. 从集群创建(如sc.Parallelize)。
  3. 从夫RDD转换得到新的RDD。

RDD的存储和分区

  1. 用户可以选择不同的存储级别存储RDD以便重用(11种)
  2. 当前RDD默认存储于内存,但当内存不足时,RDD会溢出到磁盘中。
  3. RDD在需要进行分区时会根据每条记录Key进行分区,以此保证两个数据集能高效进行Join操作。

RDD的优点

  1. RDD是只读的,可提供更高的容错能力
  2. RDD的不可变性,可以实现Hadoop MapReduce的推测式执行
  3. RDD的数据分区特性可以通过数据的本地性来提高性能。
  4. RDD都是可序列化的,在内存不足时可自动降级为磁盘存储。

RDD的特点

  1. 在集群节点上时不可变的,是已分区的集合对象。
  2. 失败后自动重连
  3. 可以控制存储级别(内存、磁盘等)来进行重用。
  4. 必须是可序列化的
  5. 是静态类型。

RDD的创建
Spark所有操作都围绕弹性分布式数据集(RDD)进行,这是一个有容错机制并可以被并行操作的元素集合,具有只读,分区,容错,高效,无需物化,可以缓存,RDD依赖等特征。
目前有两种类型的基础RDD:

  1. 并行集合:接受一个已经存在的Scala集合,然后进行并行计算
  2. Hadoop数据集:在一个文件的每条记录上运行函数。

RDD的创建--并行集合
并行集合是通过调用SparkContext的parallelize方法,在一个已经存在的Scala集合(一个Seq对象)上创建的。
集合的对象将会被拷贝,创建出一个可以被并行操作的分布式数据集。

RDD依赖:宽依赖和窄依赖
RDD父子依赖关系

  • 窄依赖:(Narrow)指父RDD的每一个分区最多被一个子RDD的分区所用。
  • 宽依赖:(Wide)指子RDD的分区依赖于父RDD的所有分区,是Stage划分的依据。
  • RDD常用Transformation算子
  • RDD常用Action算子

Spark任务参数配置

  • Spark优先级是:配置文件<动态参数<代码配置

相同的数据,只创建一个RDD

算法调优--RDD缓存

  • Spark可以使用persist和cache方法将任意RDD缓存到内存、磁盘文件系统中。

算法调优--避免使用Shuffle

  • Shuffle过程会有整个RDD数据的写和读的操作,成本非常高。

算法调优--使用广播变量
外部变量:

  • 每个task都有一个变量副本。

广播变量:

  • 每个Executor保留一份。

编写代码

  1. 登陆
  2. 创建连接
  3. 执行SQL
  4. 获取结果

DataFrame介绍
DataFrame:已RDD为基础,带有Schema信息,类似传统数据库的二维表。


编写代码

  1. 登陆
  2. 注册Table
  3. 执行SQL
  4. 过滤

SparkStreaming概述

SparkStreaming是Spark核心API的一个扩展,它对实时流式数据的处理具有可扩展性、高吞吐量、可容错性等特点。

SparkStreaming原理

  1. SparkStreaming接收实时的输入数据流,然后将这些数据切分为批数据供Spark引擎处理,Spark引擎将数据生成最终的结果数据。
  2. 使用DStream从Kafka和HDFS等源获取连接的数据流。DStream是一系列连续的RDD组成。

SparkStreaming数据源

  1. 基本源:HDFS等文件系统、Socket连接等
  2. 高级源:Kafka等
  3. 自定义源: 需要实现用户自定义receiver

可靠性(二次开发)

  1. Reliable Receiver
  2. 设置CheckPoint
  3. 确保Driver可以自动启动
  4. 使用Write Ahead Log 功能

SparkStreaming代码流程
常见业务代码逻辑

  1. 创建StreamingContext
  2. 定义输入源
  3. 准备应用计算逻辑
  4. 使用streamingContext.start()方法接受和处理数据。
  5. 使用streamingContext.stop()方法停止流计算。

窗口操作
SparkStreaming支持窗口计算,允许用户在一个滑动窗口数据上应用transformation算子。
窗口在源DStream上滑动,合并和操作落入窗口RDDs,产生窗口化的DStream的RDDs。

Checkpoint
SparkStreaming可以checkpoint足够的信息到容错存储系统中,以使系统崩溃后从故障中恢复。

  1. Metadata checkpoint:保存流计算的定义信息到HDFS中
  2. Data checkpoint:保存生成的RDD到HDFS中。

SparkStreaming性能调优

  • 设置合理的批处理时间(batch Duration)
  • 设置合理数据接收并行度
  1. 设置多个Receiver接受数据
  2. 设置合理的Receiver阻塞时间
  • 设置合理数据处理并行度
  • 使用Kryo系列化
  • 内存调优
  1. 设置持久化级别减少GC开销
  2. 使用并发的标记-清理GC算法减少GC暂停时间

Redis应用开发

要求:

  1. 了解Redis应用场景
  2. 掌握Redis二次开发环境搭建
  3. 掌握Redis业务开发

Redis简介

  • Redis是一个基于网络的,高性能key-value内存数据库
  • Redis根memcached类似,不过数据可持久化,而且支持的数据类型很丰富。支持在服务端计算集合的并、交和补集等,还支持多种排序功能。

Redis使用场景有如下几个特点:

  1. 高性能
  2. 低延迟
  3. 丰富数据结构存取
  4. 支持持久化

Redis应用场景介绍
Redis提供了灵活多变的数据结构和数据操作,主要应用于如下场景:

  1. 取最新N个数据的操作,比如典型的取某网站的最新文章。
  2. 排行榜应用,取TOP N操作。
  3. 需要精准设定过期时间的应用。
  4. 计数器应用,比如记录用户访问网站的次数。
  5. 构建队列系统
  6. 缓存,如缓存关系数据库中的频繁访问的表数据。

架构回顾

  1. 无中心自组织的结构,节点之间使用Gossip协议来交换节点状态信息。
  2. 个节点维护Key->Server的映射关系。
  3. Client可以向任意节点发起请求,节点不会转发请求,只是重定向Client
  4. 如果在Client第一次请求之间,Cluster拓扑发生改变,则第二次重定向请求将被再次重定向,直到找到正确的Server为止。

Redis应用开发
设计Redis数据结构

  1. 取最新N个数据的操作:list
  2. 排行榜应用,取TOP N操作。以某个条件为权重,比如按顶的次数排行:sorted set。
  3. 利INCR,DECR命令来构建计数器系统。、
  4. Uniq操作,获取某段时间所有数据排重值:set。
  5. 使用list可以构建队列系统

Redis应用开发
根据场景开发工程

  1. 梳理业务场景流
  2. 设计各模块接口
  3. 如果使用的是安全集群,需要进行安全认证
  4. 熟悉Redis提供的相应API
  5. 调用业务需要的API实现各功能

数据结构设计

  • 计算过程中使用的用户信息使用hash结构存取,KEY设计为userinfo-<user id>,
  • field为用户的属性。

数据读写原则

  • MR任务每天定时将用户信息从后端存储源(HBase)批量导入Redis中。
  • 业务系统获取数据时,先从Redis中获取,获取不到再取后端HBase获取即实时计算,并同步写入到Redis。

样例说明-String类型操作

  1. set:将字符串值value关联到key
  2. get:返回key所关联的字符串值,
  3. setex:将字符串值value关联到key,并设置key的生存时间
  4. append:将value追加到key原值的末尾,类似Java String类型的“+”操作。

样例说明-List类型操作

  1. Ipush/rpush:往列表头/尾添加一个元素。
  2. Irange:返回列表中start至end之间的元素
  3. llen:返回列表的长度
  4. lpop/rpop:从列表头/尾获取一个元素,并将其中列表中删除。

样例说明-Hash类型操作

  • hset
  • hget
  • hgettall
  • hmset
  • hincrby
  • hkeys
  • hvals
  • hmget
  • hexists
  • hdel

Streaming应用开发

  1. 掌握Streaming基本业务开发流
  2. 熟悉Streaming常用API接口使用
  3. 掌握Streaming业务设计基本原则
  4. 了解Streaming应用开发环境
  5. 了解CQL开发流及使用

Streaming的定义

Streaming基于开源Storm,是一个分布式、实时计算框架。Streaming在开源Storm的基础上增加了持续查询语言CQL、增强了安全性和可靠性。

  • 事件驱动
  • 连续查询
  • 数据不存储、先计算
  • 实时响应,低延迟

CQL(Continuous Query Language),持续查询语言,是一种用于实时数据流上的查询语言。
它是一种SQL-like的语言,目前主要适配Storm。
相对于SQL,CQL中增加了(时序)窗口的概念,将待处理的数据保存在内存中,进行快速的内存计算,CQL的输出结果为数据流在某一时刻的计算结果。

Streaming的适用场景
Streaming主要应用于以下几种对响应时延有严重要求的场景:

  1. 实时分析:如实时日志处理,交通流分析等
  2. 实时统计:如网站的实时访问统计、排序等
  3. 实时推荐:如实时广告定位、事件营销等

提交拓扑
当前Streaming支持三种方式提交拓扑

  1. Linux命令行提交-CMD模式
  2. Eclipse远程提交-Remote模式
  3. 本地模式提交-Local模式

Spout设计

  1. 数据接受
  2. 数据反序列化
  3. 数据拆分
  4. 数据筛选
  5. 数据缓存
  6. 数据发送

counting Bolt设计
功能:

  1. 窗口定义
  2. 刷新窗口
  3. 发送数据

Storm提供接口
1 REST接口

  • REST(Representational State Tansfer)表述性状态转移接口。

2 Thrift接口

  • 由Numbus提供。Thrift是一个基于静态代码生成的跨语言的RPC协议栈实现。

Spout接口

  1. Spout的Ack开关

Bolt接口

  1. Bolt的Ack开关
  • 创建输入流
  • Join
  • 窗口
  • Split

Flume应用开发

要求:

  1. 了解Flume应用开发适用场景
  2. 掌握Flume应用开发

Flume应用场景
Flume的核心是把数据从数据源收集过来,在送到目的地。为了保证输送一定成功,发送到目的地之前,会先缓存数据,待数据真正的到达目的地后,删除自己缓存的数据。
Flume采用流式方法采集和传输数据,程序配置好后,不需要外部条件触发下,一直监控数据源,源源不断地采集、传送数据到目的地。

主要应用于一下几种场景:

  1. 将分布式节点上大量数据实时采集、汇总和转移
  2. 将集群内、外地本地文件、实时数据流采集到FusionInsight集群内的HDFS、HBase,Kafka,Solr中。
  3. 将Avro、System,http,Thrift,JMS、Log4j协议发送过来地数据采集到FusionInsight集群内

Flume基本概念

  1. Source:数据源,即是产生日志信息地源头,Flume会将原始数据建模抽象成自己处理地数据对象:event
  2. Channel:通道,主要作用是临时缓存Source发过来地数据
  3. Sink:主要是从channel中取出数据并将数据放到不同地目的地
  4. event:一个数据单元,带有一个可选地消息头,Flume传输地数据地基本单位是event,如果是文本文件,通常是一行记录。event从Source,流向Channel,再到Sink,Sink将数据写入目的地

方案设计:
1)首先确定数据源:集群外
2)数据最终流向:KafKa(集群内)

Oozie应用开发

要求:

  1. 了解Oozie应用开发适用场景
  2. 掌握Oozie应用开发
  3. 熟悉并使用Oozie常用API

Oozie简介

  1. Oozie是一个Hadoop作业的工作流调度管理系统
  2. Oozie工作流(workflow)是放置在控制依赖DAG(有向无环图)中的一组动作(Action)集合,控制依赖可确保后续操作在见面的操作已经成功完成后才会启动。
  3. Oozie的协调作业(Coordinator)是通过时间(频率)和有效数据来触发当前的Oozie工作流。
  4. Oozie支持多种Hadoop作业(包括:HDFS,Map Reduce、Hive、Streaming MP、Loader、Spark、Distcp)以及系统类作业(Java和shell)

Oozie应用场景
Oozie是一个工作流调度引擎,对各种类型的Hadoop作业进行编排与调度。

  1. 编排与管理逻辑复杂的多种类型的Hadoop
  2. 基于时间(频率)触发工作流
  3. 基于数据有效性触发工作流
  4. 实时监控与管理集群的工作流,快速定位问题
posted @ 2019-07-28 16:14  菜鸟-传奇  阅读(1338)  评论(0编辑  收藏  举报