当前位置:   article > 正文

hadoop简单介绍安装和配置_hadoop安装与配置

hadoop安装与配置

一、hadoop简介

1、hadoop介绍

hadoop是由Apache基金会开发维护的分布式系统基础架构;
狭义的hadoop是指hadoop本身,广义的hadoop主要是指hadoop的生态圈;
hadoop的两大功能:主要解决海量数据的存储海量数据的分析计算问题。

2、hadoop的特点

高可靠性:hadoop底层维护多个数据副本,所以即使部分节点元素出现故障,也能从其他节点恢复;
高扩展性:可以动态的在原先的节点上,新增或删除节点,能适应高爆发的场景;
高效性:在MapReduce的思想下,hadoop是并行工作的,这加快了任务的处理速度;
高容错性:能够将失败的任务重新分配资源再次执行。

3、hadoop的组成

目前2.x开始到3.x的hadoop版本主要由HDFS,MapReduce,Yarn和common四部分组成。
HDFS(Hadoop Distributed File System,简称HDFS,是一个分布式文件系统,负责文件存储)
MapReduce(Map阶段并行处理计算输入的数据,reduce阶段负责将Map的结果进行汇总,负责数据计算逻辑)
Yarn(Yet Another Resource Negotiator,简称YARN ,是一种资源协调者,是Hadoop的资源管理器,负责资源调度)
common(其他一些必要的辅助工具)

二、hadoop安装和运行模式

在 linux 系统下,新建 /opt/software 目录用于存放软件的安装包;新建 /opt/module 目录作为软件的安装目录。

mkdir /opt/software
mkdir /opt/module
  • 1
  • 2

安装JDK之前需要先删除 linux 系统自带的JDK。

rpm -qa | grep -i java | xargs -n1 rpm -e --nodeps
  • 1

其中 rpm -qa 查询所有安装的 rpm 软件包;
grep -i 查找所有文件名中包含java的文件,-i 忽略大小写;
xargs -n1 表示每次只传递一个参数,这里传递的是查找出来的包含 java 关键字的文件名;
rpm -e --nodeps 强制卸载软件。

1、安装JDK

(1)用xftp将JDK文件拷贝到 /opt/software 目录下
(2)将JDK安装到 /opt/module 目录下

tar -zxvf /opt/software/jdk-8u212-linux-x64.tar.gz -C /opt/module/
  • 1

(3)配置JDK的环境变量,新建一个独立的 sh 文件,便于管理

sudo vim /etc/profile.d/myenv.sh
  • 1

(4)在文件里面配置 java home 的内容

#JAVA_HOME				
export JAVA_HOME=/opt/module/jdk1.8.0_212
export PATH=$PATH:$JAVA_HOME/bin
  • 1
  • 2
  • 3

export 先设置全局变量JAVA_HOME,再取出path的值,将path后面再接上 $JAVA_HOME/bin 。

(5)source一下profile,相当于刷新一下,使配置生效

source /etc/profile
  • 1

(6)测试是否成功

java -version
  • 1

能正常显示 java 的版本信息即为配置成功。

2、安装hadoop

环境和用户准备:

# CentOS需要安装额外的软件epel-release
yum install -y epel-release
# 添加用户
useradd menghui
passwd menghui
# 修改用户权限
vim /etc/sudoers
# 修改/etc/sudoers文件,在%wheel这行下面添加一行,如下所示:
## Allow root to run any commands anywhere
root    ALL=(ALL)     ALL

## Allows people in group wheel to run all commands
%wheel  ALL=(ALL)       ALL
menghui   ALL=(ALL)     NOPASSWD:ALL
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14

(1)用xftp将hadoop安装包拷贝到 /opt/software 目录下
(2)安装hadoop到 /opt/module 目录下面

tar -zxvf  /opt/software/hadoop-3.1.3.tar.gz -C /opt/module/
  • 1

(3)配置hadoop的环境变量

sudo vim /etc/profile.d/myenv.sh
  • 1

