Hadoop 基础

Hadoop 基础

什么是 Hadoop

Hadoop 是由很多技术项目组成的一个生态系统。狭义的 Hadoop 有三个框架:

  • 海量数据的存储 – HDFS(Hadoop Distributed File System)
  • 海量数据的分析 – MapReduce
  • 资源管理调度 – YARN(Yet Another Resouce Negotiator)

以上狭义的 Hadoop 最擅长的仅仅是做海量离线日志分析,广义的 Hadoop 包含很多组件,现在可以做非常多的事情,应用场景非常广,包括实时计算等。

大数据计算的核心是移动计算而不是移动数据:将运算程序分发到分布式的数据集上运行,而不是移动数据。

为什么要使用 Hadoop

数据量不断增大,单节点无法应对海量数据的处理,需要使用分布式架构,需要考虑的复杂情况非常多,如:任务监控、节点存活监控、数据如何共享、中间数据如何传递等。Hadoop 作为分布式框架,已经为我们解决了这些问题,使用它极大降低了海量数据下的公共数据处理问题。

如何解决海量数据的存储

首先了解一下什么是 NFS,NFS 网络文件系统将文件挂载到不同的机器上,通过一台服务器(NFS Server)作为统一的入口,其他客户端访问 Server,Server 将从目标机器上取文件给客户端。简单理解为有一个文件服务器在远端,叫 NFS Server,上面有共享文件,可以将它挂载到你本地的机器上,访问 NFS Server 就像访问自己电脑的某一个磁盘一样(比如 C 盘)。

HDFS 是有 NameNode 和 DataNode 的概念,最基本的模型是一台 NameNode,多台 DataNode。NameNode 存储元信息,如某个文件存放在哪台服务器上,有几份备份等。DataNode 存储数据,数据文件被切分成块(block),每一块存储在多个节点上,互为备份,默认是 3 份,可以在同一个机架,一般为了保证高可用,会放在不同机架上。

HDFS 和 NFS 的主要区别:

  • HDFS 数据冗余,具有容错性,而 NFS 只存储一份;
  • HDFS 数据多副本解决单点瓶颈,读取性能会比 NFS 更好;

如何解决海量数据的计算

海量数据的计算关键是移动计算而不是移动数据。

假设有特别多的数据需要计算,只用一台机器是无法实现的,因为数据无法一次读取完,会对内存造成特别大的压力,需要读取很多次,会受网络的限制。

Hadoop 通过 MapReduce 实现海量数据的计算,数据存储在多个 DataNode 上,Map 阶段将计算程序分发到每个 DataNode 上,将每个节点上的计算结果通过网络发送到某一台做 Reduce 计算的机器,Reduce 将结果进行汇总输出。

Hadoop 主要版本

Apache Hadoop:社区开源版本
Cloudera:Cloudera 公司发行版,使用下载最多的版本,稳定,有商业支持
Hortworks:Hortonworks Data Platform,Hortonworks 公司发行版本(已与 Cloudera 公司合并)

i

3 thoughts on “Hadoop 基础

  1. 你好,从github上看到你的博客项目,不知道这个leozzy.com网站是不是你的项目在线版。毕业论文想做一个你这样的博客。

发表评论

电子邮件地址不会被公开。 必填项已用*标注