Hive体系结构

Hive 最初是由 FaceBook 公司开发的一个基于 Hadoop 框架并且开源的一个数据仓库工具,后贡献给了 Apache 基金会由 Apache 来进行维护和更新。Hive 可以将结构化的文件映射为一张数据表,但并不提供查询功能,而是将 HiveQL 转化为 MapReduce 任务进行运行。同时,Hive 本身不存储数据,只是存储数据的路径或者操作信息,真的数据是存储在可靠的文件系统当中(如HDFS、Derby等)。

阅读全文

HDFS架构原理

HDFS 被设计成适合运行在通用硬件(commodity hardware)上的分布式文件系统,是 Hadoop 应用程序使用的主要分布式存储。HDFS 与现有的分布式文件系统有许多相似之处;但是,与其他分布式文件系统的区别也是很明显的。HDFS 具有高度的容错能力,旨在部署在低成本硬件上;HDFS 提供对应用程序数据的高吞吐量访问,并且适用于具有大数据集的应用程序;HDFS 放宽了一些POSIX要求,以实现对文件系统数据的流式访问。

阅读全文

YARN技术原理

YARN (Yet Another Resource Negotiator) 是从 hadoop-0.23 开始引入的新架构,他的基本设计思想是将 JobTracker 的两个主要功能,资源管理和作业控制(包括调度/监视等),拆分为单独的守护进程,分别是一个全局的 ResourceManager(RM)和每个应用程序的 ApplicationMaster(AM)。应用程序可以是单个作业,也可以是作业的DAG。

阅读全文

MapReduce执行过程详解

MapReduce运行的时候,会通过Mapper运行的任务读取HDFS中的数据文件,然后调用自己的方法,处理数据,最后输出。Reducer任务会接收Mapper任务输出的数据,作为自己的输入数据,调用自己的方法,最后输出到HDFS的文件中。

阅读全文

数据仓库的初级手册

这套初级手册是基于 Hadoop+Hive+Sqoop+Airflow 编写的,主要目的是对数据仓库有个宏观的认识,包括数据采集、ETL流程、任务调度和数据模型等。当中的每一个环节都有着丰富的内容,会在后期的中级手册与高级手册进行讨论,欢迎大家来围观。

阅读全文

常见的任务调度系统

离线数据仓库的最大特点是离线,也就是说数据会经过ETL处理之后才显示,最常见的形式是T+1,比如隔天出数。而提前设计的ETL任务一般需要在凌晨去运行,数据工程师不可能每天凌晨起来执行任务,这时候就需要有任务调度系统了。它不仅要能够定时地启动任务,还要能够管理任务之间复杂的依赖关系,使得成千上万的任务有条不紊地运行起来,保证数据能够在预定时间(比如上班前)能够出来,方便其他同事进行查阅。

阅读全文

简化版的增长模型

在互联网环境下,存量市场的竞争越来越激烈,许多公司都将用户提到了战略高度。借助用户生命周期管理与用户画像等,实现对用户的精细化运营。而增长模型是支撑这些应用的基础数据模型,包括日活、新增与留存。

阅读全文

Sqoop命令行的导入与导出

Sqoop是一种被设计为在Hadoop与关系数据库之间传输数据的工具。您可以使用Sqoop将数据从MySQL或Oracle等关系数据库管理系统(RDBMS)导入Hadoop分布式文件系统(HDFS),在Hadoop MapReduce中转换数据,然后将数据导出回RDBMS 。Sqoop使用MapReduce导入和导出数据,还提供了并行操作以及容错能力。

阅读全文

HiveQL的字符串函数

Hive 进行数据清洗时,使用最多的函数应该属字符串函数了。主要有:字符编码,字符拼接,字符查找,字符格式化,字符处理,字符截取,字符构造,字符切分,字符替换,编辑距离等。

阅读全文

HiveQL的日期函数

不管是数仓模型的日期维度,还是日常任务的调度时间,都会用到日期函数。主要有:当前时间,时间分段,时间加减,时间转换等。

阅读全文