(4)在文件里面接着配置hadoop home的内容

#JAVA_HOME				
export JAVA_HOME=/opt/module/jdk1.8.0_212
export PATH=$PATH:$JAVA_HOME/bin
#HADOOP_HOME
export HADOOP_HOME=/opt/module/hadoop-3.1.3
export PATH=$PATH:$HADOOP_HOME/bin
export PATH=$PATH:$HADOOP_HOME/sbin
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

(5)source一下profile,相当于刷新一下,使配置生效

source /etc/profile
  • 1

(6)测试是否成功

hadoop
  • 1

如果没有报错,这配置成功,如果不成功,请尝试重启后,再测试。
(7)配置主机映射

su root
vim /etc/hosts
# 往里面追加以下内容
192.168.20.102 hadoop102
192.168.20.103 hadoop103
192.168.20.104 hadoop104
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

3、hadoop重要目录介绍

安装后的 /opt/module/hadoop-3.1.3 目录下,都是hadoop的目录结构,其中一些重要的介绍如下:
bin,bin里面存放一般常用的命令,HDFS,Yarn,MapReduce等的命令;
etc, etc存放HDFS,Yarn,MapReduce的各种配置文件;
include,include存放各种头文件;
lib, lib本地动态链接库;
sbin,启动集群,启动yarn,启动历史服务器等的命令;
share,提供学习的资料和官方案例。

4、hadoop运行模式介绍

Hadoop运行模式包括:本地模式、伪分布式模式以及完全分布式模式。
本地模式:单机运行,只是用来演示一下官方案例。生产环境不用。
伪分布式模式:也是单机运行,但是具备Hadoop集群的所有功能,一台服务器模拟一个分布式的环境。可以用来简单的测试,生产环境不用。
完全分布式模式:多台服务器组成分布式环境。生产环境使用。

5、安全拷贝介绍

1)安全拷贝scp(secure copy)

(1)scp介绍
scp(secure copy) 安全拷贝,scp可以实现服务器和服务器之间的数据拷贝。

(2)语法介绍

scp -r $user@$host:$pdir/$fname $user@$host:$pdir/$fname
  • 1

其中 -r 是递归拷贝,pdir 为文件的路径,fname 为文件的名称,user 为远程服务器的用户名, host 为远程服务的主机名。
scp -r 用户@主机:要拷贝的文件路径/文件名称 目的地用户@主机:目的地路径/文件名称。

(3)基本示例
以下用到的是远程的主机名,没有配置主机名的需要先配置主机名和IP地址的映射。

# 从hadoop102本机拷贝jdk到hadoop103服务器,此时在hadoop102上面
scp -r /opt/module/jdk1.8.0_212  mrlin@hadoop103:/opt/module/
	
# 从hadoop102服务器拷贝hadoop到hadoop103本机,此时在hadoop103上面
scp -r mrlin@hadoop102:/opt/module/hadoop-3.1.3  /opt/module/

# 从hadoop102服务器拷贝hadoop到hadoop103服务器,此时在hadoop104上面
scp -r mrlin@hadoop102:/opt/module/hadoop-3.1.3  mrliin@hadoop104:/opt/module/
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

上面的命令均需要输入远程服务器的密码才能完成拷贝过程。

1)远程同步rsync

(1)rsync 介绍
rsync 主要用于备份和镜像,具有速度快、避免复制相同内容和支持符号链接等的优点。
rsync 和 scp 区别:用 rsync 做文件的复制要比 scp 的速度更快,因为 rsync 只对差异的文件做更新,而 scp 只是把所有文件都完整复制过去。

(2)rsync 语法

rsync -av $pdir/$fname $user@$host:$pdir/$fname
  • 1

其中 -a 是归档拷贝,-v 是显示复制过程,pdir 为文件的路径,fname 为文件的名称,user 为远程服务器的用户名, host 为远程服务的主机名。
scp -r 用户@主机:要同步的文件路径/文件名称 目的地用户@主机:目的地路径/文件名称。

