0


Hadoop 安装及目录结构

优质博文IT-BLOG-CN

一、准备工作

【1】创建用户:

useradd

用户名
【2】配置创建的用户具有

root

权限,修改

/etc/sudoers

文件,找到下面一行,在

root

下面添加一行,如下所示:(注意:需要先给

sudoer

文件赋权限,修改完会后,将权限修改回来)修改完毕,现在可以用创建的帐号登录,然后用命令

su - 

,即可获得

root

权限进行操作。

## Allow root to run any commands anywhere
root    ALL=(ALL)     ALL
创建的用户 ALL=(ALL)     ALL

【3】在

/opt

目录下创建

module

software

文件夹,同时修改文件的所有者

sudo chmod 777

文件地址。

sudomkdir module
sudomkdir software

二、下载地址

下载地址
解压:

tar -zxvf hadoop-2.7.2.tar.gz -C /opt/module/

三、配置环境变量

**【1】查看

Hadoop

解压目录**

[zzx@localhost hadoop-2.7.2-src]$ pwd
/opt/module/hadoop-2.7.2-src

**【2】打开

/etc/profile

**

[zzx@localhost etc]$ sudovi profile

**【3】在文件中添加

Hadoop

的环境变量**

##HADOOP_HOMEexportHADOOP_HOME=/opt/module/hadoop-2.7.2
exportPATH=$PATH:$HADOOP_HOME/bin
exportPATH=$PATH:$HADOOP_HOME/sbin

【4】重启配置文件,让修改的配置文件生效

[root@localhost etc]# source /etc/profile

**【5】测试是否安装成功(如果

Hadoop

命令不生效就重启试试

reboot

)**

[root@localhost soft]# hadoop version
Hadoop 2.7.2
Subversion https://git-wip-us.apache.org/repos/asf/hadoop.git -r b165c4fe8a74265c792ce23f546c64604acf0e41
Compiled by jenkins on 2016-01-26T00:08Z
Compiled with protoc 2.5.0
From source with checksum d0fda26633fa762bff87ec759ebe689c
This command was run using /opt/module/hadoop-2.7.2/share/hadoop/common/hadoop-common-2.7.2.jar

四、可能会遇见的问题

【问题描述】

Error: JAVA_HOME is not set and could not be found.

【解决办法】在安装目录下

/etc/hadoop/

下,找到

hadoop-env.sh
#将下面的 $JAVA_HOME 修改为绝对路径,下面一行为默认的,错误展示exportJAVA_HOME=$JAVA_HOME#修改后的正确展示 exportJAVA_HOME=/usr/local/soft/jdk8    

五、Hadoop目录结构

**【1】查看

Hadoop

目录结构**

[root@localhost hadoop-2.7.2]# ll
总用量 28
drwxr-xr-x. 210011100111941月  262016 bin
drwxr-xr-x. 31001110011201月  262016 etc
drwxr-xr-x. 210011100111061月  262016 include
drwxr-xr-x. 31001110011201月  262016 lib
drwxr-xr-x. 210011100112391月  262016 libexec
-rw-r--r--. 11001110011154291月  262016 LICENSE.txt
-rw-r--r--. 110011100111011月  262016 NOTICE.txt
-rw-r--r--. 1100111001113661月  262016 README.txt
drwxr-xr-x. 2100111001140961月  262016 sbin
drwxr-xr-x. 41001110011311月  262016 share

【2】重要目录:
◕‿-。 **

bin

目录:** 存放对

Hadoop

相关服务(

HDFS

YARN

)进行操作的脚本,里面常用的就是

hadoop

这个配置;
。◕‿◕。 **

etc

目录:**

Hadoop

的配置文件目录,存放

Hadoop

的配置文件。后期会修改大量配置文件;
◕‿-。 **

lib

目录:** 存放

Hadoop

的本地库(对数据进行压缩解压缩功能);
。◕‿◕。 **

sbin

