优质博文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
类似这种命令
版权归原作者 程序猿进阶 所有, 如有侵权,请联系我们删除。