(3)基本示例
随便删掉 hadoop103 上面 /opt/module/hadoop-3.1.3 下面的一个文件,然后再同步文件,如下

# 从hadoop102本机同步hadoop到hadoop103服务器,此时在hadoop102上面
rsync -av /opt/module/hadoop-3.1.3  mrlin@hadoop103:/opt/module/
	
# 从hadoop102服务器同步hadoop到hadoop103本机,此时在hadoop103上面
rsync -av mrlin@hadoop102:/opt/module/hadoop-3.1.3  /opt/module/

# 从hadoop102服务器同步hadoop到hadoop103服务器,此时在hadoop104上面
rsync -av mrlin@hadoop102:/opt/module/hadoop-3.1.3  mrliin@hadoop104:/opt/module/
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

此时会发现,rsync 同步的效率比 scp 安全拷贝更高,速度也更快。

6、SSH免密登录介绍

在通过用户名@主机访问远程服务器时,其实是通过SSH登录的,因此每次同步文件的时候,都是需要输入远程服务器的密码,这在实际使用时是比较麻烦的,因为我们通过SSH的私钥和公钥的机制,先分发每个用户对于的公钥,就能在登录的时候,实行免密登录,注意当前是在mrlin用户下面的,mrlin和root是两个用户,需要单独配置。
本机在hadoop102服务器上,先ssh hadoop102 登录一下,然后退出。

ssh hadoop102
  • 1

(1)进入.ssh

cd /home/mrlin/.ssh
  • 1

(2)生成公钥和秘钥,输入命令,并按3次回车即可

ssh-keygen -t rsa
  • 1

(3)将公钥拷贝到需要ssh登录的服务器,登录到本机也是需要密码,所以本地也是需要拷贝一份

ssh-copy-id hadoop102
ssh-copy-id hadoop103
ssh-copy-id hadoop104
  • 1
  • 2
  • 3

免密登录的原理,就是先利用密码在本地生成秘钥对,本地保留私钥,而将公钥发送给需要ssh登录的服务器,当本地发送数据到其他服务器时,先由本地私钥加密,再在其他服务器通过公钥解密即可;当其服务器发送数据时,其他服务器通过公钥加密,本地再通过私钥解密即可。所以需要本地保留私钥,而将公开的公钥发送给其他需要登录的服务器。

注意:以上的步骤只是实现了在服务器hadoop102的mrlin用户上面登录其他服务器的功能,如需在hadoop103上面也能登录其他服务器,也需在hadoop103上面执行上面的操作。同理,hadoop104或者更多的服务器也需要各执行一遍。
同时,ssh登录是区分用户的,这里我是在 mrlin 的用户下面执行的ssh配置,如需要其他用户也实现免密登录功能,需先切换用户,再执行上面的操作,如需在 root 用户下也能实现,则需在切换成 root 用户后,再次生成秘钥对,并分发公钥。

(4).ssh文件夹下(~/.ssh)的文件功能解释

known_hosts记录ssh访问过计算机的公钥(public key)
id_rsa生成的私钥
id_rsa.pub生成的公钥
authorized_keys存放授权过的无密登录服务器公钥

(5)根据上面的内容,我们可以写如下的集群分发脚本
要求:循环复制所有文件到其他服务器的相同目录下,同步后的名称要相同,并且在任何路径下面都可以直接调用
在 hadoop102 下面新建 bin 目录和 sxync 文件。

mkdir /home/mrlin/bin
cd /home/mrlin/bin
vim sxync
  • 1
  • 2
  • 3

编写内容如下:

#!/bin/bash
#1.判断参数个数
if [ $# -lt 1 ]
then
		echo Not Enough Arguement!
		exit;
fi
#2.遍历集群所有机器
for host in hadoop102 hadoop103 hadoop104
do
		echo ================== $host ==================
		# 3.遍历所有目录,挨个发送
		for file in $@
		do
				# 4.判断文件是否存在
				if [ -e $file ]
				then
						# 5.获取父目录
						pdir=$(cd -P $(dirname $file); pwd)
						# 6.获取当前文件的名称
						fname=$(basename $file)
						# 7.ssh登录其他服务器账号创建目录
						ssh $host "mkdir -p $pdir"
						# 8.同步文件
						rsync -av $pdir/$fname $host:$pdir
				else
						echo $file does not exists!
				fi
		done
done
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30

修改脚本具有执行权限

chmod +x xsync
  • 1

测试脚本是否可用,将xsync脚本同步到其他服务器上

xsync /home/mrlin/bin
  • 1

将脚本复制到/bin中,以便全局调用

sudo cp xsync /bin/
  • 1

同步环境变量配置(root所有者)

sudo ./bin/sxync /etc/profile.d/myenv.sh
  • 1

注意:如果用了sudo,那么 xsync 一定要给它的路径补全 ./bin/sxync。

7、hadoop生产环境配置介绍

Hadoop配置文件分两类:默认配置文件和自定义配置文件,当想修改某一配置值时,我们一般是修改自定义配置文件,更改其相应属性值。因为一是自定义的配置文件优先级比默认配置文件的优先级高,同一个属性如果在默认配置和自定义配置都设置,则会以自定义中设置的为准,而造成修改默认配置却不生效的后果;二是我们一般不修改系统的默认配置,这样当想恢复系统默认的时候,只需要删除自定义配置文件里面相对应的属性值即可。
(1)系统默认配置文件路径

要获取的默认文件文件存放在Hadoop的jar包中的位置
[core-default.xml]hadoop-common-3.1.3.jar/core-default.xml
[hdfs-default.xml]hadoop-hdfs-3.1.3.jar/hdfs-default.xml
[yarn-default.xml]hadoop-yarn-common-3.1.3.jar/yarn-default.xml
[mapred-default.xml]hadoop-mapreduce-client-core-3.1.3.jar/mapred-default.xml

(2)自定义配置文件路径
自定义配置文件的路径都在 /opt/module/hadoop-3.1.3/etc/hadoop 里面,里面分别对应核心配置文件 core-site.xml,hdfs 配置文件 hdfs-site.xml ,yarn 配置文件 yarn-site.xml 和 mapreduce 配置文件 mapred-site.xml。

1)集群配置

配置 NameNode、SecondaryNameNode 和 ResourceManager 到不同的服务器上面,这3个都是比较耗内存的,也是功能不同的,所以分开配置到不同服务器。
这里 NameNode 可以看成是 HDFS 的管理者,SecondaryNameNode 是辅助 NameNode 的次管理者,帮忙协助 NameNode 处理事情,也能作为 NameNode 的部分备份。
ResourceManager 可以看成是 yarn 的管理者,也叫资源管理器。
自定义文件配置:

vim /opt/module/hadoop-3.1.3/etc/hadoop/core-site.xml 
vim /opt/module/hadoop-3.1.3/etc/hadoop/hdfs-site.xml 
vim /opt/module/hadoop-3.1.3/etc/hadoop/yarn-site.xml 
vim /opt/module/hadoop-3.1.3/etc/hadoop/mapred-site.xml
  • 1
  • 2
  • 3
  • 4

(1)配置核心文件 core-site.xml

<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>

<configuration>
    <!-- 指定NameNode的地址 -->
    <property>
        <name>fs.defaultFS</name>
        <value>hdfs://hadoop102:8020</value>
    </property>

    <!-- 指定hadoop数据的存储目录 -->
    <property>
        <name>hadoop.tmp.dir</name>
        <value>/opt/module/hadoop-3.1.3/data</value>
    </property>

    <!-- 配置HDFS网页登录使用的静态用户为mrlin -->
    <property>
        <name>hadoop.http.staticuser.user</name>
        <value>mrlin</value>
    </property>
</configuration>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22

(2)配置HDFS文件 hdfs-site.xml

<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>

