Hadoop简介

简介

大数据简介

概述

大数据的说法从出现到现在,也经历了十多年时间的发展。而在这十几年的发展过程中,非常多的机构、组织都试图对大数据做出过定义,例如:研究机构Gartner给出了这样的定义:"大数据"是需要新处理模式才能具有更强的决策力、洞察发现力和流程优化能力的海量、高增长率和多样化的信息资产。再例如根据维基百科的定义,大数据是指无法在可承受的时间范围内用常规软件工具进行捕捉、管理和处理的数据集合。

特征(6V)

经过十几年的发展,对大数据进行总结,总结出来如下特征:

1)Volume:数据量大,包括采集、存储和计算的量都非常大。大数据的起始计量单位至少是T、P(1024个T)、E(100万个T)或Z(10亿个T)。到目前为止,人类所生产的所有印刷材料(书本、杂志、报刊等)的数据量大约是200PB,而历史上全人类总共说过的话的数据量大约是5EB。当前,典型个人计算机硬盘的容量为TB量级,而一些大企业的数据量已经接近或者达到EB量级。

2)Variety:种类样式和来源多样化。包括结构化、半结构化和非结构化数据,具体表现为网络日志、音频、视频、图片、地理位置信息等等,多类型的数据对数据的处理能力提出了更高的要求。

3)Value:数据价值密度相对较低,或者说是浪里淘沙却又弥足珍贵。随着互联网以及物联网的广泛应用,信息感知无处不在,信息海量,但价值密度较低,如何结合业务逻辑并通过强大的机器算法来挖掘数据价值是大数据时代最需要解决的问题。

4)Velocity:数据增长速度快,处理速度也快,时效性要求比较高。这是大数据区分于传统数据挖掘的最显著特征。根据IDC(Internet Data Center,互联网数据中心)的"数字宇宙"的报告,到2020年,全球数据使用量将达到35.2ZB。在如此海量的数据面前,处理数据的效率就是企业的生命。

5)Veracity:数据的准确性和可信赖度,即数据的质量。随着网络的发展,数据的准确性和可信赖度都越来越挑战数据的认知和发展。

6)Valence:大数据之间的连通性,指的是大数据各个产业、各个模块之间的关联性。

7)随着大数据的发展,又增加了Vitality(动态性)、Visualization(可视化)、Validity(合法性)等。

Hadoop简介

概述

Hadoop本身是由Yahoo!公司开发的后来贡献给了Apache的一套开源的、可靠的分布式架构

Hadoop提供了简单的编程模型能够对大量的数据进行分布式处理(The Apache Hadoop software library is a framework that allows for the distributed processing of large data sets across clusters of computers using simple programming models.)

Hadoop能够轻松的从一台服务器扩展到上千台服务器,并且每一台服务器都能够进行本地计算和存储(It is designed to scale up from single servers to thousands of machines, each offering local computation and storage.)

Hadoop本身提供了用于处理和探测异常的机制(Rather than rely on hardware to deliver high-availability, the library itself is designed to detect and handle failures at the application layer)。

主流发行版本

经过多年发展,市面上产生了繁多的Hadoop版本,这些版本可以分为收费版和免费版/社区版。其中使用的比较多的是Apache、CDH和HDP三大发行版。

Apache版本:最原始(最基础)的版本,对于入门学习最好,可以让初学者掌握更多的细节。

Cloudera版本:

1)2008年成立的Cloudera是最早将Hadoop商用的公司,为合作伙伴提供Hadoop的商用解决方案,主要是包括支持、咨询服务、培训。在2009年,Hadoop之父Doug Cutting也加盟Cloudera公司。

2)Cloudera产品主要为CDH,Cloudera Manager,Cloudera Support。CDH是Cloudera提供的Hadoop发行版,完全开源,比Apache Hadoop在兼容性,安全性,稳定性上有所增强;Cloudera Manager是集群的软件分发及管理监控平台,可以在几个小时内部署好一个Hadoop集群,并对集群的节点及服务进行实时监控;Cloudera Support即是对Hadoop的技术支持。

3)Cloudera的标价为每年每个节点4000美元。

4)Cloudera开发并贡献了可实时处理大数据的Impala项目。

Hortonworks Hadoop版本:

