Hadoop包括3种安装模式:

单机模式:只在一台机器上运行,存储采用本地文件系统,没有采用分布式文件系统HDFS;

伪分布式模式:存储采用分布式文件系统HDFS,但是HDFS的名称节点和数据节点都在同一台机器上;

分布式模式:存储采用分布式文件系统HDFS,而且HDFS的名称节点和数据节点位于不同机器上。

一、下载安装文件

我们在这里选择下载2.7.7版本的Hadoop作为示例,也可酌情选择下载其他版本:

①进入Hadoop官网安装文件下载地址:http://mirrors.cnnic.cn/apache/hadoop/common/,点击hadoop-2.7.7/:

hadoop linux 下载安装 linux系统安装hadoop_linux


②点击下载hadoop-2.7.7.tar.gz:

hadoop linux 下载安装 linux系统安装hadoop_Hadoop_02


③打开Linux终端,进入刚才下载文件所在的目录,通过下列命令将下载文件解压并保存到/usr/local/目录下:

sudo tar -zxf hadoop-2.7.7.tar.gz -C /usr/local/

④进入/usr/local/目录,通过下列命令修改文件夹名:

sudo mv ./hadoop-2.7.7/ ./hadoop/

⑤通过下列命令对当前登录用户进行授权,使其拥有对./hadoop目录的权限:

sudo chown -R 用户名 ./hadoop/

⑥进入/usr/local/hadoop/目录,通过下列命令检查安装的Hadoop是否可用,成功则会显示Hadoop的版本信息:

./bin/hadoop version

二、单机模式配置

Hadoop的默认模式为非分布式模式(本地模式),无须进行其他配置即可运行,Hadoop附带了丰富的例子,进入/usr/local/hadoop/目录,运行下列命令可以查看所有例子:

./bin/hadoop jar ./share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.7.jar

上述命令执行后,会显示所有例子的简介信息,包括grep、join、wordcount等,这里选择运行grep实例,可以先在/usr/local/hadoop/目录下创建一个文件夹input,并复制一些文件到该文件下,然后运行grep程序,将input文件夹中的所有文件作为grep的输人,让grep程序从所有文件中筛选出符合正则表达式“dfs[a-z.]+”的单词,并统计单词出现的次数,最后,把统计结果输出到/usr/local/hadoop/output文件夹中,完成上述操作的具体命令如下:

①进入/usr/local/hadoop目录:

cd /usr/local/hadoop/

②创建文件夹input:

mkdir input

③将配置文件复制到input目录下:

cp ./etc/hadoop/*.xml ./input

④运行grep例子:

./bin/hadoop jar ./share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.7.jar grep ./input ./output 'dfs[a-z.]+'

⑤查看运行结果:

cat ./output/*

输出的结果是符合正则表达式的单词dfsadmin出现了一次:

1	dfsadmin

需要注意的是,Hadoop默认不会覆盖结果文件,因此再次运行上面实例时会提示出错,如果要再次运行,需要先使用如下命令把output文件夹删除

rm -r ./output/

三、伪分布式模式配置

Hadoop可以在单个节点(一台机器)上以伪分布式的方式运行,同一个节点既作为名称节点(Name Node),也作为数据节点(Data Node),读取的是分布式文件系统HDFS中的文件。

当Hadoop应用于集群时,不论是伪分布式还是真正的分布式运行,都需要通过配置文件对各组件的协同工作进行设置,最重要的几个配置文件如下:

文件名称

格式

描述

hadoop-env.sh

Bash脚本

记录配置Hadoop运行所需的环境变量,以运行Hadoop

core-site.xml

Hadoop配置XML

Hadoop core的配置项,如HDFS和MapReduce常用的I/O设置等

hdfs-site.xml

Hadoop配置XML

Hadoop守护进程的配置项,包括NameNode 、SecondaryNameNode和DataNode等

mapred-site.xml

Hadoop配置XML

MapReduce守护进程的配置项,包括JobTracker和TaskTracker

masters

纯文本

运行SecondaryNameNode的机器列表(每行一个)

slaves

纯文本

运行DataNode和TaskTracker的机器列表(每行一个)

hadoop-metrics.properties

Java属性

控制metrics在Hadoop上如何发布的属性

伪分布式配置的详细步骤请参照:Linux系统Hadoop伪分布式模式配置。

四、分布式模式配置

当Hadoop采用分布式模式部署和运行时,存储采用分布式文件系统HDFS,而且HDFS的名称节点和数据节点位于不同机器上,数据可以分布到多个节点上,不同数据节点上的数据计算可以并行执行,这时的MapReduce分布式计算能力才能真正发挥作用。

搭建Hadoop分布式集群通常容易想到的如下两种方法:

采用多台机器构建分布式集群

在一台机器上安装多个虚拟机,每个虚拟机上运行一个Hadoop节点

但是,上述两种方式都有缺点,如果采用第一种方法,通常需要有多台机器,对于很多同学而言,通常难以找到多台机器用于构建分布式实验环境;如果采用第二种方法,通常对单台机器的配置要求很高,如果机器配置较低,那么在一台机器上同时运行多个虚拟机,速度会非常慢。

如今,随着虚拟化技术的发展,尤其是Docker容器技术的诞生,使得人们可以有了第三种构建Hadoop分布式集群的方法——使用Docker搭建Hadoop分布式集群