
Hadoop系列
数仓大山哥
路漫漫其修远兮,吾将上下而求索。
展开
-
深度剖析Hive GroupBy,Distinct 与 Join 原理
Hive 中的 GroupBy, Distinct 和 JoinGroupBy 几种 Mode 原理 相关参数 Distinct Single Distinct Multi Distinct Join Common Join Map Join——Hive MapJoin 优化历程、FaceBook Join优化 Skew Join——Skewed Join Optimization Bucket Join 本文将介绍 Hive GroupBy,Distin原创 2020-07-30 10:26:58 · 1461 阅读 · 0 评论 -
Hive Group By的实现原理
group by多字段select rank, isonline, count(*) from city group by rank, isonline;将GroupBy的字段组合为map的输出key值,利用MapReduce的排序,在reduce阶段保存LastKey区分不同的key。MapReduce的过程如下(当然这里只是说明Reduce端的非Hash聚合过程)group by单字段group by 单字段和多字段时的不同在于key上,以如下例子为例(出处太多):SELECT ui原创 2020-07-29 10:52:11 · 2592 阅读 · 0 评论 -
Hadoop YARN:调度性能优化实践【转载】
原文链接:https://tech.meituan.com/2019/08/01/hadoop-yarn-scheduling-performance-optimization-practice.html背景YARN作为Hadoop的资源管理系统,负责Hadoop集群上计算资源的管理和作业调度。美团的YARN以社区2.7.1版本为基础构建分支。目前在YARN上支撑离线业务、实时业务以及机器学习业务。离线业务主要运行的是Hive on MapReduce, Spark SQL为主的数据仓库作业转载 2020-07-19 19:09:47 · 367 阅读 · 0 评论 -
YARN调度器(Scheduler)详解
转载:https://my.oschina.net/u/4350851/blog/3443167理想情况下,我们应用对Yarn资源的请求应该立刻得到满足,但现实情况资源往往是有限的,特别是在一个很繁忙的集群,一个应用资源的请求经常需要等待一段时间才能的到相应的资源。在Yarn中,负责给应用分配资源的就是Scheduler。其实调度本身就是一个难题,很难找到一个完美的策略可以解决所有的应用场景。为此,Yarn提供了多种调度器和可配置的策略供我们选择。YARN架构如下:ResourceMana.原创 2020-07-19 16:26:30 · 1357 阅读 · 0 评论 -
RCFile和ORCFile
1. RCFileRCFile文件格式是FaceBook开源的一种Hive的文件存储格式,首先将表分为几个行组,对每个行组内的数据进行按列存储,每一列的数据都是分开存储,正是先水平划分,再垂直划分的理念。在存储结构上:如上图是HDFS内RCFile的存储结构,我们可以看到,首先对表进行行划分,分成多个行组。一个行组主要包括:16字节的HDFS同步块信息,主要是为了区分一个HDFS块上的相邻行组;元数据的头部信息主要包括该行组内的存储的行数、列的字段信息等等;数据部分我们可以看出RCFile将原创 2020-07-13 22:17:24 · 485 阅读 · 0 评论 -
Spark shuffle机制演进史及原理说明(sort-based/hash-based/bypassShuffleManager)
spark shuffle 演进的历史Spark 0.8及以前 Hash Based ShuffleSpark 0.8.1 为Hash Based Shuffle引入File Consolidation机制Spark 0.9 引入ExternalAppendOnlyMapSpark 1.1 引入Sort Based Shuffle,但默认仍为Hash Based ShuffleSpark 1.2 默认的Shuffle方式改为Sort Based ShuffleSpark 1.4 引入Tung原创 2020-07-13 17:04:58 · 1371 阅读 · 0 评论 -
spark任务运行流程及内部任务的调度机制
原文链接:https://juejin.im/post/5e7485e76fb9a07caf447f12本文将针对spark中的Driver和Executor讲起,简述了spark的运行流程,部署模式以及内部任务调度机制,希望针对spark任务执行过程进行尽可能好理解的解析1.两个重要的主角 在spark中,有两个重要的主角是绕不开的,driver和executor,他们的结构呈一主多从模式,driver就是那个单身狗,控制欲很强,权利也很大,每天独自一人没别的事,就想法设法的指挥着手下一原创 2020-07-13 12:00:07 · 1288 阅读 · 0 评论 -
hive中控制map和reduce数量的简单实现方法
0、先说结论: 由于mapreduce中没有办法直接控制map数量,所以只能曲线救国,通过设置每个map中处理的数据量进行设置;reduce是可以直接设置的。控制map和reduce的参数set mapred.max.split.size=256000000; -- 决定每个map处理的最大的文件大小,单位为Bset mapred.min.split.size.per.node=1; -- 节点中可以处理的最小的文件大小set mapred.min.spli...原创 2020-07-11 17:17:05 · 1756 阅读 · 2 评论 -
Hive存储格式对比
Apache Hive支持Apache Hadoop中使用的几种熟悉的文件格式,如TextFile,RCFile,SequenceFile,AVRO,ORC和Parquet格式。ClouderaImpala也支持这些文件格式。在建表时使用STORED AS (TextFile|RCFile|SequenceFile|AVRO|ORC|Parquet)来指定存储格式。TextFile每一行都是一条记录,每行都以换行符(\ n)结尾。数据不做压缩,磁盘开销大,数据解析开销大。可结合Gzip、Bzip2使..原创 2020-07-10 22:12:03 · 1163 阅读 · 0 评论 -
Hive之配置使用snappy压缩
https://zhuanlan.zhihu.com/p/103740807https://blog.youkuaiyun.com/xsdxs/article/details/53152599为什么要压缩 在Hive中对中间数据或最终数据做压缩,是提高数据吞吐量和性能的一种手段。对数据做压缩,可以大量减少磁盘的存储空间,比如基于文本的数据文件,可以将文件压缩40%或更多。同时压缩后的文件在磁盘间传输和I/O也会大大减少;当然压缩和解压缩也会带来额外的CPU开销,但是却可以节省更多的I/O和使用更..原创 2020-07-10 19:53:41 · 7018 阅读 · 3 评论 -
MapReduce程序中的经过几次排序?三次
在Map任务和Reduce任务的过程中,一共发生了3次排序1)当map函数产生输出时,会首先写入内存的环形缓冲区,当达到设定的阀值,在刷写磁盘之前,后台线程会将缓冲区的数据划分成相应的分区。在每个分区中,后台线程按键进行内排序2)在Map任务完成之前,磁盘上存在多个已经分好区,并排好序的,大小和缓冲区一样的溢写文件,这时溢写文件将被合并成一个已分区且已排序的输出文件。由于溢写文件已经经过第一次排序,所有合并文件只需要再做一次排序即可使输出文件整体有序。3)在reduce阶段,需要将多个Map任务原创 2020-07-10 11:14:40 · 5396 阅读 · 2 评论 -
Spark的fold()和aggregate()函数
最近在学习spark,理解这两个函数时候费了一些劲,现在记录一下。1. rdd.fold(value)(func)说到fold()函数,就不得不提一下reduce()函数,他俩的区别就在于一个初始值。reduce()函数是这样写的:rdd.reduce(func)参数是一个函数,这个函数的对rdd中的所有数据进行某种操作,比如:val l = List(1,2,3,4)...原创 2019-12-04 12:09:26 · 353 阅读 · 0 评论 -
Flume构建日志采集系统
Flume构建日志采集系统flume,kafka扩展阅读:https://www.cnblogs.com/oubo/archive/2012/05/25/2517751.html一、Flume介绍1.Flume特点Flume是一个分布式的、可靠的、高可用的海量日志采集 、聚合和传输的系统 数据流模型:Source-Channel-Sink 事务机制保证消息传递的可靠性 内...原创 2019-11-28 11:50:24 · 866 阅读 · 1 评论 -
Apache Flume 入门教程
概要Apache Flume 是一个分布式,可靠且可用的系统,用于有效地从许多不同的源收集、聚合和移动大量日志数据到一个集中式的数据存储区。Flume 的使用不只限于日志数据。因为数据源可以定制,flume 可以被用来传输大量事件数据,这些数据不仅仅包括网络通讯数据、社交媒体产生的数据、电子邮件信息等等。Apache Flume 是 Apache 基金会的顶级项目,在加入 Apache...原创 2019-11-28 11:45:57 · 274 阅读 · 0 评论 -
列存储格式Parquet浅析
Apache Parquet是Hadoop生态圈中一种新型列式存储格式,它可以兼容Hadoop生态圈中大多数计算框架(Hadoop、Spark等),被多种查询引擎支持(Hive、Impala、Drill等),并且它是语言和平台无关的。Parquet最初是由Twitter和Cloudera(由于Impala的缘故)合作开发完成并开源,2015年5月从Apache的孵化器里毕业成为Apache顶级项目...原创 2019-11-26 21:21:55 · 1200 阅读 · 0 评论 -
Apache Avro使用入门指南
Avro有C, C++, C#, Java, PHP, Python, and Ruby等语言的实现,本文只简单介绍如何在Java中使用Avro进行数据的序列化(data serialization)。本文使用的是Avro 1.7.4,这是写这篇文章时最新版的Avro。读完本文,你将会学到如何使用Avro编译模式、如果用Avro序列化和反序列化数据。一、准备项目需要的jar包 文本...转载 2019-11-26 21:09:10 · 826 阅读 · 0 评论 -
Avro系列之详细介绍(1)
Avro是Hadoop的一个子项目,也是Apache中的一个独立项目,它是一个基于二进制数据传输高性能的中间件。在Hadoop的其他项目中(Hbase,Hive)的客户端与服务端的数据传输中被大量采用。听上去很给力啊?!Avro是一个数据序列化的系统,它可以将数据结构或对象转化成便于存储或传输的格式,Avro设计之初就定位为用来支持数据密集型应用,适用于远程或本地大规模数据的存储于交换,Avr...原创 2019-11-26 21:02:08 · 1381 阅读 · 0 评论 -
HIVE针对删除事件的支持
Delete操作在MySQL中非常常见,由于Hive不支持Delete,如果想把MySQL中删除的数据在Hive中删掉,需要采用“迂回”的方式进行。对需要处理Delete事件的Merge流程,采用如下两个步骤:首先,提取出发生了Delete事件的数据,由于Binlog本身记录了事件类型,这一步很容易做到。将存量数据(表A)与被删掉的数据(表B)在主键上做左外连接(Left outer jo...原创 2019-09-06 15:11:50 · 702 阅读 · 0 评论 -
HIVE中常用的日期函数
1、to_date:日期时间转日期函数select to_date('2019-09-02 11:34:12');输出:2019-09-022、from_unixtime:转化unix时间戳到当前时区的时间格式select from_unixtime(1323308943,’yyyyMMdd’);输出:20111208from_unixtime(unix_timestamp...原创 2019-09-28 17:05:44 · 1465 阅读 · 0 评论 -
hadoop 一致性模型,确保断电不丢数据(hflush() 和 hsync())
原文链接:https://www.infoq.cn/article/large-data-processing-ensuring-data-not-lost-when-power-off在 Hadoop 2.0.2-alpha 之前,HDFS 在机器断电或意外崩溃的情况下,有可能出现正在写的数据丢失的问题。而最近刚发布的 CDH4 中 HDFS 在 Client 端提供了 hsync() 的方...原创 2019-10-11 15:01:24 · 1999 阅读 · 0 评论 -
hadoop 通过distcp并行复制。
hadoop权威指南第四版Hadoop自带一个有用程序distcp,该程序可以并行从Hadoop文件系统中复制大量数据,也可以系那个大量数据复制到Hadoop中。 Distcp的一种用法是替代 hadoop fs -cp。例如,我们可以将文件复制到另一个文件中:% hadoop distcp file1 file2也可以复制目录:% hadoop distcp...原创 2019-10-11 15:30:27 · 1203 阅读 · 0 评论 -
YARN作业运行机制及三种资源调度器(FIFO/容量/公平调度器)
原 Hadoop MapReduce 框架的问题从上图中可以清楚的看出原 MapReduce 程序的流程及设计思路:首先用户程序 (JobClient) 提交了一个 job,job 的信息会发送到Job Tracker中,Job Tracker 是 Map-reduce 框架的中心,他需要与集群中的机器定时通信 (heartbeat), 需要管理哪些程序应该跑在哪些机器上,需要管理...原创 2019-10-11 16:53:09 · 4602 阅读 · 1 评论 -
hadoop 分布式集群中HDFS系统的各种角色(namenode datanode SecondaryNameNode)
NameNode学习目标理解 namenode 的工作机制尤其是元数据管理机制,以增强对 HDFS 工作原理的 理解,及培养 hadoop 集群运营中“性能调优”、“namenode”故障问题的分析解决能力问题场景1、Namenode 服务器的磁盘故障导致 namenode 宕机,如何挽救集群及数据?2、Namenode 是否可以有多个?namenode 内存要配置多大?nam...原创 2019-10-11 17:09:50 · 2948 阅读 · 0 评论 -
HDFS的高级API操作 各种java 操作demo【转载】
原文链接:https://www.cnblogs.com/frankdeng/p/9061449.html一 HDFS客户端环境准备1.1 jar包准备1)解压hadoop-2.7.6.tar.gz到非中文目录2)进入share文件夹,查找所有jar包,并把jar包拷贝到_lib文件夹下3)在全部jar包中查找sources.jar,并剪切到_source文件夹。4)在全部ja...转载 2019-10-11 17:20:09 · 401 阅读 · 0 评论 -
Hadoop 中的调度
原文链接:https://www.ibm.com/developerworks/cn/opensource/os-hadoop-scheduling/index.htmlHadoop 是一个通用系统,可以对一组分散的节点上的数据进行高性能处理。这样的定义也说明,Hadoop 是一个多任务系统,它可以同时为多个用户、多个作业处理多个数据集。这种多处理的能力也意味着 Hadoop 能以更优的方式将...原创 2018-08-25 22:05:18 · 969 阅读 · 0 评论