1)2011年成立的Hortonworks是雅虎与硅谷风投公司Benchmark Capital合资组建。公司成立之初就吸纳了大约25名至30名专门研究Hadoop的雅虎工程师,上述工程师均在2005年开始协助雅虎开发Hadoop,贡献了Hadoop80%的代码。雅虎工程副总裁、雅虎Hadoop开发团队负责人Eric Baldeschwieler出任Hortonworks的首席执行官。

2)Hortonworks的主打产品是Hortonworks Data Platform(HDP),也同样是100%开源的产品,HDP除常见的项目外还包括了Ambari(一款开源的安装和管理系统)。

3)HCatalog,一个元数据管理系统,HCatalog现已集成到Facebook开源的Hive中。Hortonworks的Stinger开创性的极大的优化了Hive项目。Hortonworks为入门提供了一个非常好的,易于使用的沙盒。

4)Hortonworks开发了很多增强特性并提交至核心主干,这使得Apache Hadoop能够在包括Window Server和Windows Azure在内的Microsoft Windows平台上本地运行。

5)定价以集群为基础,每10个节点每年为12500美元。

Hortonworks被Cloudera收购,合并推出了新的商用版Hadoop:CDP。目前收费是10000美金/节点/每年。从2021年1月31日开始,之前所有的CDH和HDP都必须付费才能使用。

模块

截止到目前为止(2023年06月30日),Hadoop官网显示,一共包含了四大模块:

1)Hadoop Common:公共模块,提供了Hadoop的一些基本jar包(The common utilities that support the other Hadoop modules.)

2)Hadoop Distributed FileSystem(HDFS):分布式文件存储系统(A distributed file system that provides high-throughput access to application data.)

3)Hadoop YARN:用于进行任务调度和资源管理的机制(A framework for job scheduling and cluster resource management.)

4)Hadoop MapReduce:基于YARN的分布式计算系统(A YARN-based system for parallel processing of large data sets.)

版本

Hadoop发展到现在,一共有三大版本:

1)Hadoop1.X:最原始的版本,包含了Common,HDFS和MapReduce模块,目前市面上已经停止流通;

2)Hadoop2.X:包含了Common,HDFS,MapReduce和YARN模块,后续的高版本中还包含了Ozone模块。注意,Hadoop2.X和Hadoop1.X不兼容;

3)Hadoop3.X:包含了Common,HDFS,MapReduce,YARN和Ozone模块,和Hadoop2.X部分兼容。

需要注意的是,不同于其他的一些框架,除了Hadoop1.x已经停止维护和使用,Hadoop2.X和Hadoop3.X在官网均有维护和更新,且更新版本较为混乱。所以在选择Hadoop版本的时候,需要考虑Hadoop版本和其他框架的兼容性问题。

Hadoop发展历程(了解)

创始人

Doug Cutting:是一位软件设计师,也是开源搜索技术的倡导者和创造者。他创建了Lucene,并与Mike Cafarella创建了Nutch,这些项目现在通过Apache Software Foundation进行管理。Cutting和Cafarella也是Apache Hadoop的联合创始人,不过相对Doug的贡献更大一些,所以Doug也被尊称为Hadoop之父。

Mike Cafarella:一位专攻数据库管理系统的计算机科学家。他是密歇根大学的计算机学科的副教授。Mike与Doug Cutting一起创建了Hadoop以及Nutch这两个开源项目。

命名

Hadoop这个名字不是一个缩写,也不是一个单词,而是一个虚构的名字。该项目的创建者,Doug Cutting解释Hadoop的得名:"这个名字是我孩子给一个棕黄色的大象玩具命名的。我的命名标准就是简短,容易发音和拼写,没有太多的意义,并且不会被用于别处。小孩子恰恰是这方面的高手"。

发展历程

1)2002年,Doug Cutting和Mike Cafarella在设计搜索引擎Nutch的时候,爬取了整个互联网,一共获得了10亿个网页数据。因为互联网的数据大多数是非结构化的,所以无法存储在传统的关系型数据库中。且由于数据量巨大,所以传统的单机模式也无法存储。

2)2003年,Google发表一篇关于集群系统存储的论文:(简称为GFS),这篇论文详细的阐述了分布式存储的思想和原理,但是Google并没有对外公开使用GFS。

