大数据实战第一课-基于hadoop的生态离线项目梳理

一、离线项目整体技术
二、离线项目功能演示
三、离线项目处理步骤

一、离线项目整体技术

1、从功能的角度看所用到的知识点:
Hadoop(存储):

	**三大组成部分**:HDFS、YARN 、MapReduce(数据清洗)
	Hadoop集群

Hive:

	使用外部表进行清洗过后数据关联,SQL进行统计分析,   数据倾斜如何优化?
	基于元数据管理(元数据?)
	参考博客:https://blog.csdn.net/zhikanjiani/article/details/97237992
	SQL ==> MapReduce

Flume(数据采集):

	进行数据采集
	调度:
	刚开始使用:crontab、shell
	进阶:Azkaban(调度)
	Azkaban参考博客:https://blog.csdn.net/qq_32641659/article/details/90217430
	
	HUE:可视化的基于notebook	用途:排查数据

二、从通用项目来看:

集群规模==>每台机器的配置==>机型

**面试题:你们公司集群规模??你们每台机器的配置??你们公司的机型??**

**云主机在生产中的性能怎样?**

二、离线项目功能演示

  • 假设我们现在是Hadoop集群,数据有可能在集群外,Server上的日志、RDBMS上的数据,如何处理,Server上的日志通过Flume来采集,RDBMS上的数据采用SQOOP或者Spark来采集;
  • 数据进入到Hadoop集群中才能使用平台、大数据框架来进行解决;绝大部分场景需要落地到SQL层面解决,平台型的;代码层面解决更多的是项目型的。

在这里插入图片描述

1、离线项目处理架构:
1.1、一般公司离线处理一般做到天的级别

	原始日志存放在这个目录:/g6/hadoop/accesslog/20190321/....log	
	一般情况下,flume采集到hdfs后,使用普通文本格式的压缩

1.2、ETL(MapReduce)–>输出会对应一个外部分区表(external partitioned table)会有一些(时间、分隔符、IP字段)的解析.

		ETL后的目录:/g6/hadoop/output/access/day=20190321
		/g6/hadoop/output/access/day=20190322			//以天为分区

分区就是hdfs上的一个key=value的目录外加一些元数据信息而已.

1.3、ETL后的目录存放在/g6/hadoop/output/access,ETL后的数据落在hive中(以外部表的形式直接进行指定),这样就能直接使用SQL进行查询统计.

问题:ETL过后还不能直接使用msck,元数据进行更新

  • 参考Hive02的这篇博客:https://blog.csdn.net/SparkOnYarn/article/details/105163737#id_2.6
  • msck在生产上是一个很重的过程

HUE是一个提高工作效率的工具,不需要在黑窗口下敲打命令,甚至可以直接修改数据;如果装了CM,能直接在CM上配置HUE,HUE也能对接YARN、还能对接其它如:Impala

Query Editor:能直接图形化操作Hive.
也可以自定义开发UDF函数、Preview sample data(预览样本数据)

需求:计算每一个域名下的traffic(流量)大小,在HUE上展示出来 select domain, sum(traffic) as size from access group by domain 打开管理界面,这个语句是基于MapReduce在跑的.

三、离线项目处理步骤

整个流程开发步骤梳理:

  1. 数据采集:Server ==> Hadoop X
  2. ETL(Mapreduce)
  3. raw (源端) ==> target(external table location)外部分区表指向hdfs的一个目录
  4. 业务统计:SQL ==> destination table(目标表)
  5. 从目标表展示到WebUI

对于大数据开发者而言:重要的是第2、3、4步

ETL
1)、Map+Reduce 较为简单的场景
2)、只有Map没有Reduce场景
3)、MapReduce chain 一个作业输出作为另一个作业输入,由多个MapReduce拼接而成;对于此处的ETL,只有map,select+where(从原始日志转到ETL后的目录)

sqoop作业原理了解
运行sqoop后,只有map,而且map个数是4;可以理解为一个select和一个where ==> 行过滤和列裁剪。

a、Map去HDFS的input文件夹下读取数据
b、map方法中进行数据的清洗操作,对于不符合规范的数据(字段、数据类型不对),进行剔除,剔除后的数据需要保存在其它位置(如果这些数据只是你觉得的不符合规范,需要留档保存)。
c、清洗完的数据采用行式还是列式存储,应该采用哪一种压缩?
d、日志解析,格式:分隔符、时间、IP字段的解析,某个字段对应什么含义都需要给定好 ==> 任何一条业务线接入进来的时候,日志都是有一个规范的,日志要根据规范解析出来,然后把数据存储到Hive中去。

在这里插入图片描述

小结:ETL过程就是去源端读取数据,使用Map去hdfs的input下文件夹下读取数据,在map方法中进行数据的清洗操作,不符合规范的数据(字段、数据类型不对),剔除的数据需要剔除出去,剔除的数据只是换个地方保存;清洗完的数据采用行式还是列式存储,需要自己去权衡

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值