Hadoop环境安装篇

本文详细介绍了Hadoop的环境安装,包括Hadoop的基本组件HDFS、MapReduce、HBase的介绍,免密码登录原理,以及Hadoop的三种安装模式:本地模式、伪分布模式和全分布模式。在安装过程中,特别强调了配置文件的设置,如hdfs-site.xml、core-site.xml、mapred-site.xml、yarn-site.xml等,以及HDFS的NameNode格式化。全分布模式的安装涉及到多台主机的配置和时间同步。
摘要由CSDN通过智能技术生成

1、 Hadoop初识

Hadoop基本架构:Hadoop由两部分组成,分别是分布式文件系统HDFS和分布式计算框架MapReduce。其中,分布式文件系统主要用于大规模数据的分布式存储,而MapReduce则构建在分布式文件系统之上,对存储在分布式文件系统中的数据进行分布式计算。

在Hadoop中,MapReduce底层的分布式文件系统是独立模块,用户按照约定的一套接口实现自己的分布式文件系统,然后经过简单的配置后,存储在该文件系统上的数据便可以被MapReduce处理。Hadoop默认使用的分布式文件系统是HDFS,它与MapReduce框架紧密结合。

A、什么是HDFS?

分布式文件系统(DistributedFile System)是指文件系统管理的物理存储资源不一定直接连接在本地节点上,而是通过计算机网络与节点相连。分布式文件系统的设计基于客户机/服务器模式,一个典型的网络可能包括多个供多用户访问的服务器。

下图简单描绘了HDFS文件系统(Hadoop Distributed File System)的整个架构体系。HDFS是一个主从结构,一个HDFS集群是由一个名称节点(它是一个管理文件命名空间和调节客户端访问文件的主服务器),当然还有一些数据节点(通常是一个节点一个机器,用来管理对应节点的存储)组成。

这里写图片描述

需要注意的几个知识点:

1) HDFS中保存的是数据块(block),在1.x版本上默认是64M,在2.x版本上默认是128M;

2) 当客户端上传的数据大小超过数据块128M的大小时,会被切分为多个数据块进行上传,不足128M的作为一个数据块上传,占据一个数据块大小;

3) HDFS文件系统具有非常好的扩展性,当存储容量不足时,可方便地扩增硬盘数量;

4) 为了保证分布式文件系统的数据安全性,采用数据冗余的方法,在HDFS中数据块的冗余度一般设定为3,默认也是3;

5) SecondaryNameNode第二名称节点默认就在NameNode上,这是为了提高HDFS的运行效率;

6) 数据块在进行水平复制的过程中,是通过机架感知来决定数据块保存的位置;当保存数据块的时候,HDFS会维护数据块的位置信息(即元信息),通过采用倒排索引的方法来解决查找数据块的问题。

B、什么是机架感知?

分布式的集群通常包含非常多的机器,由于受到机架槽位和交换机网口的限制,通常大型的分布式集群都会跨好几个机架,由多个机架上的机器共同组成一个分布式集群。机架内的机器之间的网络速度通常都会高于跨机架机器之间的网络速度,并且机架之间机器的网络通信通常受到上层交换机间网络带宽的限制。

具体到Hadoop集群,由于hadoop的HDFS对数据文件的分布式存放是按照分块block存储,每个block会有多个副本(默认为3),并且为了数据的安全和高效,所以hadoop默认对3个副本的存放策略为:

  • 第一个block副本存放在和client所在的datanode里(如果client不在集群范围内,则这第一个datanode是随机选取的);

  • 第二个block副本放置在与第一个datanode不同的机架中的datanode中(随机选择),这是出于安全性的考虑;

  • 第三个副本放置在与第一个副本所在节点同一个机架的另一个datanode上,这是出于效率的考虑。

如果还有更多的副本,则在遵循相应限制的前提下,随机放置在集群的datanode里。下图展现了机架感知的基本原理。

这里写图片描述

C、什么是MapReduce?

MapReduce是一种编程模型,用于大规模数据集(大于1TB)的并行运算。概念”Map(映射)”和”Reduce(归约)”,是它的主要思想,都是从函数式编程语言里借来的,还有从矢量编程语言里借来的特性。它极大地方便了编程人员在不会分布式并行编程的情况下,将自己的程序运行在分布式系统之上。当前的软件实现是指定一个Map(映射)函数,用来把一组键值对映射成一组新的键值对,指定并发的Reduce(归约)函数,用来保证所有映射的键值对中的每一个共享相同的键组。

下图非常形象地描绘了MapReduce的编程模型,可以明显地看到,Map阶段的输出是作为Reduce阶段的输入,因而要求这两个阶段的数据类型要保持一致。同时,需要注意的是,MapReduce编程中所有输入和输出的数据类型都必须是Hadoop自己定义的数据类型,这是因为Hadoop的数据类型都实现了Hadoop的序列化,从而能够作为Map和Reduce的输入和输出。

这里写图片描述

MapReduce的基本架构:MapReduce是一个分布式计算框架,主要由两部分组成:编程模型和运行时环境。其中,编程模型为用户提供了非常易用的编程接口,用户只需要像编写串行程序一样实现几个简单的函数即可实现一个分布式程序,而其他比较复杂的工作,如节点间的通信、节点失效、数据切分等,全部由MapReduce运行时环境完成,用户无须关心这些细节。

MapReduce是在总结大量应用的共同特点的基础上抽象出来的分布式计算框架,它适用的应用场景往往具有一个共同的特点:任务可被分解成相互独立的子问题。基于该特点,MapReduce编程模型给出了其分布式编程方法,共分5个步骤:

  • 迭代(iteration)。遍历输入数据,并将之解析成key/value对。

  • 将输入key/value对映射(map)成另外一些key/value对。

  • 依据key对中间数据进行分组(grouping)。

  • 以组为单位对数据进行规约(reduce)。

  • 迭代。将最终产生的key/value对保存到输出文件中。

为了实现MapReduce的编程模型,Hadoop设计了一系列对外编程接口。用户可通过实现这些接口完成应用程序的开发。

D、什么是HBase?

HBase是一个分布式的、面向列的开源数据库,该技术来源于 Fay Chang 所撰写的Google论文“Bigtable:一个结构化数据的分布式存储系统”。就像Bigtable利用了Google文件系统(File System)所提供的分布式数据存储一样,HBase

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值