3)2004年,Cutting在基于GFS的基础上设计了NDFS(Nutch Distributed File System)。NDFS和GFS的不同之处在于,GFS是使用C语言实现的,而NDFS是使用Java语言实现的。至此,解决了第一个问题:分布式存储的问题。但是接踵而来的是第二个问题,如何对分布式存储的数据进行分析和计算呢?

4)2004年,Google发表了另一篇关于集群系统计算的论文:,这篇论文同样详细的阐述了分布式计算的思想和原理,但是同样Google没有对外公开使用MapReduce。

5)2005年,Doug根据谷歌的论文设计了在Nutch中使用的MapReduce。同样,二者的区别就是实现语言的不同。至此,分布式计算问题解决,Nutch也可以正式使用。

6)而在Nutch0.8之后,Doug发现分布式存储和计算不止可以用于Nutch,还可以用于其他很多领域,因此Doug将NDFS模块以及MapReduce模块独立出来,重命名为Hadoop,并将NDFS重命名为HDFS(Hadoop Distributed File System)。

7)2006年,Doug Cutting加入了Yahoo,雅虎为此专门成立了专门的团队和资源,将Hadoop发展成能够以Web网络规模运行的系统。

8)Doug Cutting在Yahoo的工作期间,先后设计了Hive,Pig,HBase等。

9)后来Yahoo将Hadoop、Hive、Pig、HBase等贡献给了Apache。

安装和编译

编译

本次编译以Hadoop3.2.4版本为基础进行。

1)进入目录,上传或者下载Hadoop3.2.4源码包。

# 进入软件的预装目录

cd /opt/presoftware

# 下载Hadoop的源码包

wget https://dlcdn.apache.org/hadoop/common/hadoop-3.2.4/hadoop-3.2.4-src.tar.gz

2)解压:

tar -xvf hadoop-3.2.4-src.tar.gz -C /opt/source

 3)进入Hadoop的源码包:

cd /opt/source/hadoop-3.2.4-src

4)执行编译命令:

mvn -X clean package -Pdist,native,docs -DskipTests -Dtar -Dmaven.skip.test=true -Dmaven.javadoc.skip=true -Denforcer.skip=true

如果编译过程中提示缺少DynamoDBLocal,则上传的jar包之后,执行:

mvn install:install-file \

-Dfile=DynamoDBLocal-1.11.86.jar \

-DgroupId=com.amazonaws \

-DartifactId=DynamoDBLocal \

-Dversion=1.11.86 \

-Dpackaging=jar

然后重新编译即可。

5)编译完成后,进入目录:

cd hadoop-dist/target

即可见到编译产生的安装包。

安装

伪分布式

安装Hadoop之前,需要先安装JDK1.8(最好是JDK1.8.255及以上版本),关闭防火墙。

1)修改主机名:

vim /etc/hostname

# 将主机名改为自己指定的主机名,例如:

hadoop01

修改完成之后保存退出。

2)进行IP映射:

vim /etc/hosts

# 添加IP映射,例如

192.168.160.151 hadoop01

修改完成之后保存退出。

3)关闭SELINUX:

vim /etc/selinux/config

# 将SELINUX属性改为disabled

SELINUX=disabled

保存退出。

4)重启:

reboot

5)配置免密登录:

# 产生密钥

ssh-keygen

# 传输公钥

ssh-copy-id root@hadoop01

# 测试

ssh hadoop01

# 如果不需要密码,则退出

logout

6)上传或者下载Hadoop安装包:

# 进入软件的预装目录

cd /opt/presoftware

# 官网下载地址

wget https://dlcdn.apache.org/hadoop/common/hadoop-3.2.4/hadoop-3.2.4.tar.gz

7)解压:

tar -xvf hadoop-3.2.4.tar.gz -C /opt/software

8)进入Hadoop配置目录:

cd /opt/software/hadoop-3.2.4/etc/hadoop/

9)编辑文件:

vim hadoop-env.sh

# 添加属性

export JAVA_HOME=/opt/software/jdk1.8

export HADOOP_CONF_DIR=/opt/software/hadoop-3.2.4/etc/hadoop

# 保存退出,重新生效

source hadoop-env.sh

10)编辑文件:

vim core-site.xml

在文件中添加:

fs.default.name

hdfs://hadoop01:9000

hadoop.tmp.dir

