hadoop
文章平均质量分 85
hadoop
spark man
crazy for coding
展开
-
mapJoin与reduceJoin
mapreduce中可以实现map端的join以及reduce端的join,我们看下有什么区别。mapJoin与reduceJoin数据准备reduce joinmap joinhive的map join测试数据准备有一张订单表(order):1001 01 11002 02 21003 03 31004 01 41005 02 51006 03 6三列对应的字段分别是订单ID,产品ID以及产品数量。然后还有一张产品表(pd):01 小米02 华为03 格力对应的字段分别是原创 2021-10-15 20:27:08 · 746 阅读 · 0 评论 -
hdfs上传文件
hdfs写数据流程将文件添加到目录树将数据写入队列机架感知DN写数据、客户端收到应答将文件添加到目录树假设我们有一段创建文件并写入数据的代码: FileSystem fileSystem; @Before public void init() throws Exception{ String user = "ocean"; Configuration configuration = new Confi![image.png](http://oce原创 2021-10-14 13:40:31 · 1451 阅读 · 0 评论 -
namenode的启动
我们简单看下namenode启动需要经历的步骤。namenode启动要做什么启动9870服务端口加载镜像文件和编辑日志文件初始化RPC服务启动资源检查检查心跳检查是否进入安全模式启动9870服务端口因为namenode是一个进程,所以找到它的main方法:进入createNameNode:找到new NodeNode(conf),进去。找到初始化方法,进入:他要获取绑定的地址,我们希望知道这个地址是什么。看看这个默认的地址:端口号是9870。这就是我们经常用的namenode的原创 2021-10-14 12:24:19 · 4183 阅读 · 0 评论 -
MapReduce之Reduce
我们接着MapReduce之ShuffleReduceCopyMergeReduceCopy走到这里,我们就进入到reduce了。reduce有三个明确的阶段:copy,sort,reduce。在初始化ShuffleConsumerPlugin的时候,他需要创建一个MergeManager:这个MergeManager就是用来做文件合并的。接下来我们使用localFetcher去拉取map的输出文件。在此我们将获取file.out文件和file.out.index文件。我们将原创 2021-10-14 12:05:58 · 414 阅读 · 0 评论 -
MapReduce之Shuffle
承接上文MapReduce之Map阶段。我们需要将map后的数据往外写。shuffle收集数据排序和溢写合并收集数据我们写出的数据是("I", 1)。我们需要往kvbuffer中写key和value。写key的时候我们既要写I,又要写它的位置,不然怎么能找到它呢?写的时候,如果剩余内存不够用了,就会发生溢写:写I之前,我们已经有1这个位置了:写了I之后就有了它的ASCII值了:接着写1这个值,因为我们的1是Long,占8个字节,所以会占用kvbuffer的8个位置:此时我们原创 2021-10-14 11:03:19 · 141 阅读 · 0 评论 -
MapReduce之Map阶段
MapReduce阶段分为map,shuffle,reduce。map进行数据的映射,就是数据结构的转换,shuffle是一种内存缓冲,同时对map后的数据分区、排序。reduce则是最后的聚合。此文探讨map阶段的主要工作。map的工作代码介绍split启动mapTask代码介绍我们还是准备word count的代码:maper:public class WordCountMapper extends Mapper<LongWritable, Text, Text, LongWrita原创 2021-10-14 10:32:04 · 2791 阅读 · 0 评论 -
namenode的fsimage与edits文件
引入hadoop集群中,namenode管理了元数据。那么,元数据存储在哪里呢?如果是磁盘中,必然效率过低,如果是内存中,又会不安全。所以元数据存储在内存中,但是有一个备份文件fsimage在磁盘。这就防止了断电元数据丢失的问题。现在内存中的元数据增加之后,需要不断同步fsimage吗?这样又很没有效率。但你又必然要更新元数据,所以,可以将追加的操作写入一个文件edits。fsimage与edits一起加载到内存中,就会得到所有的元数据。合并元数据一旦变得庞大,加载到内存就会很慢。所以,还需要原创 2021-10-14 09:21:56 · 586 阅读 · 0 评论