目录:** 存放启动或停止

Hadoop

相关服务的脚本,很重要;
◕‿-。 **

share

目录:** 存放

Hadoop

的依赖

jar

包、文档、和官方案例;

六、启动 HDFS并运行 MapReduce程序

【1】配置:

hadoop-env.sh

:在

etc/hadoop/hadoop-en.sh

修改

JAVA_HOME

路径为

JDK

的绝对路径。

exportJAVA_HOME=/usr/local/soft/jdk8

在这里插入图片描述

【2】配置:

core-site.xml

hadoop01

需要配置

hosts

映射,存储系统会自动创建

<!-- 指定HDFS中NameNode的地址 --><property><name>fs.defaultFS</name><value>hdfs://hadoop1:9000</value></property><!-- 指定Hadoop运行时产生文件的存储目录 --><property><name>hadoop.tmp.dir</name><value>/opt/module/hadoop-2.7.2/data/tmp</value></property>

在这里插入图片描述

【3】配置:

hdfs-site.xml

:默认副本数是3个

<!-- 指定HDFS副本的数量 --><property><name>dfs.replication</name><value>1</value></property>

**【4】格式化

NameNode

** (第一次启动时格式化,以后就不要总格式化)

[root@localhost hadoop-2.7.2]# bin/hdfs namenode -format

**【5】启动

NameNode

**

[root@localhost hadoop-2.7.2]# sbin/hadoop-daemon.sh start namenode

【问题描述】 可能会出现:

Error: Cannot find configuration directory: /etc/hadoop

【问题解决】 在

hadoop-env.sh

修改

hadoop

配置文件所在目录,并进行重启

source xx

。同时,需要删除

namenode

data

中的数据和

logs

中的

namenode

namedate

所有文件。

exportHADOOP_CONF_DIR=/opt/module/hadoop-2.7.2/etc/hadoop/

**【6】启动

DataNode

**

[root@localhost hadoop-2.7.2]# sbin/hadoop-daemon.sh start datanode

【7】 使用JPS命令查看是否启动成功,JPS 是JDK中的命令,不是Linux命令。不安装JDK不能使用 JPS
在这里插入图片描述

**【8】web端查看

HDFS

文件系统(注意需要配置

hosts

):**

http://hadoop1:50070/dfshealth.html#tab-overview

在这里插入图片描述

**【9】查看产生的

Log

日志:** 在企业中遇到

Bug

时,经常根据日志提示信息去分析问题、解决

Bug

。当前目录:

/opt/module/hadoop-2.7.2/logs

在这里插入图片描述

【10】操作集群:

HDFS

文件系统上创建一个

input

文件夹,

-P

创建多级目录

[root@localhost hadoop-2.7.2]# bin/hdfs dfs -mkdir -p /user/zzx/input

【11】 将测试文件内容上传到文件系统上:

[root@localhost hadoop-2.7.2]# bin/hdfs dfs -put input/zzx /user/zzx/input/

【12】 查看上传的文件是否正确

[root@localhost hadoop-2.7.2]# bin/hdfs dfs -ls /user/zzx/input/
Found 1 items
-rw-r--r--   1 root supergroup         742020-06-20 16:44 /user/zzx/input/zzx

【13】查看上传的文件是否正确

[root@localhost hadoop-2.7.2]# bin/hdfs dfs -cat /user/zzx/input/zzx
zzx
jinlong
tangjin
zzx
zzx
jinlong
jian
fanjing
fanjing
fanjing
fanjing

**【14】运行

MapReduce

程序,与开始时执行的本地是一致的。**

[root@localhost hadoop-2.7.2]# hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.2.jar wordcount /user/zzx/input/ /user/zzx/output/

【15】查看输出结果,命令行查看

[root@localhost hadoop-2.7.2]# bin/hdfs dfs -cat /user/zzx/output/*
fanjing    4
jian    1
jinlong    2
tangjin    1
zzx    3