/opt/software/hadoop-3.2.4/tmp

hadoop.http.staticuser.user

root

hadoop.proxyuser.root.hosts

*

hadoop.proxyuser.root.groups

*

hadoop.proxyuser.root.users

*

保存退出。

11)编辑文件:

vim hdfs-site.xml

在文件中添加:

dfs.replication

1

保存退出。

12)编辑文件:

vim mapred-site.xml

在文件中添加:

mapreduce.framework.name

yarn

yarn.app.mapreduce.am.env

HADOOP_MAPRED_HOME=/opt/software/hadoop-3.2.4

mapreduce.map.env

HADOOP_MAPRED_HOME=/opt/software/hadoop-3.2.4

mapreduce.reduce.env

HADOOP_MAPRED_HOME=/opt/software/hadoop-3.2.4

保存退出。

13)编辑文件:

vim yarn-site.xml

在文件中添加:

yarn.resourcemanager.hostname

hadoop01

yarn.nodemanager.aux-services

mapreduce_shuffle

yarn.nodemanager.env-whitelist

JAVA_HOME,HADOOP_COMMON_HOME,HADOOP_HDFS_HOME,HADOOP_CONF_DIR,CLASSPATH_PREPEND_DISTCACHE,HADOOP_YARN_HOME,HADOOP_MAPRED_HOME

保存退出。

14)编辑文件:

vim workers

# 删除掉原来的localhost,添加指定的主机名,例如

hadoop01

保存退出。

15)进入Hadoop的子目录sbin下:

cd /opt/software/hadoop-3.2.4/sbin/

16)修改文件:

vim start-dfs.sh

# 在文件头部添加

HDFS_DATANODE_USER=root

HDFS_DATANODE_SECURE_USER=hdfs

HDFS_NAMENODE_USER=root

HDFS_SECONDARYNAMENODE_USER=root

保存退出。

17)修改文件:

vim stop-dfs.hs

# 在文件头部添加

HDFS_DATANODE_USER=root

HDFS_DATANODE_SECURE_USER=hdfs

HDFS_NAMENODE_USER=root

HDFS_SECONDARYNAMENODE_USER=root

保存退出。

18)修改文件:

vim start-yarn.sh

# 在文件头部添加

YARN_RESOURCEMANAGER_USER=root

HDFS_DATANODE_SECURE_USER=yarn

YARN_NODEMANAGER_USER=root

保存退出。

19)修改文件:

vim stop-yarn.sh

# 在文件头部添加

YARN_RESOURCEMANAGER_USER=root

HDFS_DATANODE_SECURE_USER=yarn

YARN_NODEMANAGER_USER=root

保存退出。

20)配置环境变量:

vim /etc/profile.d/hadoophome.sh

export HADOOP_HOME=/opt/software/hadoop-3.2.4

export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin

# 保存退出,重新生效

source /etc/profile.d/hadoophome.sh

# 检查环境变量是否配置正确

hadoop version

21)格式化NameNode:

hdfs namenode -format

如果出现:

Storage directory /opt/software/hadoop-3.2.3/tmp/dfs/name has been successfully formatted.

则表示格式化成功。

22)启动Hadoop:

start-all.sh

23)命令查看:

jps

# 应该出现如下进程

Jps

NameNode

DataNode

SecondaryNameNode

ResourceManager

NodeManager

24)可以通过主机名:9870的方式来查看HDFS的页面。

25)可以通过主机名:8088的方式来查看YARN的页面。

完全分布式安装(重要)

至少需要准备3个节点。安装Hadoop之前,需要先安装JDK1.8(最好是JDK1.8.255及以上版本),关闭防火墙。节点部署如下表-1所示:

表-1 进程分布

进程/节点

hadoop01

hadoop02

hadoop03

NameNode

SecondaryNameNode

DataNode

ResourceManager

NodeManager

JobHistoryServer

1)修改三个节点的主机名:

# 编辑文件

vim /etc/hostname

# 删除掉原来的名称,添加自己的主机名,例如第一个节点设置为hadoop01,第二个节点设置为hadoop02,第三个节点设置为hadoop03

修改完成之后保存退出。

2)进行IP映射。注意,此时需要将三个节点的主机名和IP全部进行映射!

# 编辑文件

vim /etc/hosts

# 在文件末尾添加映射,例如:

