Hadoop集群(分布式)部署

对于Hadoop的集群来讲,可以分成两大类角色:Master和Salve。一个HDFS集群是由一个NameNode和若干个DataNode组成的。其中NameNode作为主服务器,管理文件系统的命名空间和客户端对文件系统的访问操作;集群中的DataNode管理存储的数据。
MapReduce框架是由一个单独运行在主节点上的JobTracker和运行在每个从节点的TaskTracker共同组成的。主节点负责调度构成一个作业的所有任务,这些任务分布在不同的从节点上。主节点监控它们的执行情况,并且重新执行之前的失败任务;从节点仅负责由主节点指派的任务。当一个Job被提交时JobTracker接收到提交作业和配置信息之后,就会将配置信息等分发给从节点,同时调度任务并监控TaskTracker的执行。HDFS和MapReduce共同组成了Hadoop分布式系统体系结构的核心。HDFS在集群上实现分布式文件系统,MapReduce在集群上实现了分布式计算和任务处理。
HDFS在MapReduce任务处理过程中提供了文件操作和存储等支持,MapReduce在HDFS的基础上实现了任务的分发、跟踪、执行等工作,并收集结果,二者相互作用,完成了Hadoop分布式集群的主要任务。

一、环境

本教程适合于在 CentOS 7.x,系统中安装Hadoop,适用于Hadoop 2.7.7

查看CentOS版本:

1、查看版本号

