Hadoop 项目离线处理流程

1.Hadoop生态离线项目涉及到的技术:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
Hadoop生态离线项目

Hadoop
HDFS MapReduce(清洗)
YARN Hadoop集群

Hive
外部表
SQL
数据倾斜
优化
基于元数据管理
SQL ==> MapReduce

Flume
调度:
crontab、shell
Azkaban

HUE
可视化的notebook CM
排查数据

2.面试会问: 你们的集群规模是多少?=>每台机器的配置是什么?=>机型(物理机)是什么?

3.离线处理架构:

1
2
3
4
5
6
7
8
9
需要先将日志用Flume方式从某个server上采集日志信息到hdfs上(建议压缩的文本格式),或者用Sqoop/Spark技术从RDBMS上采集过来。

原始的日志信息不规整,需要有一个ETL操作,(比如MapReduce或者Sqark来实现),有一个解析、规则匹配的过程。

清洗之后的数据放在hdfs上的一个地方,对应分区表。(hive外部表)

(分区其实就是hdfs上的一个key=value的目录,外加一批元数据信息。)

还要通过alter刷一下元数据信息才能通过hive查到表里的数据。 最后通过 Web UI 界面(比如HUE、Zeppelin、BI展示工具),把结果展示出来。

3.1整个流程步骤

1
2
3
4
5
6
7
8
9
10
11
①数据采集:从Web server用Flume采集到hadoop

②做一个ETL过程

③把清洗后的数据移到目标目录(外部表)

④业务统计:考验SQL的能力 执行的结果放在dest table里。

⑤web UI界面展示

开发的重点是②③④

3.2关于ETL过程:(在这里先用MapReduce来进行操作)

1
2
3
4
5
6
7
8
9
10
11
对于之前的用sqoop从RDBMS抽数据到hadoop上,ETL操作只涉及到Map,而不涉及reduce。

这个过程其实是字段的选择和行的过滤,就是select where

MapReduce的两个阶段,map阶段处理后的数据,会经过shuffle端,到reduce端,由reduce端进行统一的规约的操作。

而sqoop只是数据的导入和导出,可以研究一下sqoop的工作原理。所以只是涉及map。

1)Map去HDFS的input文件夹(原始的日志数据)下读取数据

2)map方法中进行数据的清洗操作,清洗不符合规范的数据

3.2ETL详解图:

本文标题:Hadoop 项目离线处理流程

文章作者:skygzx

发布时间:2019年04月14日 - 09:53

最后更新:2019年04月15日 - 13:04

原始链接:http://yoursite.com/2019/04/14/Hadoop项目离线处理流程/

许可协议: 署名-非商业性使用-禁止演绎 4.0 国际 转载请保留原文链接及作者。

-------------本文结束感谢您的阅读-------------
0%