192.168.160.151 hadoop01

192.168.160.152 hadoop02

192.168.160.153 hadoop03

保存退出。

3)关闭SELINUX:

# 编辑文件

vim /etc/selinux/config

# 将selinux属性的值改为disabled

SELINUX=disabled

保存退出。

4)重启:

reboot

5)所有节点之间相互免密互通:

# 产生密钥

ssh-keygen

# 拷贝公钥

ssh-copy-id root@hadoop01

ssh-copy-id root@hadoop02

ssh-copy-id root@hadoop03

# 测试是否免密

ssh hadoop01 # 如果不需要密码,输入logout

ssh hadoop02 # 如果不需要密码,输入logout

ssh hadoop03 # 如果不需要密码,输入logout

6)进入软件预装目录,上传或者下载Hadoop的安装包:

# 进入目录

cd /opt/presoftware/

# 官网下载地址

wget https://dlcdn.apache.org/hadoop/common/hadoop-3.2.4/hadoop-3.2.4.tar.gz

7)解压:

tar -xvf hadoop-3.2.4.tar.gz -C /opt/software/

8)进入Hadoop的配置目录:

cd /opt/software/hadoop-3.2.4/etc/hadoop/

9)修改文件:

# 编辑文件

vim hadoop-env.sh

# 在文件中添加

export JAVA_HOME=/opt/software/jdk1.8

export HADOOP_CONF_DIR=/opt/software/hadoop-3.2.4/etc/Hadoop

# 保存退出,生效

source hadoop-env.sh

10)编辑文件:

vim core-site.xml

在文件中添加:

fs.default.name

hdfs://hadoop01:9000

hadoop.tmp.dir

/opt/software/hadoop-3.2.4/tmp

hadoop.http.staticuser.user

root

hadoop.proxyuser.root.hosts

*

hadoop.proxyuser.root.groups

*

hadoop.proxyuser.root.users

*

保存退出。

11)编辑文件:

vim hdfs-site.xml

在文件中添加:

dfs.namenode.http-address

hadoop01:9870

dfs.namenode.secondary.http-address

hadoop02:9868

dfs.replication

1

保存退出。

12)编辑文件:

vim mapred-site.xml

在文件中添加:

mapreduce.framework.name

yarn

yarn.app.mapreduce.am.env

HADOOP_MAPRED_HOME=/opt/software/hadoop-3.2.4

mapreduce.map.env

HADOOP_MAPRED_HOME=/opt/software/hadoop-3.2.4

mapreduce.reduce.env

HADOOP_MAPRED_HOME=/opt/software/hadoop-3.2.4

保存退出。

13)编辑文件:

vim yarn-site.xml

在文件中添加:

yarn.nodemanager.aux-services

mapreduce_shuffle

yarn.resourcemanager.hostname

hadoop03

yarn.nodemanager.env-whitelist

JAVA_HOME,HADOOP_COMMON_HOME,HADOOP_HDFS_HOME,HADOOP_CONF_DIR,CLASSPATH_PREPEND_DISTCACHE,HADOOP_YARN_HOME,HADOOP_MAPRED_HOME

yarn.scheduler.minimum-allocation-mb

512

yarn.scheduler.maximum-allocation-mb

4096

yarn.nodemanager.resource.memory-mb

4096

yarn.nodemanager.pmem-check-enabled

false

yarn.nodemanager.vmem-check-enabled

false

保存退出。

14)编辑文件:

vim workers

# 删除掉原来的数据,添加三个节点的主机名,例如:

hadoop01

hadoop02

hadoop03

保存退出。

15)进入Hadoop的命令目录:

cd ../../sbin/

16)修改文件:

vim start-dfs.sh

# 在文件头部添加

HDFS_DATANODE_USER=root

HDFS_DATANODE_SECURE_USER=root

HDFS_NAMENODE_USER=root

HDFS_SECONDARYNAMENODE_USER=root

保存退出。

17)修改文件:

vim stop-dfs.sh

# 在文件头部添加

HDFS_DATANODE_USER=root

HDFS_DATANODE_SECURE_USER=root

HDFS_NAMENODE_USER=root

HDFS_SECONDARYNAMENODE_USER=root

保存退出。

18)编辑文件:

vim start-yarn.sh

# 在文件头部添加

