随笔分类 -  Hadoop学习笔记

摘要:HDFS的读取过程 HDFS的读取流程大致有以下几个步骤: (1)客户端通过调用FileSystem对象的open()来打开希望读取的文件。对于HDFS平台来说,这个对象是DistributedFileSystem类的是一个实例,所以实际调用的是DistributedFileSystem对象的ope 阅读全文
posted @ 2021-06-18 18:21 有心有梦 阅读(2313) 评论(0) 推荐(0)
摘要:一、流程源码分析 ​ 在xxxJobRunner类中有一个内部类ReduceTaskRunnable,该类是一个专门执行ReduceTask任务的线程类,其中的run方法就是开始执行reduce任务的方法,在run方法的内部,以下代码标志reduce任务开始执行: ReduceTask reduce 阅读全文
posted @ 2021-02-17 16:20 有心有梦 阅读(254) 评论(0) 推荐(1)
摘要:Job提交流程源码分析 1、提交作业到集群,然后等待作业完成 boolean res = job.waitForCompletion(true); 2、将Job提交到集群中,执行此方法说明此时Job尚未运行 public boolean waitForCompletion(boolean verbo 阅读全文
posted @ 2021-02-14 12:20 有心有梦 阅读(490) 评论(0) 推荐(0)
摘要:脚本一:集群群发脚本 #!/bin/bash #1 获取输入参数个数,如果没有参数,直接退出 pcount=$# if((pcount==0)); then echo no args; exit; fi #2 获取文件名称 p1=$1 fname=`basename $p1` echo fname= 阅读全文
posted @ 2020-07-31 09:05 有心有梦 阅读(243) 评论(0) 推荐(0)
摘要:问题: 查询user_low_carbon表中每日流水记录,条件为: 用户在2017年,连续三天(或以上)的天数里,每天减少碳排放(low_carbon)都超过100g的用户低碳流水。 需要查询返回满足以上条件的user_low_carbon表中的记录流水。例如用户u_002符合条件的记录如下,因为 阅读全文
posted @ 2020-07-06 15:57 有心有梦 阅读(324) 评论(0) 推荐(0)
摘要:一、收集 执行NewOutputCollector对象的write方法就开启了对map输出数据的收集过程: ​ collector是一个MapOutputCollector类型的变量,它是实际执行收集数据功能的对象载体: private final MapOutputCollector<K,V> c 阅读全文
posted @ 2020-06-08 18:21 有心有梦 阅读(193) 评论(0) 推荐(0)
摘要:MapTask类继承自Task类,负责Map阶段的数据处理流程,它最主要的方法就是run(),这个方法用于执行当前的Map阶段的任务。作为命名作业的一部分运行此任务。此方法在子进程中执行,是调用用户提供的map,reduce等方法的方法。在这个run方法中,首先会发送task任务报告,与父进程做交流 阅读全文
posted @ 2020-06-07 15:14 有心有梦 阅读(264) 评论(0) 推荐(0)
摘要:排序是MapReduce框架中重要的操作之一,其中MapTask和ReduceTask都会对数据按照key进行排序,这是Hadoop默认进行的操作。任何应用程序中的数据均会被排序,而不管逻辑上是否需要。一个MapReduce程序涉及了多种排序,而且相同类型的排序可能还进行了多次。其中,我们也可以自行 阅读全文
posted @ 2020-05-30 17:42 有心有梦 阅读(405) 评论(0) 推荐(0)
摘要:分区是MapReduce框架的Map阶段进行数据处理之后,将数据写出时需要进行的一项操作,分区的数量决定了ReduceTask的数量,也决定了最终的输出文件有多少个。其中,Hadoop是有默认的分区方法的,即HashPartitioner类是默认的分区类,该类的源码如下: public class 阅读全文
posted @ 2020-05-30 16:23 有心有梦 阅读(464) 评论(0) 推荐(0)
摘要:除了上一篇提到的通过在客户端调用封装好的API可以直接堆HDFS进行读写操作,那如果想要自己实现上述的API操作也是可以的,就是通过I/O流的方式实现对HDFS的读和写,其中涉及的几个类有: org.apache.hadoop.fs.FSDataOutputStream org.apache.had 阅读全文
posted @ 2020-05-24 17:49 有心有梦 阅读(254) 评论(0) 推荐(0)
摘要:org.apache.hadoop.fs.FileSystem是Hadoop中一个相当通用的文件系统的抽象基类,它是一个面向最终用户的接口类。应该将所有可能使用Hadoop分布式文件系统的用户代码编写为使用一个FileSystem对象。Hadoop DFS是一种多机系统,显示为单个磁盘,由于其容错能 阅读全文
posted @ 2020-05-23 17:39 有心有梦 阅读(224) 评论(0) 推荐(0)
摘要:hdfs-site.xml是HDFS的配置文件,其中包含了各种对HDFS集群的设置参数,比如集群中存储文件副本的数量,namenode辅助节点的地址等。对于hdfs-site.xml中的属性值,我们可以在不同的地方进行设置, 第一种是通过HDFS客户端代码进行对属性值进行设置,这是优先级最高的方式; 阅读全文
posted @ 2020-05-21 17:13 有心有梦 阅读(1268) 评论(0) 推荐(0)
摘要:记录一下常用的HDFS的Shell操作命令,它们基本上与Linux命令相同,只不过使用的时候书写需要多点格式。 一定要先给hadoop添加了环境变量,才能像我下面这样在每个命令前面写上“hadoop fs”,当然也可以使用“hdfs dfs”作为前缀,但是使用这个前缀的时候必须在hadoop的根据录 阅读全文
posted @ 2020-05-18 19:06 有心有梦 阅读(480) 评论(0) 推荐(0)
摘要:想要搭建一个能够互相通信的集群并且能够避免每次IP的动态变化对我们的集群造成不必要的影响,给我们的集群分配固定的IP是十分必要的,而且为了方便,我们选择NAT网络模式,在这种模式下,外部机器访问不了我们内部的某个虚拟机,但是我们内部的虚拟机可以访问外部的IP。 前提条件: 1.你电脑的CPU开启了对 阅读全文
posted @ 2020-05-17 16:17 有心有梦 阅读(177) 评论(0) 推荐(0)
摘要:1.将下载的hadoop的jar包解压到自己想要存放的目录下,然后再hadoop的根目录下复制它的完整路径 2.配置环境变量,创建一个系统变量“HADOOP_HOME”,变量值就是hadoop的路径 3.将这个变量添加到Path变量中: 4.保存后退出 5.打开cmd命令行窗口,输出命令“hadoo 阅读全文
posted @ 2020-05-06 12:12 有心有梦 阅读(682) 评论(0) 推荐(0)