<configuration>
	<!--nn NameNode web端访问地址-->
	<property>
        <name>dfs.namenode.http-address</name>
        <value>hadoop102:9870</value>
    </property>
	<!-- 2nn SecondaryNameNode web端访问地址-->
    <property>
        <name>dfs.namenode.secondary.http-address</name>
        <value>hadoop104:9868</value>
    </property>
</configuration>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15

(3)配置YARN文件 yarn-site.xml

<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>

<configuration>
    <!-- 指定MR走shuffle -->
    <property>
        <name>yarn.nodemanager.aux-services</name>
        <value>mapreduce_shuffle</value>
    </property>

    <!-- 指定ResourceManager的地址-->
    <property>
        <name>yarn.resourcemanager.hostname</name>
        <value>hadoop103</value>
    </property>

    <!-- 环境变量的继承 -->
    <property>
        <name>yarn.nodemanager.env-whitelist</name>
        <value>JAVA_HOME,HADOOP_COMMON_HOME,HADOOP_HDFS_HOME,HADOOP_CONF_DIR,CLASSPATH_PREPEND_DISTCACHE,HADOOP_YARN_HOME,HADOOP_MAPRED_HOME</value>
    </property>
</configuration>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22

(4)配置MapReduce文件 mapred-site.xml

<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>

<configuration>
	<!-- 指定MapReduce程序运行在Yarn上 -->
    <property>
        <name>mapreduce.framework.name</name>
        <value>yarn</value>
    </property>
</configuration>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

(5)配置集群的workers,将需要添加进集群的服务器都加进来

vim /opt/module/hadoop-3.1.3/etc/hadoop/workers
  • 1

添加如下内容:

hadoop102
hadoop103
hadoop104
  • 1
  • 2
  • 3

注意:该文件中添加的内容结尾不允许有空格,文件中不允许有空行。

(6)分发配置信息
将自定义的配置信息分发到其他的服务器上面。

xsync /opt/module/hadoop-3.1.3/etc/hadoop/
  • 1

在其他的服务上面,查看 mapred-site.xml 是否和配置的信息一致。

(7)启动集群
如果集群是第一次启动,需要在hadoop102节点格式化NameNode,格式化NameNode会生成新的集群id。如果是集群在运行过程中报错,需要重新格式化NameNode的话,一定要先停止 namenode 和 datanode 进程,并且要删除所有服务器上面的data和logs目录,然后再进行格式化。如果不先删除data和log目录的内容,当重新格式化NameNode后,会生成新的id,导致新的id跟之前datanode的id不一致,集群就无法正常启动。

# 在 hadoop102 节点上格式化 namenode(集群第一次启动时,才需要)
hdfs namenode -format
# 在 hadoop102 节点上启动HDFS
sbin/start-dfs.sh
# 在配置了ResourceManager的节点(hadoop103上)启动YARN
sbin/start-yarn.sh
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

Web端查看HDFS的NameNode
(a)浏览器中输入:http://hadoop102:9870
(b)查看HDFS上存储的数据信息
Web端查看YARN的ResourceManager
(a)浏览器中输入:http://hadoop103:8088
(b)查看YARN上运行的Job信息

(8)测试集群基本功能
在集群新建目录,上传文件到集群中,并将文件再次下载下来:

hadoop fs -mkdir /input
hadoop fs -put  /opt/software/jdk-8u212-linux-x64.tar.gz  /
hadoop fs -get /jdk-8u212-linux-x64.tar.gz ./
  • 1
  • 2
  • 3

新建目录并上传文件后,可以通过 http://hadoop102:9870 查看文件是否存在。

2)历史服务器配置

为了查看程序的历史运行情况,需要配置一下历史服务器,具体配置步骤如下:
(1)配置mapred-site.xml
在 mapred-site.xml 文件里面添加如下配置

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

<!-- 历史服务器web端地址 -->
<property>
    <name>mapreduce.jobhistory.webapp.address</name>
    <value>hadoop102:19888</value>