YARN_RESOURCEMANAGER_USER=root

YARN_NODEMANAGER_USER=root

HDFS_DATANODE_SECURE_USR=root

保存退出。

19)编辑文件:

vim stop-yarn.sh

# 在文件头部添加

YARN_RESOURCEMANAGER_USER=root

YARN_NODEMANAGER_USER=root

HDFS_DATANODE_SECURE_USR=root

保存退出。

20)配置历史服务器(可选)。

cd ../etc/hadoop/

# 编辑文件

vim mapred-site.xml

在文件中添加:

mapreduce.jobhistory.address

hadoop02:10020

mapreduce.jobhistory.webapp.address

hadoop02:19888

21) 日志聚集(可选)。当任务在运行过程中,会产生大量的日志。那么此时日志分布在不同的服务器上,希望将日志汇聚上传到HDFS上,这个过程称之为日志聚集/汇聚。通过日志聚集,可以比较容易的查看程序的运行日志,方便对程序进行调试。

# 编辑文件

vim yarn-site.xml

在文件中添加:

yarn.log-aggregation-enble

true

yarn.log.server.url

http://hadoop02:19888/jobhistory/logs

yarn.log-aggregation.retain-seconds

604800

22)远程分发:

# 回到安装目录

cd /opt/software/

# 远程拷贝给其他的节点

scp -r hadoop-3.2.4/ root@hadoop02:$PWD

scp -r hadoop-3.2.4/ root@hadoop03:$PWD

23)配置环境变量:

# 编辑文件

vim /etc/profile.d/hadoophome.sh

# 在文件中添加

export HADOOP_HOME=/opt/software/hadoop-3.2.4

export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin

# 保存退出,生效

source /etc/profile.d/hadoophome.sh

# 测试

hadoop version

24)在第一个节点上格式化NameNode:

hdfs namenode -format

如果出现:

Storage directory /opt/software/hadoop-3.2.4/tmp/dfs/name has been successfully formatted.

则表示格式化成功。

25)在第一个节点上启动HDFS:

start-dfs.sh

26)在第三个节点上启动YARN:

start-yarn.sh

27)在第二个节点上启动历史服务器:

mapred --daemon start historyserver

28)查看进程:

jps

# hadoop01

Jps

NameNode

DataNode

NodeManager

# hadoop02

Jps

DataNode

SecondaryNameNode

NodeManager

JobHistoryServer

# hadoop03

Jps

DataNode

ResourceManager

NodeManager

29)可以通过主机名:9870的方式来查看HDFS的页面。

30)可以通过主机名:8088的方式来查看YARN的页面。

完全分布式高可用模式

环境准备:至少需要准备3个节点,安装Hadoop之前,需要先安装JDK1.8(最好是JDK1.8.255及以上版本),关闭防火墙,需要安装好Zookeeper(最好是Zookeeper3.5及以上版本)。进程分布如下表-2所示:

表-2 进程分布

进程/节点

ha01

ha02

ha03

NameNode

DataNode

JournalNode

ResourceManager

NodeManager

DFSZKFailoverController

QuorumPeerMain

JobHistoryServer

1)修改主机名:

# 编辑文件

vim /etc/hostname

# 删除掉原来的,添加自己的主机名,例如第一个节点为ha01,第二个节点为ha02,第三个节点为ha03

修改完成之后保存退出。

2)进行IP映射:

# 编辑文件

vim /etc/hosts

# 添加IP映射,例如

192.168.160.161 ha01

192.168.160.162 ha02

192.168.160.163 ha03

保存退出。

3)关闭SELINUX:

# 编辑文件

vim /etc/selinux/config

# 将selinux属性值改为disabled

SELINUX=disabled

保存退出。

4)重启:

reboot

5)配置免密互通:

# 产生密钥

ssh-keygen

# 拷贝公钥

ssh-copy-id root@ha01

ssh-copy-id root@ha02

ssh-copy-id root@ha02

# 测试

ssh ha01 # 如果不需要密码,输入logout

ssh ha02 # 如果不需要密码,输入logout

ssh ha03 # 如果不需要密码,输入logout

6)进入软件预装目录,上传或者下载Hadoop的安装包:

# 进入预装目录

cd /opt/presoftware/

# 官网下载地址

