Hadoop包括3种安装模式:
①单机模式:只在一台机器上运行,存储采用本地文件系统,没有采用分布式文件系统HDFS;
②伪分布式模式:存储采用分布式文件系统HDFS,但是HDFS的名称节点和数据节点都在同一台机器上;
③分布式模式:存储采用分布式文件系统HDFS,而且HDFS的名称节点和数据节点位于不同机器上。
我们在这里选择下载2.7.7版本的Hadoop作为示例,也可酌情选择下载其他版本:
①进入Hadoop官网安装文件下载地址:http://mirrors.cnnic.cn/apache/hadoop/common/,点击hadoop-2.7.7/:
②点击下载hadoop-2.7.7.tar.gz:
③打开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分布式集群。