
Hadoop
K. Bob
多读书,多睡觉;少吃零食,多运动。
展开
-
MapReduce Join
Reduce Join Map端的主要工作:为来自不同表(文件)的key/value 打标记以区别不同来源的记录,比如:tag=0表示来自文件File1,tag=2表示来自文件File2。然后用连接字段作为 key,其余部分和新加的标记作为 value,然后进行输出。 Reduce端的主要工作:在 Reduce端,以连接字段作为key 的分组已经完成,我们只需要在每一个分组当中将那些来源于不同文件的记录(在 map 阶段已经打标记)分开,最后进行合并。 但是,此方法有缺点:1、Map阶段没有对数原创 2020-09-30 11:51:47 · 249 阅读 · 0 评论 -
Map Task/Reduce Task任务模型
Hadoop的MapReduce的Map Task和Reduce Task都是进程级别的Spark Task则是基于线程模型的多进程模型和多线程模型多进程模型和多线程模型,指的是同一个节点上多个任务的运行模式。无论是MapReduce还是Spark,整体上看都是多进程的:MapReduce应用程序是由多个独立的Task进程组成的;Spark应用程序的运行环境是由多个独立的Executor进程(每个应用程序使用一个Executor进程)构建的临时资源池构成的多进程模型便于细粒度控制每个任务占用的资原创 2020-09-26 15:48:46 · 707 阅读 · 0 评论 -
Hadoop机架感知
出于保证数据安全性和数据传输的高效性的平衡考虑,HDFS希望不同节点之间的通信能够尽量发生在同一个机架之内,而不是跨机架和跨机房。同时,NameNode 在分配 Block 的存储位置的时候,会尽可能把数据块的副本放到多个机架甚至机房中,防止机架出现事故或者机房出现事故时候的数据丢失问题发生。 这就是 HDFS 的机架感知,首先机房和机架的信息是需要用户自己配置的,Hadoop对机架的感知并非是自适应的,而是需要人为的告知Hadoop哪台机器属于哪个机架,这样在Hadoop的NameNode启动初始原创 2020-09-18 23:48:33 · 994 阅读 · 0 评论 -
Hadoop 文件格式&数据压缩算法
数据压缩优点和缺点 压缩技术能够有效减少底层存储系统(HDFS)读写字节数,提高网络带宽和磁盘空间的效率。在 Hadoop下,尤其是数据规模很大和工作负载密集的情况下,使用数据压缩显得非常重要。在这种情况下,IO操作和网络数据传输要花大量的时间。此外,Shuffle与 Merge过程同样也面临着巨大的IO压力。压缩策略和原则 压缩是提高 Hadoop运行效率的一种优化策略通过对 Mapper、 Reducer运行过程的数据进行压缩,以减少磁盘IO,提高MR程序运行速度。注意:釆用压缩技术减少了磁盘原创 2020-09-01 22:06:48 · 722 阅读 · 0 评论 -
HDFS保证数据一致性与容错机制
HDFS保证数据一致性HadoopNameNode保证元数据的一致性校验和HA高可用冗余副本机架感知心跳机制安全模式校验和回收站元数据保护快照机制Hadoop HDFS作为分布式文件系统在分布式环境下如何保证数据一致性。HDFS中,存储的文件将会被分成若干的大小一致的block分布式地存储在不同的机器上,需要NameNode节点来对这些数据进行管理,存储这些block的结点称为DataNod...原创 2020-05-07 22:13:39 · 3116 阅读 · 1 评论 -
HDFS Block块探讨
在HDFS中存储数据是以块(block)的形式存放在DataNode中的,块(block)的大小可以通过设置dfs.blocksize来实现;在Hadoop2.x的版本中,文件块的默认大小是128M,老版本中默认是64M;寻址时间:HDFS中找到目标文件块(block)所需要的时间。原理:文件块越大,寻址时间越短,但磁盘传输时间越长文件块越小,寻址时间越长,但磁盘传输时间越短HDFS...原创 2020-02-13 13:35:46 · 416 阅读 · 0 评论 -
MapReduce Task数目划分
Map任务的个数 Mapper数据过大的话,会产生大量的小文件,过多的Mapper创建和初始化都会消耗大量的硬件资源。Mapper数太小,并发度过小,Job执行时间过长,无法充分利用分布式硬件资源。Mapper数量由什么决定?输入文件数目输入文件的大小配置参数 输入目录中文件数量决定多少个Map会被运行起来,应用针对每一个分片运行一个Map。对于每一个输入的文件会有一个map ...原创 2019-12-20 23:26:19 · 1036 阅读 · 0 评论 -
MapReduce排序总结
【1】Hadoop默认的排序算法,只会针对key值进行排序,按照字典顺序排序【2】二次排序,在一个数据文件中,首先按照key排序。在key相同的情况下,再按照value大小排序。难度在于要同时参考两列的数据,可以将一行中的两列值封装到bean中。实现WritableComparable接口,重写compareTo进行排序,指定比较规则,实现二次排序,具体可参见博客【3】全局排序1、使用一个R...原创 2019-12-20 11:33:58 · 1075 阅读 · 1 评论 -
MapReduce工作流程分析
从整体上,MapReduce框架可以分为五个不同实体:客户端:提交 MapReduce jobYarn 资源管理器(ResouceManager):协调集群计算资源的分配。包含主要的组件:定时调用器(Scheduler)以及应用管理器(ApplicationManager)定时调度器(Scheduler):从本质上来说,定时调度器就是一种策略。当 Client 提交一个任务的时候,它会根据...原创 2019-12-19 00:04:05 · 521 阅读 · 0 评论 -
客户端和NameNode、DataNode通信过程
client和NameNode之间是通过RPC通信DataNode和NameNode之间是通过RPC通信client和DataNode之间是通过简单的Socket通信以HDFS读写文件为例: NameNode主要负责管理文件系统的命名空间、集群配置信息和存储块的复制等。NameNode会将文件系统的Meta-data存储在内存中,这些信息主要包括了文件信息、每一个文件对应的文件块的信...原创 2019-12-18 09:41:56 · 3014 阅读 · 0 评论 -
Hadoop——HA
Hadoop 系统架构Hadoop1.x和Hadoop2.x 架构Hadoop 1.x之前,其官方架构如图所示:从图中可看出,1.x版本之前只有一个Namenode,所有元数据由唯一的Namenode负责管理,当这个NameNode挂掉时整个集群基本也就不可用。Hadoop 2.x的架构如图所示:2.x版本中,HDFS架构解决了单点故障问题,即引入双NameNode架构,同时借助共享存...原创 2019-12-15 20:33:22 · 448 阅读 · 0 评论 -
HDFS读写原理
HDFS写流程客户端向NameNode发出写文件请求检查是否已存在文件、检查权限。若通过检查,直接先将操作写入EditLog,并返回输出流对象。(注:WAL,write ahead log。先写Log,再写内存,因为EditLog记录的是最新的HDFS客户端执行所有的写操作。如果后续真实写操作失败了,由于在真实写操作之前,操作就被写入EditLog中了,故EditLog中仍会有记录,不用担...原创 2019-12-15 18:58:16 · 607 阅读 · 0 评论 -
Hadoop1.x与Hadoop2.x的区别
Hadoop1.x与Hadoop2.x的区别1、变更介绍 Hadoop2.x相比较于Hadoop1.x来说,HDFS的架构与MapReduce的都有较大的变化,且速度上和可用性上都有了很大的提高,Hadoop2中有两个重要的变更:HDFS的NameNodes可以以集群的方式布署,增强了NameNodes的水平扩展能力和可用性MapReduce将JobTracker中的资源管理及任务生命...原创 2019-12-15 16:27:18 · 2533 阅读 · 0 评论 -
MapReduce Shuffle及调优
关于MapReduce详细解释参见博客 Mapper的输出排序、然后传送到Reducer的过程,称为Shuffle,Shuffle过程是MapReduce的核心内容。Map端Shuffle 在Map端的Shuffle过程是对Map的结果进行分区、排序、分割,然后将属于同一分区的输出合并在一起并写在磁盘上,最终得到一个分区有序的文件。分区有序的含义是Map输出的键值对按分区进行排列,具有相...原创 2019-12-09 00:33:51 · 577 阅读 · 0 评论 -
Hadoop小文件问题
无论是HDFS还是MapReduce,对于处理数量庞大小文件都有损效率。但是,实际中,我们又难免面临处理大量小文件的场景,此时,就需要有相应解决方案。小文件的优化可以分为以下几种: 1、在数据采集的时候,就将小文件或小批数据合成大文件再上传HDFS 2、在业务处理之前,在HDFS上使用MapReduce程序对小文件进行合成 3、在MapReduce处理时,可采用combineInpu...原创 2019-05-08 21:21:48 · 1637 阅读 · 0 评论 -
Hadoop序列化和反序列化
最近在做项目的时候碰到相关的问题,写一些学习之后的体会自定义OutputFormatFileSystem程序计数器自定义OutputFormat 我们可以自定义Partitioner、GroupComparator,同样我们也可以规定自己的结果输出类——OutputFormat。在MapReduce中,MapTask或者ReduceTask在最终输出时,其流程为先调用OutputFormat的...原创 2019-05-08 14:10:32 · 1787 阅读 · 0 评论 -
Hadoop数据倾斜问题
数据倾斜的解决方案与DistributedCache什么是数据倾斜如何解决什么是数据倾斜数据倾斜:由于大量具有相同key的(k-v)键值对被partition分配到一个reduce分区里,map /reduce程序执行时,reduce节点大部分执行完毕,但是有一个或者几个reduce节点运行很慢,导致整个程序的处理时间很长,这是因为某一个key的条数比其他key多很多(有时是百倍或者千倍之多)...原创 2019-05-08 11:40:32 · 1479 阅读 · 0 评论 -
Hadoop自定义排序、分区
实际中往往我们规定一种排序方法,并且为了避免数据倾斜情况,需要我们自定义分区。这里我们讨论将一个城市四年来的温度按年份升序排序,同一年份的温度按照降序排序。自定义排序定义一个封装对象定义排序方法自定义分区自定义分区自定义分组主函数自定义排序定义一个封装对象该对象需要实现WritableComparable接口。public class MyClass implements Writable...原创 2019-05-02 16:39:45 · 1932 阅读 · 0 评论 -
Hadoop疑难杂问
我变强了,也变秃了 ---题记安装jdk下载Hadoop及配置Hadoop环境变量关闭防火墙安装jdk若在安装过程中遇到类似问题bash:javac:command not found朋友需要重新安装jdk。【1】卸载原OPENJDKjava -version 检测原OPENJDK版本rpm -qa | grep java 进一步查看JD...原创 2019-04-11 20:54:30 · 1596 阅读 · 0 评论 -
Hadoop常用命令
Hadoop Shell命令更详细说明,朋友可以参阅文档。【1】cathadoop fs -cat URI [URI …] 将路径指定文件的内容输出到stdout。返回值:成功返回0,失败返回-1。示例:hadoop fs -cat hdfs://host1:port1/file1 hdfs://host2:port2/file2【2】chmodhadoop fs -chmod [...原创 2019-04-12 22:50:05 · 2020 阅读 · 0 评论