wget https://dlcdn.apache.org/hadoop/common/hadoop-3.2.4/hadoop-3.2.4.tar.gz

7)解压:

tar -xvf hadoop-3.2.4.tar.gz -C /opt/software/

8)进入Hadoop的配置目录:

cd /opt/software/hadoop-3.2.4/etc/hadoop/

9)编辑文件:

# 编辑文件

vim hadoop-env.sh

# 在文件中添加

export JAVA_HOME=/opt/software/jdk1.8

export HADOOP_CONF_DIR=/opt/software/hadoop-3.2.4/etc/hadoop

# 保存退出,生效

source hadoop-env.sh

10)编辑文件:

vim core-site.xml

在文件中添加:

fs.defaultFS

hdfs://ns

hadoop.tmp.dir

/opt/software/hadoop-3.2.4/tmp

ha.zookeeper.quorum

ha01:2181,ha02:2181,ha03:2181

hadoop.http.staticuser.user

root

hadoop.proxyuser.root.hosts

*

hadoop.proxyuser.root.groups

*

hadoop.proxyuser.root.users

*

保存退出。

11)修改文件:

vim hdfs-site.xml

在文件中添加:

dfs.nameservices

ns

dfs.ha.namenodes.ns

nn1,nn2,nn3

dfs.namenode.rpc-address.ns.nn1

ha01:9000

dfs.namenode.rpc-address.ns.nn2

ha02:9000

dfs.namenode.rpc-address.ns.nn3

ha03:9000

dfs.namenode.http-address.ns.nn1

ha01:9870

dfs.namenode.http-address.ns.nn2

ha02:9870

dfs.namenode.http-address.ns.nn3

ha03:9870

dfs.namenode.shared.edits.dir

    qjournal://ha01:8485;ha02:8485;ha03:8485/ns

dfs.journalnode.edits.dir

/opt/software/hadoop-3.2.4/tmp/journal

dfs.namenode.name.dir

file:///opt/software/hadoop-3.2.4/tmp/hdfs/name

dfs.datanode.data.dir

file:///opt/software/hadoop-3.2.4/tmp/hdfs/data

dfs.ha.automatic-failover.enabled

true

dfs.client.failover.proxy.provider.ns

org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider

dfs.ha.fencing.methods

sshfence

dfs.ha.fencing.ssh.private-key-files

/root/.ssh/id_rsa

dfs.replication

3

dfs.permissions

false

保存退出。

12)修改文件:

vim mapred-site.xml

在文件中添加:

mapreduce.framework.name

yarn

yarn.app.mapreduce.am.env

HADOOP_MAPRED_HOME=/opt/software/hadoop-3.2.4

mapreduce.map.env

HADOOP_MAPRED_HOME=/opt/software/hadoop-3.2.4

mapreduce.reduce.env

HADOOP_MAPRED_HOME=/opt/software/hadoop-3.2.4

mapreduce.jobhistory.address

ha02:10020

mapreduce.jobhistory.webapp.address

ha02:19888

保存退出。

13)修改文件:

vim yarn-site.xml

在文件中添加:

yarn.resourcemanager.ha.enabled

true

yarn.resourcemanager.cluster-id

ns-yarn

yarn.resourcemanager.ha.rm-ids

rm1,rm2

yarn.resourcemanager.hostname.rm1

ha01

yarn.resourcemanager.hostname.rm2

ha03

yarn.resourcemanager.recovery.enabled

true

yarn.resourcemanager.store.class

org.apache.hadoop.yarn.server.resourcemanager.recovery.ZKRMStateStore

yarn.resourcemanager.zk-address

ha01:2181,ha02:2181,ha03:2181

yarn.nodemanager.env-whitelist

JAVA_HOME,HADOOP_COMMON_HOME,HADOOP_HDFS_HOME,HADOOP_CONF_DIR,CLASSPATH_PREPEND_DISTCACHE,HADOOP_YARN_HOME,HADOOP_MAPRED_HOME

yarn.scheduler.minimum-allocation-mb

512

yarn.scheduler.maximum-allocation-mb

4096

yarn.nodemanager.resource.memory-mb

4096

yarn.nodemanager.aux-services

mapreduce_shuffle

yarn.resourcemanager.hostname

ha03

yarn.nodemanager.pmem-check-enabled

false