</property>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

(2)分发历史服务器的配置

xsync /opt/module/hadoop-3.1.3/etc/hadoop/mapred-site.xml
  • 1

(3)在hadoop102启动历史服务器

mapred --daemon start historyserver
  • 1

(4)查看历史服务器是否启动

jps
  • 1

(5)在Web端,浏览器中输入以下网址,查看JobHistory
http://hadoop102:19888/jobhistory

3)日志服务器配置

应用运行完成以后,将程序运行日志信息上传到HDFS系统上,可以查看到程序运行的详细情况,方便开发和调试。具体配置步骤如下:
注意:开启日志聚集功能,需要重新启动NodeManager 、ResourceManager和HistoryServer。
(1)配置yarn-site.xml
在 yarn-site.xml 中添加配置如下:

<!-- 开启日志聚集功能 -->
<property>
    <name>yarn.log-aggregation-enable</name>
    <value>true</value>
</property>
<!-- 设置日志聚集服务器地址 -->
<property>  
    <name>yarn.log.server.url</name>  
    <value>http://hadoop102:19888/jobhistory/logs</value>
</property>
<!-- 设置日志保留时间为7天,单位为秒 60*60*24*7 -->
<property>
    <name>yarn.log-aggregation.retain-seconds</name>
    <value>604800</value>
</property>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15

(2)分发日志服务器的配置到其他服务器

xsync /opt/module/hadoop-3.1.3/etc/hadoop/yarn-site.xml
  • 1

(3)关闭NodeManager 、ResourceManager和HistoryServer

sbin/stop-yarn.sh
mapred --daemon stop historyserver
  • 1
  • 2

其中 start-dfs.sh / stop-dfs.sh 为整体启动或关闭 HDFS 进程;
start-yarn.sh / stop-yarn.sh 为整体启动或关闭 yarn 进程;
单独启动或关闭 HSDF 组件namenode,datanode,secondarynamenode 命令如下:

hdfs --daemon start/stop namenode/datanode/secondarynamenode
  • 1

单独启动或关闭 yarn组件 resourcemanager,nodemanager 命令如下:

yarn --daemon start/stop resourcemanager/nodemanager
  • 1

单独启动或关闭历史服务器命令如下:

mapred --daemon start/stop historyserver
  • 1

(4)启动NodeManager 、ResourceManager和HistoryServer

sbin/start-yarn.sh
mapred --daemon start historyserver
  • 1
  • 2

(5)测试hadoop系统自带的wordcount程序
在 /opt/module/hadoop-3.1.3 目录新建 input 目录,并新建文件word.txt。

mkdir input
vim word.txt
  • 1
  • 2

word.txt 里面写入如下内容:

hello world
Hello hadoop
hello hadoop
  • 1
  • 2
  • 3

执行wordcount程序:

hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-3.1.3.jar wordcount /input /output
  • 1

目标文件 output 为hadoop上 hdfs 的目录,且该目录不能存在,存在就会报错。如果再次执行wordcount程序时,需要先删除 output 目录。

hadoop fs -rm -r /output
  • 1

(6)查看刚刚执行程序的日志
http://hadoop102:19888/jobhistory

常用端口号说明:

端口名称Hadoop3.x
NameNode内部通信端口8020 / 9000 / 9820
NameNode HTTP UI9870
MapReduce查看执行任务端口8088
历史服务器通信端口19888

4)集群常用脚本配置

在启动集群的时候,每次都要启动hdfs,启动yarn,启动历史服务器,就显的比较繁琐,一般这种情况,可以将所有的命令都写到脚本里面,只需执行一个命令就所有的进程都启动,同理,关闭的时候也所有的都关闭。
在 /home/mrlin/bin 目录下新建 myhadoop.sh 文件,并输入以下内容:

#!/bin/bash
if [ $# -lt 1 ]
then
    echo "No Args Input..."
    exit ;
fi
case $1 in
"start")
        echo " =================== 启动 hadoop集群 ==================="
        echo " --------------- 启动 hdfs ---------------"
        ssh hadoop102 "/opt/module/hadoop-3.1.3/sbin/start-dfs.sh"
        echo " --------------- 启动 yarn ---------------"
        ssh hadoop103 "/opt/module/hadoop-3.1.3/sbin/start-yarn.sh"
        echo " --------------- 启动 historyserver ---------------"
        ssh hadoop102 "/opt/module/hadoop-3.1.3/bin/mapred --daemon start historyserver"
;;
"stop")
        echo " =================== 关闭 hadoop集群 ==================="
        echo " --------------- 关闭 historyserver ---------------"
        ssh hadoop102 "/opt/module/hadoop-3.1.3/bin/mapred --daemon stop historyserver"
        echo " --------------- 关闭 yarn ---------------"
        ssh hadoop103 "/opt/module/hadoop-3.1.3/sbin/stop-yarn.sh"
        echo " --------------- 关闭 hdfs ---------------"
        ssh hadoop102 "/opt/module/hadoop-3.1.3/sbin/stop-dfs.sh"
;;
*)
    echo "Input Args Error..."
;;
esac
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29

修改脚本赋予执行的权限:

chmod +x myhadoop.sh
  • 1

测试效果:

myhadoop.sh stop
myhadoop.sh start
  • 1
  • 2

查看三台服务器Java进程脚本:jpsall
在 /home/mrlin/bin 目录下新建 jpsall 文件,并输入以下内容:

#!/bin/bash
for host in hadoop102 hadoop103 hadoop104
do
        echo =============== $host ===============
        ssh $host jps 
done
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

同理,赋予执行的权限:

chmod +x jpsall
  • 1

测试效果:

jpsall
  • 1

测试有效时,将脚本分发到其他服务器上,这样其他服务器也能使用:

xsync /home/mrlin/bin/
  • 1

5)部分错误

(1)在hadoop102启动集群的时候,报hadoop104无权限问题,查看hadoop104中的hadoop文件是什么用户,这里是root用户时,因为用户的权限不同,会报无权限问题。
解决方法:修改hadoop104的hadoop文件的用户为mrlin即可,就是跟hadoop102上面属于同一用户。

(2)is running 233589248B beyond the ‘VIRTUAL’ memory limit. Current usage: 10.0 MB of 1 GB physical memory used; 2.3 GB of 2.1 GB virtual memory used. Killing container.
这是因为虚拟内存的检查导致,将虚拟内存的检查关闭即可。
解决方法:在 yarn-site.xml 配置文件中添加如下虚拟内存的检测关闭即可。

	<!-- 取消虚拟内存的限制-->
	<property>
		<name>yarn.nodemanager.vmem-check-enabled</name>
		<value>false</value>
	</property>
  • 1
  • 2
  • 3
  • 4
  • 5

修改完之后,注意分发到其他服务器上面。然后重启yarn服务。

xsync /opt/module/hadoop-3.1.3/etc/hadoop/yarn-site.xml
sbin/stop-yarn.sh
sbin/start-yarn.sh
  • 1
  • 2
  • 3

(3)虚拟机卡死,断电后重启报错/run/initramfs/rdsosreport.txt
解决方法:

# 第一步:首先输入命令查看mapper下面有哪些设备
ls /dev/mapper
# 第二步:输入命令修复centos-root
xfs_repair /dev/mapper/centos-root -L
# 第三步:重启
reboot
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

(4)不识别主机名称
解决方法:在 /etc/hosts 文件中添加ip地址和主机名称的对应关系

192.168.20.102 hadoop102
192.168.20.103 hadoop103
192.168.20.104 hadoop104
192.168.20.105 hadoop105
  • 1
  • 2
  • 3
  • 4

(5)修改环境变量后不生效
一般查看是否没有执行更新命令导致。
解决方法:source /etc/profile

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/菜鸟追梦旅行/article/detail/435693
推荐阅读
相关标签
  

闽ICP备14008679号