CentOS的版本号信息一般存放在配置文件当中,在CentOS中,与其版本相关的配置文件中都有centos关键字,该文件一般存放在/etc/目录下,所以说我们可以直接在该文件夹下搜索相关的文件。

 $ ll /etc/*centos*

在这里插入图片描述
其中存放其版本配置信息的文件为“centos-release”,翻译过来就是“CentOS的发行版”,所以说我们可以在这里查看CentOS相应的版本信息。

查看CentOS的版本号:

$ cat /etc/centos-release

在这里插入图片描述

2、查看内核版本

查询操作系统内核版本信息为:

$ uname –r

在这里插入图片描述

3、查看操作系统位数

查看指令为:

$ getconf LONG_BIT

在这里插入图片描述

4、集群部署规划

在这里插入图片描述
切换到root用户,新建一个bigdata用户,,可以通过Xshell的撰写窗格同时对多个节点创建用户。(如下图)

在这里插入图片描述
在这里插入图片描述

$ useradd bigdata   # 创建新用户bigdata

接着使用如下命令修改密码,按提示输入两次密码,可简单的设为 “hadoop”(密码随意指定,若提示“无效的密码,过于简单”则再次输入确认就行):

$ passwd bigdata

可为非root用户增加管理员权限,方便部署,避免一些对新手来说比较棘手的权限问题,执行:

$ visudo

找到 root ALL=(ALL) ALL 这行(应该在第100行,可以先按一下键盘上的 ESC 键,然后输入 :100 (按一下冒号,接着输入100,再按回车键),可以直接跳到第100行 ),然后在这行下面增加一行内容:bigdata ALL=(ALL) ALL (当中的间隔为tab),点击“i”开始编辑,如下图所示:

在这里插入图片描述

二、网络配置

1、 修改自己所用节点的IP映射(要对所有节点的/etc/hosts进行修改):

$ sudo yum install -y vim  #若没有安装vim,可通过此指令安装
$ sudo vim /etc/hosts

在这里插入图片描述

配置好后需要在各个节点上执行如下命令,测试是否相互 ping 得通,如果 ping 不通,后面就无法顺利配置成功:

$ ping westgis191 -c 5

在这里插入图片描述

2、 设置SSH免密钥

关于ssh免密码的设置,要求每两台主机之间设置免密码,自己的主机与自己的主机之间也要求设置免密码。

CentOS 默认已安装了 SSH
client、SSH server,打开终端执行如下命令进行检验:

$ rpm -qa | grep ssh

如果返回的结果如下图所示,包含了 SSH client 跟 SSH server,则不需要再安装。
在这里插入图片描述

若需要安装,则可以通过 yum 进行安装(安装过程中会让你输入 [y/N],输入 y 即可):

$ sudo yum install openssh-clients
$ sudo yum install openssh-server

在主节点上生成密钥

$ ssh-keygen -t rsa

一直回车如下图
在这里插入图片描述

$ cd ~/.ssh

让节点之间能无密码 SSH 本机,在主节点节点上执行:

$ cat ./id_rsa.pub >> ./authorized_keys
$ chmod 600 ./authorized_keys    # 修改文件权限

接着从主节点将公匙传输到 各从节点:(原理参考:
https://blog.csdn.net/weixin_42294060/article/details/100701688)

$ scp -r /home/bigdata/.ssh bigdata@10.103.104.191:/home/bigdata/

$ scp -r /home/bigdata/.ssh bigdata@10.103.104.192:/home/bigdata/

scp 是 secure copy 的简写,用于在 Linux 下进行远程拷贝文件,类似于 cp 命令,不过 cp 只能在本机中拷贝。执行 scp 时会要求输入用户的密码,输入完成后会提示传输完毕。

可在 Master 节点上执行如下命令进行检验,如下图所示:

在这里插入图片描述
输入exit回到westgis190

三、Java环境安装

首先在oracle官网下载jdk1.7 http://www.oracle.com/technetwork/java/javase/downloads/index.html 接下来进行安装与环境变量配置,根据个人电脑系统选择对应版本。

$ mkdir /home/bigdata/bigdata/java/current                          #创建jvm文件夹
$ tar -zxvf jdk-8u181-linux-x54.tar.gz       # 解压jdk-8u181-linux-x54.tar.gz
$ mv jdk1.8 /home/bigdata/bigdata/java/current         
$ vi ~/.bashrc                               #给JDK配置环境变量

另外推荐使用vim来编辑环境变量,即最后一句使用指令

$ vim ~/.bashrc

如果没有vim,可以使用:

$sudo apt-get install vim

来进行下载。

1、添加环境变量

在~/.bashrc文件添加如下指令:(点击: i 键进入编辑模式)

export JAVA_HOME=/home/bigdata/bigdata/java/current/jdk1.8
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
export PATH=${JAVA_HOME}/bin:$PATH 

在这里插入图片描述

在文件修改完毕以后(点击:esc 键 + wq! 保存编辑内容)

输入:

$ source ~/.bashrc                     #使新配置的环境变量生效
$ java -version                          #检测是否安装成功,查看java版本

在这里插入图片描述

这样,主节点的Hadoop 所需的 Java
运行环境就安装好了。

2、配置其它节点的Java环境

将刚才搞好的java分发到各个从节点,

$scp -r java bigdata@10.103.104.191:/home/bigdata/bigdata/
$scp -r java bigdata@10.103.104.192:/home/bigdata/bigdata/

同上方法在配置个从节点的JDK环境变量

四、安装 Hadoop

先下载hadoop-2.7.7.tar.gz,链接如下:

http://mirrors.hust.edu.cn/apache/hadoop/common/

下面进行安装:

$tar -zxvf hadoop-2.7.7.tar.gz             #解压hadoop-2.7.7.tar.gz
$mv hadoop-2.7.7 /home/bigdata/bigdata/hadoop/          
$sudo chown -R hadoop /home/bigdata/bigdata/hadoop/Hadoop-2.7.7      #sudo#修改文件权限

1、给hadoop配置环境变量

将下面代码添加到~/.bashrc中。

export HADOOP_HOME=/home/bigdata/bigdata/hadoop/hadoop-2.7.7
export CLASSPATH=$($HADOOP_HOME/bin/hadoop classpath):$CLASSPATH
export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin

保存后执行 source ~/.bashrc 使配置生效
执行 hadoop version 检查

2、配置分布式

集群分布式模式正常启动必须要修改
/hadoop-2.7.7/etc/Hadoop/ 中的5个配置文件:core-site.xml、hdfs-site.xml、mapred-site.xml、yarn-site.xml 、slaves 。

(1)修改core-site.xml
$ vim core-site.xml

添加:

<configuration>
	<property>
		<name>fs.defaultFS</name>    
                <value>hdfs://westgis190:9000</value>                     #指定HDFS中NameNode的节点
	</property>
	<property>
		<name>hadoop.tmp.dir</name>
		<value>file:/home/bigdata/bigdata/hadoop/hadoop-2.7.7/tmp</value>     #指定hadoop运行产生文件的存储目录
		<description>Abase for other temporary directories.</description>
	</property>
</configuration>

在这里插入图片描述

(2)修改hdfs-site.xml
<configuration>
	<property>
		<name>dfs.namenode.secondary.http-address</name>
 		<value>westgis192:50090</value>  #设置secondname的端口
	</property>
	<property>
		<name>dfs.replication</name>
		<value>2</value>                  #设置dfs副本数,不设置默认是3个
	</property>
	<property>
		<name>dfs.namenode.name.dir</name>   #设置name文件的目录
		<value>file:/home/bigdata/bigdata/hadoop/hadoop-2.7.7/tmp/dfs/name</value>
	</property>
	<property>
		<name>dfs.datanode.data.dir</name>  #设置data文件的目录
	<value>file:/home/bigdata/bigdata/hadoop/hadoop-2.7.7/tmp/dfs/data</value>
	</property>
</configuration>

在这里插入图片描述

(3)修改mapred-site.xml
$ mv mapred-site.xml.template mapred-site.xml
$ vim mapred-site.xml
<configuration>
	<property>
		<name>mapreduce.framework.name</name>
		<value>yarn</value>              
	</property>
	<property>
		<name>mapreduce.jobhistory.address</name>
		<value>westgis190:10020</value>       #指定jobhistory的节点
 	</property>
	<property>
		<name>mapreduce.jobhistory.webapp.address</name>
		 <value>westgis190:19888</value>
 	</property>
</configuration>

在这里插入图片描述

(4)修改yarn-site.xml
<configuration>
	<property>
		<name>yarn.resourcemanager.hostname</name>
 		<value>westgis190</value>   #指定YARN的ResourceManager的节点
	</property>
 	<property>
 		<name>yarn.nodemanager.aux-services</name>
		<value>mapreduce_shuffle</value>     #reduce获取数据的方式
	</property>
</configuration>
(5)修改slaves

文件 slaves,将作为 DataNode 的主机名写入该文件,每行一个,默认为 localhost,所以在伪分布式配置时,节点即作为 NameNode 也作为 DataNode。分布式配置可以保留 localhost,也可以删掉,让 Master 节点仅作为 NameNode 使用。
本教程让 Master 节点仅作为 NameNode 使用,因此将文件中原来的 localhost 删除,只添加内容:
westgis190、westgis191、westgis192。

$ vim slaves

在这里插入图片描述

3、分发hadoop到节点

$ scp -r hadoop bigdata@westgis191:/home/bigdata/bigdata/
$ scp -r hadoop bigdata@westgis192:/home/bigdata/bigdata/

五、启动集群

1、CentOS系统需要关闭防火墙

CentOS系统默认开启了防火墙,在开启 Hadoop 集群之前,需要关闭集群中每个节点的防火墙。有防火墙会导致 ping 得通但 telnet 端口不通,从而导致 DataNode 启动了,但 Live datanodes 为 0 的情况。

CentOS 7,需通过如下命令关闭

$ systemctl stop firewalld.service    # 关闭firewall
$ systemctl disable firewalld.service # 禁止firewall开机启动

2、格式化Master 节点

首次启动需要先在 Master 节点执行 NameNode 的格式化:

$ hdfs namenode -format       # 首次运行需要执行初始化,之后不需要

3、启动 hadoop

接着可以启动 hadoop 了,启动需要在主节点上进行:

$ start-dfs.sh

$ start-yarn.sh

$ mr-jobhistory-daemon.sh start historyserver

通过命令 jps 可以查看各个节点所启动的进程。正确的话,在westgis190节点上可以看到 NameNode、ResourceManager、、JobHistoryServer 进程,如下图所示:
在这里插入图片描述

在westgis191节点可以看到DataNode 和 NodeManager 进程,如下图所示:

在这里插入图片描述

在westgis192节点可以看到DataNode、SecondrryNameNode 和NodeManager 进程,如下图所示:

在这里插入图片描述

以通过 Web 页面看到查看
DataNode 和 NameNode 的状态:http://westgis190:50070/。如果不成功,可以通过启动日志排查原因。

六、Hadoop启动停止方式

1、 各个模块分开启动或停止(配置ssh是前提)

$ start-dfs.sh
$ start-yarn.sh
$ mr-jobhistory-daemon.sh start historyserver
$ stop-yarn.sh
$ stop-dfs.sh
$ mr-jobhistory-daemon.sh stop historyserver

2、全部启动或停止(不建议使用)

$ start(stop)-all.sh
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值