【16】查看输出结果,浏览器查看:

Utilities-Brower...-user-zzx-output

在这里插入图片描述

七、启动 YARN并运行 MapReduce程序

**【1】配置

yarn-env.sh

,配置一下

JAVA_HOME

**

exportJAVA_HOME=/usr/local/soft/jdk8

**【2】配置

yarn-site.xml

**

<!-- Reducer获取数据的方式 --><property><name>yarn.nodemanager.aux-services</name><value>mapreduce_shuffle</value></property><!-- 指定YARN的ResourceManager的地址 --><property><name>yarn.resourcemanager.hostname</name><value>hadoop1</value></property>

在这里插入图片描述

**【3】配置:

mapred-env.sh

,配置一下

JAVA_HOME

**

exportexportJAVA_HOME=/usr/local/soft/jdk8

**【4】 配置: (对

mapred-site.xml.template

重新命名为)

mapred-site.xml

**

mv mapred-site.xml.template mapred-site.xml

**【5】配置:

mapred-site.xml

**

<!-- 指定MR运行在YARN上 --><property><name>mapreduce.framework.name</name><value>yarn</value></property>

在这里插入图片描述

八、启动集群

**【1】启动前必须保证

NameNode

DataNode

已经启动;**
**【2】启动

ResourceManager

**

[root@localhost hadoop-2.7.2]# sbin/yarn-daemon.sh start resourcemanager

**【3】启动

NodeManager

**

[root@localhost hadoop-2.7.2]# sbin/yarn-daemon.sh start nodemanager

**【4】

YARN

的浏览器页面查看:

http://hadoop1:8088/cluster

**
在这里插入图片描述

**【5】 删除文件系统上的

output

文件**

[root@localhost hadoop-2.7.2]# bin/hdfs dfs -rm -R /user/zzx/output20/06/20 17:20:20 INFO fs.TrashPolicyDefault: Namenode trash configuration: Deletion interval =0 minutes, Emptier interval =0 minutes.
Deleted /user/zzx/output

**【6】执行

MapReduce

程序**

[root@localhost hadoop-2.7.2]# bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.2.jar wordcount /user/zzx/input /user/zzx/output

【7】查看运行结果,刷新页面即可
在这里插入图片描述

九、配置历史服务器

为了查看程序的历史运行情况,需要配置一下历史服务器。具体配置步骤如下:
**【1】配置

mapred-site.xml

,在该文件里面增加如下配置。**

<!-- 历史服务器端地址 --><property><name>mapreduce.jobhistory.address</name><value>hadoop1:10020</value></property><!-- 历史服务器web端地址 --><property><name>mapreduce.jobhistory.webapp.address</name><value>hadoop1:19888</value></property>

【2】启动历史服务器

[root@localhost hadoop-2.7.2]# sbin/mr-jobhistory-daemon.sh start historyserver

**【3】查看历史服务器是否启动

JPS

**
在这里插入图片描述

【4】查看

JobHistory

http://hadoop1:19888/jobhistory

十、配置日志的聚集

日志聚集概念: 应用运行完成以后,将程序运行日志信息上传到

HDFS

系统上。
日志聚集功能好处: 可以方便的查看到程序运行详情,方便开发调试。
注意: 开启日志聚集功能,需要重新启动

NodeManager

ResourceManager

HistoryManager

开启日志聚集功能具体步骤如下:
**【1】配置

yarn-site.xml

,在该文件里面增加如下配置**

<!-- 日志聚集功能使能 --><property><name>yarn.log-aggregation-enable</name><value>true</value></property><!-- 日志保留时间设置7天 --><property><name>yarn.log-aggregation.retain-seconds</name><value>604800</value></property>

**【2】关闭

NodeManager 

ResourceManager

HistoryManager

**