yarn.nodemanager.vmem-check-enabled

false

yarn.resourcemanager.webapp.address.rm1

ha01:8088

yarn.resourcemanager.webapp.address.rm2

ha03:8088

    yarn.log-aggregation-enble

    true

yarn.log.server.url

http://ha02:19888/jobhistory/logs

yarn.log-aggregation.retain-seconds

604800

保存退出。

14)添加子节点:

# 编辑文件

vim workers

# 删除掉原来的,添加所有节点的主机名,例如

ha01

ha02

ha03

保存退出。

15)进入Hadoop的命令目录:

cd ../../sbin/

16)编辑文件:

vim start-dfs.sh

# 在文件头部添加

HDFS_DATANODE_USER=root

HDFS_DATANODE_SECURE_USER=hdfs

HDFS_NAMENODE_USER=root

HDFS_SECONDARYNAMENODE_USER=root

HDFS_JOURNALNODE_USER=root

HDFS_ZKFC_USER=root

保存退出。

17) 编辑文件:

vim stop-dfs.sh

# 在文件头部添加

HDFS_DATANODE_USER=root

HDFS_DATANODE_SECURE_USER=hdfs

HDFS_NAMENODE_USER=root

HDFS_SECONDARYNAMENODE_USER=root

HDFS_JOURNALNODE_USER=root

HDFS_ZKFC_USER=root

保存退出。

18)编辑文件:

vim start-yarn.sh

# 在文件头部添加

YARN_RESOURCEMANAGER_USER=root

HDFS_DATANODE_SECURE_USER=yarn

YARN_NODEMANAGER_USER=root

保存退出。

19) 编辑文件:

vim stop-yarn.sh

# 在文件头部添加

YARN_RESOURCEMANAGER_USER=root

HDFS_DATANODE_SECURE_USER=yarn

YARN_NODEMANAGER_USER=root

保存退出。

20)远程分发:

# 回到安装目录

cd /opt/software/

# 远程分发

scp -r hadoop-3.2.4/ root@ha02:$PWD

scp -r hadoop-3.2.4/ root@ha03:$PWD

21)配置环境变量:

# 编辑文件

vim /etc/profile.d/hadoophome.sh

# 在文件中添加

export HADOOP_HOME=/opt/software/hadoop-3.2.4

export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin

# 保存退出,生效

source /etc/profile.d/hadoophome.sh

# 测试

hadoop version

22)启动Zookeeper:

# 启动

zkServer.sh start

# 查看状态

zkServer.sh status

23)在第一个节点上向Zookeeper注册节点:

hdfs zkfc -formatZK

如果出现:

Successfully created /hadoop-ha/ns in ZK.

则表示注册成功。

24)三个节点启动JournalNode:

hdfs --daemon start journalnode

25)在第一个节点上格式化NameNode:

hdfs namenode -format

如果出现:

Storage directory /opt/software/hadoop-3.2.4/tmp/hdfs/name has been successfully formatted.

则表示格式化成功。

26)在第一个节点上启动NameNode:

hdfs --daemon start namenode

27)在其他节点上格式化NameNode:

hdfs namenode -bootstrapStandby

如果出现:

Storage directory /opt/software/hadoop-3.2.4/tmp/hdfs/name has been successfully formatted.

则表示格式化成功。

28)在其他节点上启动NameNode:

hdfs --daemon start namenode

29)三个节点启动DataNode:

hdfs --daemon start datanode

30)三个节点启动zkfc:

hdfs --daemon start zkfc

31)在第三个节点上启动YARN:

start-yarn.sh

32)在第二个节点上启动历史服务器:

mapred --daemon start historyserver

33)查看进程:

jps

# ha01

Jps

NameNode

DataNode

JournalNode

ResourceManager

NodeManager

DFSZKFailoverController

QuorumPeerMain

# ha02

Jps

NameNode

DataNode

JournalNode

NodeManager

DFSZKFailoverController

JobHistoryServer

QuorumPeerMain

# ha03

Jps

NameNode

DataNode

JournalNode

ResourceManager

NodeManager

DFSZKFailoverController

QuorumPeerMain

34)可以通过主机名:9870的方式来查看HDFS的页面。

35)可以通过主机名:8088的方式来查看YARN的页面。

你可能感兴趣的:(hadoop)