Hadoop相关
bujiujie8
这个作者很懒,什么都没留下…
展开
-
YARN中的调度器
前面说了YARN与MapReduce 1的区别,这篇就来说说YARN是怎么为任务调度资源的.YARN中有三种调度器:FIFO(先进先出)调度器,容量调度器,公平调度器.需要注意的是,这三种调度器没有哪种最好的说法,在不同的环境下,每个都会体现出它的优点.下面就分别来说一说这三种调度器.FIFO调度器在Java中,我们知道有一个接口叫做Queue,即队列,Queue就遵循了先进先出的原则...原创 2019-01-31 14:58:17 · 1083 阅读 · 0 评论 -
Hadoop的序列化(下)--非数值类型
这篇来说说非数值类型.TextHadoop中没有StringWritable或CharWritable,取而代之的是Text类型,Text采用UTF-8编码.Text怎么序列化?对于英文和符号来说比较简单,直接用ASCII码就可以了: String hadoop = "hadoop"; String java = "Java"; St...原创 2019-02-02 21:34:16 · 223 阅读 · 0 评论 -
Hadoop的序列化(上)--数值类型
序列化(serialization),是指将结构化对象转换为字节流以便网络传输或存储至磁盘,反序列化(deserialization)就是把字节流转换为结构化对象的过程.Hadoop为什么需要这个过程,因为在大型集群中,网络带宽资源是非常宝贵的,能省则省.在Hadoop中,系统中的多个节点上进程间的通信是通过"远程过程调用"(RPC)是限定.RPC协议将消息序列化成二进制流之后发送到远程节...原创 2019-02-02 13:24:42 · 391 阅读 · 0 评论 -
HDFS的一些杂谈
P.S.:主要内容均参考<Hadoop权威指南 第4版>,自己会做少许润色. Hadoop带有一个自己的文件系统:HDFS(Hadoop DirstributedFileSystem,Hadoop分布式文件系统), HDFS在设计上很大程度上借鉴了谷歌的Google File System(GFS).在谷歌描述GFS的论文中,可以看到很多HDFS的影子.比如,GFS论文的关键词...原创 2019-01-19 15:24:23 · 303 阅读 · 0 评论 -
HDFS的重要概念
这里按照<权威指南>的内容来描述HDFS的一些重要概念. 1.数据块咱们的电脑硬盘也有分块一说,之前默认是512字节,现在是4KB.但是有一个问题,假如我使用的是4KB的分块,假如一个数据只有100字节大小,在我们的电脑上,这个数据也占用4KB空间,但是实际大小依旧是100字节.在HDFS上,数据块的大小默认为128MB.你可能会说,这么大的块,要是只存储100字节的数...原创 2019-01-19 20:29:27 · 270 阅读 · 0 评论 -
通过Java代码对HDFS进行读取操作
这里主要是利用Hadoop提供的API来操作,在本地编写代码,操作集群上的HDFS.本篇介绍的是若干从HDFS读取文件的操作.工具:IntelliJ IDEA Community Edition 2018.1.3 1.使用java.net.URL使用此方法的话,需要进行一些其他操作.此处读取的是hdfs-site.xml这个配置文件,取出前100字节并输出.import ...原创 2019-01-20 12:45:17 · 5026 阅读 · 1 评论 -
通过Java代码对HDFS进行写入与查看操作
这篇来介绍一下往HDFS写数据与查看文件信息的操作.1.读取本地文件,并写入至HDFS.import org.apache.hadoop.conf.Configuration;import org.apache.hadoop.fs.*;import org.apache.hadoop.io.IOUtils;import java.io.*;import java.net.URI...原创 2019-01-20 13:40:49 · 4965 阅读 · 0 评论 -
HDFS读取文件的流程
这里参考了<Hadoop 2.X HDFS源码剖析>(徐鹏),<大数据处理系统:Hadoop源代码情景分析>(毛德操).主要是在<权威指南>的基础上扩展一些.客户端通过调用FileSystem对象的open()来打开希望读取的文件,对HDFS来说,这个对象是DistributedFileSystem.接下来我们来看看这个FileSystem.open()...原创 2019-01-20 20:42:22 · 1764 阅读 · 0 评论 -
HDFS的写文件流程
这篇来分析一下HDFS写文件的流程.首先还是客户端调用DistributedFileSystem类中的方法,写文件调用的是create().public FSDataOutputStream create(......) throws IOException { statistics.incrementWriteOps(1); Path absF = fixRelativ...原创 2019-01-23 12:08:28 · 546 阅读 · 0 评论 -
MapReduce的介绍
MapReduce是一种可用于数据处理的编程模型.前面的博客说过,MapReduce是基于谷歌的同名论文,下面我来具体的说说MapReduce是做什么的,又是由什么组成的.一个MapReduce分为两个阶段,也就是名字中的两个单词:map阶段与reduce阶段.简略流程是:map以(key, value)的形式输入数据并根据编写的map()处理数据,输出为(key, value)的形...原创 2019-01-25 14:10:04 · 2111 阅读 · 0 评论 -
如何编写一个MapReduce程序
这篇来说说编写一个MapReduce程序都需要做哪些事情.大体上要编写三个模块:map类,reduce类,以及驱动.Map我们编写的map类需要继承org.apache.hadoop.mapreduce.Mapper.在打开Mapper类之后,会看到几个方法以及一个类:public class Mapper<KEYIN, VALUEIN, KEYOUT, VALUEOUT&...原创 2019-01-28 13:10:40 · 3249 阅读 · 0 评论 -
MapReduce作业运行流程
在Hadoop执行MapReduce任务之前,需要我们对作业进行提交.我们在通过开发工具提交之后,Hadoop做了哪些工作?这篇就来看看Hadoop在我们提交MapReduce作业之后都做了什么.大体分为以下几个阶段:作业的提交,作业的初始化,作业的分配,作业的执行,以及作业的完成.中间穿插了对任务状态的更新过程,及最终的任务完成.下面就分别来介绍一下这几个阶段具体都做了什么.作业的提交...原创 2019-01-29 13:17:04 · 1255 阅读 · 0 评论 -
YARN与MapReduce 1
这篇博客来说一下YARN.YARN是在Hadoop 2中加入的新特性,本来是为了改善Hadoop 1中MapReduce的实现,但是发现其有足够的通用性:可以应用于很多分布式计算框架.这里暂时把Hadoop 1中的MapReduce成为MapReduce 1,来看看它与YARN的对比.在Hadoop 2中,我们用start-dfs.sh启动HDFS,start-yarn.sh启动YAR...原创 2019-01-31 11:40:54 · 288 阅读 · 0 评论 -
MapReduce的核心--Shuffle
这篇来说说shuffle的流程.map端首先存在一个环形缓冲区,所有map处理完毕的KV对就输出到这里.体现在源码中就是:public class MapTask.MapOutputBuffer byte[] kvbuffer; 一会再说说这个kvbuffer,先来说说流程.首先map端的输出依次存储至kvbuffer,kvbuffer分为两部分,一部分存储kv相关的...原创 2019-02-09 21:46:30 · 358 阅读 · 0 评论