[root@localhost hadoop-2.7.2]# sbin/yarn-daemon.sh stop resourcemanager
stopping resourcemanager
[root@localhost hadoop-2.7.2]# sbin/yarn-daemon.sh stop nodemanager
stopping nodemanager
nodemanager did not stop gracefully after 5 seconds: killing with kill -9[root@localhost hadoop-2.7.2]# sbin/mr-jobhistory-daemon.sh stop historyserver
stopping historyserver

**【3】 启动

NodeManager

ResourceManager

HistoryManager

**

[root@localhost hadoop-2.7.2]# sbin/yarn-daemon.sh start resourcemanager
starting resourcemanager, logging to /opt/module/hadoop-2.7.2/logs/yarn-root-resourcemanager-localhost.localdomain.out
[root@localhost hadoop-2.7.2]# sbin/yarn-daemon.sh start nodemanager
starting nodemanager, logging to /opt/module/hadoop-2.7.2/logs/yarn-root-nodemanager-localhost.localdomain.out
[root@localhost hadoop-2.7.2]# sbin/mr-jobhistory-daemon.sh start historyserver
starting historyserver, logging to /opt/module/hadoop-2.7.2/logs/mapred-root-historyserver-localhost.localdomain.out
[root@localhost hadoop-2.7.2]# jps
21937 ResourceManager
15458 NameNode
22197 NodeManager
22374 JobHistoryServer
16123 DataNode
22415 Jps

**【4】删除

HDFS

上已经存在的输出文件**

[root@localhost hadoop-2.7.2]# bin/hdfs dfs -rm -R /user/zzx/output

**【5】执行

WordCount

程序**

[root@localhost hadoop-2.7.2]# hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.2.jar wordcount /user/zzx/input /user/zzx/output

**【6】查看日志,进入

JobHistory

点击

JobID

**
在这里插入图片描述

**【7】点击

logs

**
在这里插入图片描述

【8】日志的具体信息
在这里插入图片描述

十一、配置文件说明

Hadoop

配置文件分两类:默认配置文件和自定义配置文件,只有用户想修改某一默认配置值时,才需要修改自定义配置文件,更改相应属性值。

【1】默认配置文件:
要获取的默认文件文件存放在

Hadoop

jar

包中的位置

[core-default.xml]
hadoop-common-2.7.2.jar/ core-default.xml
[hdfs-default.xml]
hadoop-hdfs-2.7.2.jar/ hdfs-default.xml

[

yarn-default.xml]
hadoop-yarn-common-2.7.2.jar/ yarn-default.xml

[

mapred-default.xml]
hadoop-mapreduce-client-core-2.7.2.jar/ mapred-default.xml

【2】 自定义配置文件:

core-site.xml

hdfs-site.xml

yarn-site.xml

mapred-site.xml

四个配置文件存放在

$HADOOP_HOME/etc/hadoop

这个路径上,用户可以根据项目需求重新进行修改配置。

十二、完全分布式运行模式

【1】将

/etc/profile

/opt/module

下的文件拷贝到其它两台服务器上,并进行

source xxx

。可以自己去拉

hadoop1

hadoop1

也可自行给你推,

hadoop1

也可以将

hadoop2

中的文件推给

hadoop3

,当传文件夹的时记得加

-r

递归复制。

[root@localhost ~]# scp [email protected]:/etc/bash.bashrc /etc/bash.bashrc 
[root@localhost opt]# scp -r root@hadoop1:/opt /opt

【2】集群部署规划: 根据这个配置修改上面的伪分布式就可以了
hadoop1hadoop2hadoop3HDFSNameNode DataNodeDataNodeSecondaryNameNode DataNodeYARNNodeManagerResourceManager NodeManagerNodeManager
**【3】

hadoop1

配置

hdfs-site.xml

**

<!-- 指定HDFS副本的数量 --><property><name>dfs.replication</name><value>3</value></property><!-- 指定Hadoop辅助名称节点主机配置 --><property><name>dfs.namenode.secondary.http-address</name><value>hadoop3:50090</value></property>

