摘要:
读文件 读文件时内部工作机制参看下图: 客户端通过调用FileSystem对象(对应于HDFS文件系统,调用DistributedFileSystem对象)的open()方法来打开文件(也即图中的第一步),DistributedFileSystem通过RPC(Remote Procedure Call)调用询问NameNode来得到此文件最开始几个block的文件位置(第二步)。对每一个block来说,namenode返回拥有此block备份的所有namenode的地址信息(按集群的拓扑网络中与客户端距离的远近排序,关于在Hadoop集群中如何进行网络拓扑请看下面介绍)。如果客户端本身就是.. 阅读全文
摘要:
在这一节我们要深入了解Hadoop的FileSystem类——这是与与hadoop的文件系统交互的重要接口。虽然我们只是着重于HDFS的实现,但我们在编码时一般也要注意代码在FileSystem不同子类文件系统之间的可移植性。这是非常有用的,比如说你可以非常方便的直接用同样的代码在你的本地文件系统上进行测试。使用hadoop URL读数据 从hadoop文件系统中读取文件的最简单的方法之一便是使用java.net.URL对象来打开一个欲从中读取数据的流(stream)。通常情况下的编程风格如下:1 InputStream in = null;2 try {3 in = new U... 阅读全文
摘要:
当某个数据集大大小超出单个物理机的存储能力时,我们可以考虑使用集群。管理跨网络机器存储的文件系统叫做分布式文件系统(Distributed FileSystem)。随着多节点的引入,相应的问题也就出现了,例如其中最重要的一个问题就是如何保证在某个节点失败的情况下数据不会丢失。Hadoop中有一个核心子项目HDFS(Hadoop Distributed FileSystem)就是用来管理集群的存储问题的,当然在Hadoop中不仅仅只能使用HDFS,Hadoop中有一个通用的抽象的文件系统概念,这样可以使Hadoop在不同种类的文件系统下运作,例如Hadoop可以与Amazon的S3文件系统集.. 阅读全文
摘要:
(1).Hypervisor是一种运行在基础物理服务器和操作系统之间的中间软件层,可允许多个操作系统和应用共享硬件。也可叫做VMM( virtual machine monitor ),即虚拟机监视器。Hypervisors是一种在虚拟环境中的“元”操作系统。他们可以访问服务器上包括磁盘和内存在内的所有物理设备。Hypervisors不但协调着这些硬件资源的访问,也同时在各个虚拟机之间施加防护。当服务器启动并执行Hypervisor时,它会加载所有虚拟机客户端的操作系统同时会分配给每一台虚拟机适量的内存,CPU,网络和磁盘。 阅读全文
摘要:
云服务”现在已经快成了一个家喻户晓的词了。如果你不知道PaaS, IaaS 和SaaS的区别,那么也没啥,因为很多人确实不知道。 “云”其实是互联网的一个隐喻,“云计算”其实就是使用互联网来接入存储或者运行在远程服务器端的应用,数据,或者服务。 任何一个使用基于互联网的方法来计算,存储和开发的公司,都可以从技术上叫做从事云的公司。然而,不是所有的云公司都一样。不是所有人都是CTO,所以有时候看到云技术背后的一些词可能会比较头疼。云也是分层的 任何一个在互联网上提供其服务的公司都可以叫做云计算公司。其实云计算分几层的,分别是Infrastructure(基础设施)-as-a-Servi... 阅读全文
摘要:
Hadoop为MapReduce提供了一个允许你使用除了java以外的语言编写map,reduce函数的API:Hadoop Streaming使用标准流(standard streams)作为Hadoop和应用程序之间传输数据的接口。所以你可以使用任何语言编写map,reduce函数,只要它能够从标准输入流(stdin)中读入数据,以及向标准输出流(stdout)中写输出数据就行。 Streaming本质上就非常适合处理文本数据。Map输入数据通过stdin传输到map函数中,map函数再一行一行的处理这些输入数据,然后被处理过的以tab分割的键值对被写到stdout中去,reduce... 阅读全文
摘要:
1 概述本文档目的在于对namenode中各种关键的数据结构进行剖析和解释,以方便更好的对namenode的各种处理逻辑和代码结构进行理解。其中包括对namenode中Namenode和FSNameSystem的程序代码结构,FSDirectory,BlocksMap, CorruptReplicationMap,excessReplicateMap, UnderReplicatedBlocks,PendingReplictiondBlocks等数据结构的介绍。1.1 代码结构1.1.1 NameNode在HDFS中,namenode的服务提供整个HDFS文件系统的namespace管理,块管 阅读全文
摘要:
很多MapReduce程序受限于集群上可用的带宽,所以它会尽力最小化需要在map和reduce任务之间传输的中间数据。Hadoop允许用户声明一个combiner function来处理map的输出,同时把自己对map的处理结果作为reduce的输入。因为combiner function本身只是一种优化,hadoop并不保证对于某个map输出,这个方法会被调用多少次。换句话说,不管combiner function被调用多少次,对应的reduce输出结果都应该是一样的。 下面我们以学习笔记(一)中的例子来加以说明,假设1950年的天气数据读取是由两个map完成的,其中第一个map的输出... 阅读全文
摘要:
一个MapReduce作业是一个用户希望被执行的工作单元:它包括输入数据,MapReduce程序和配置信息。Hadoop通过把作业分成任务(tasks,分为map tasks 和reduce tasks两种)的形式来运行该作业。 有两种节点用来控制每个作业的执行:jobtracker通过把tasks分发到各个tasktrackers来运行,并协调系统上运行的所有作业。tasktrackers运行任务,并向jobtracker报告进度信息,jobtracker保持了每个作业的全局进度。如果一个任务失败了,jobtracker会把这个任务重新分发到另一个tasktracker上(也就是说,j... 阅读全文
摘要:
本《hadoop学习笔记》系列是在《hadoop: the definitive guide 3th》的基础上通过网上额外搜集资料和查看hadoop的API再加上自己的实践方面的理解编写而成的,主要针对hadoop的特性和功能学习以及Hadoop生态圈中的其他工具(如Pig,Hive,Hbase,Avro等等)。另外设计到hadoop编程方面的请查阅另一个笔记系列:《Hadoop编程笔记》。如果有同学同时也在研究这本书,欢迎沟通交流,在下能力有限,还望各路大神看到有不对的地方加以指正~~(本系列学习笔记还正在整理中,以后会陆续发布)。 本书第二章以一个很浅显的例子为大家提供了hadoop... 阅读全文