在这里插入图片描述
**【4】配置

yarn-site.xml

**

<!-- Reducer获取数据的方式 --><property><name>yarn.nodemanager.aux-services</name><value>mapreduce_shuffle</value></property><!-- 指定YARN的ResourceManager的地址 --><property><name>yarn.resourcemanager.hostname</name><value>hadoop2</value></property>

提前配置

SSH

免密配置

十三、群起集群

**【1】配置

slaves

**

[root@hadoop1 hadoop-2.7.2]# vi etc/hadoop/slaves 

在该文件中增加如下内容: 该文件中添加的内容结尾不允许有空格,文件中不允许有空行。

hadoop1
hadoop2
hadoop3

同步所有节点配置文件

[root@hadoop1 hadoop-2.7.2]# xsync etc/hadoop/slaves

【2】启动集群: 如果集群是第一次启动,需要格式化

NameNode

(注意格式化之前,一定要先停止上次启动的所有

namenode

datanode

进程,然后再删除

data

log

数据)

[root@hadoop1 hadoop-2.7.2]# bin/hdfs namenode -format

**【3】启动

HDFS

**(前提:终止之前运行namenode 等)

[root@hadoop1 hadoop-2.7.2]# sbin/start-dfs.sh 

启动完成之后,

Hadoop1

会启动

NameNode

DataNode

,其他两台只会启动

DataNode

**【4】在

Hadoop2

中启动

YARN

**。注意:

NameNode

ResourceManger

如果不是同一台机器,不能在

NameNode

上启动

YARN

,应该在

ResouceManager

所在的机器上启动

YARN

[root@hadoop2 hadoop-2.7.2]# sbin/start-yarn.sh 

【5】查看

SecondaryNameNode

信息:

http://hadoop3:50090/status.html

在这里插入图片描述

**【6】

NameNode

测试,创建

/user/zzx/input

并上传文件**

[root@hadoop1 hadoop-2.7.2]# bin/hdfs dfs -mkdir -p /user/zzx/input
[root@hadoop1 hadoop-2.7.2]# bin/hdfs dfs -put input/zzx /user/zzx/input

【7】上传文件后查看文件存放在什么位置:查看

HDFS

文件存储路径

[root@hadoop1 subdir0]# ll
总用量 8-rw-r--r--.1 root root 746月  2119:19 blk_1073741825
-rw-r--r--.1 root root 116月  2119:19 blk_1073741825_1001.meta
[root@hadoop1 subdir0]# pwd
/opt/module/hadoop-2.7.2/data/tmp/dfs/data/current/BP-1538823143-192.168.52.131-1592727848753/current/finalized/subdir0/subdir0

十四、集群启动/停止方式总结

【1】 各个服务组件逐一启动/停止

#分别启动/停止HDFS组件
hadoop-daemon.sh  start/stop  namenode/datanode/secondarynamenode
#启动/停止YARN
yarn-daemon.sh  start/stop  resourcemanager/nodemanager

**【2】各个模块分开启动/停止(配置

ssh

是前提)**

#整体启动/停止HDFS
start-dfs.sh/stop-dfs.sh
#整体启动/停止YARN
start-yarn.sh/stop-yarn.sh

十五 扩展

如果装的是

3.x.x

Hadoop

改了挺多东西的。
管理页面端口变动,

Hadoop NameNode

管理页面默认端口为

9870

集群配置变动,

etc/hadoop/slaves

改成了

etc/hadoop/workers

启动命令变动,

sbin/yarn-daemon.sh start resourcemanager

这种也能用,但是启动时会标记已被弃用,变成

yarn -daemon start resourcemanger

类似这种命令


本文转载自: https://blog.csdn.net/zhengzhaoyang122/article/details/138476375
版权归原作者 程序猿进阶 所有, 如有侵权,请联系我们删除。

“Hadoop 安装及目录结构”的评论:

还没有评论