Hadoop 之完全分布式模式搭建

1、虚拟机环境准备

1、准备三台CentOS虚拟机系统
参考:VirtualBox 之安装CentOS
2、设置主机名

vi /etc/sysconfig/network
NETWORKING=yes
HOSTNAME=cnode1

3、关闭防火墙

# 查看防火墙状态
service iptables status

1) 永久性生效,重启后不会复原
开启: chkconfig iptables on
关闭: chkconfig iptables off

2) 即时生效,重启后复原
开启: service iptables start
关闭: service iptables stop

4、配置IP、主机名映射
1)首先配置第一台机器的hosts,信息如下:

192.168.56.61   cnode1
192.168.56.62   cnode2
192.168.56.63   cnode3

2)将配置好的hosts分发到其他机器。

sudo scp /etc/hosts root@<IP>:/etc/hosts

5、同步时间

# 查看时间
date
# 安装同步时间工具
yum install ntpdate
# 网络同步时间
ntpdate cn.pool.ntp.org

6、配置SSH免密登陆

# 生成ssh免登陆密钥(三个回车)
ssh-keygen -t rsa

执行完命令后,会生成私钥(id_rsa)、公钥(id_rsa.pub),放到当前用户根目录下的.ssh文件夹中。
一般是需要在节点上执行启动脚本的机器上生成公私钥后,将公钥分发出去。

# 将公钥拷贝到要免密登陆的目标机器上
# 本机也要配置免密登陆
ssh-copy-id cnode1
ssh-copy-id cnode2
ssh-copy-id cnode3

参考:https://blog.csdn.net/const_/article/details/99290754

7、JDK环境安装
Hadoop使用Java开发的,所以必须安装JDK。

# 上传JDK安装包
jdk-8u191-linux-x64.tar.gz
# 解压安装包
tar -xvf jdk-8u191-linux-x64.tar.gz -C /opt/
# 如果JDK目录所属用户不是当前用户,可用下面的命令修改所属用户
chown root:root -R jdk1.8.0_191
# 配置环境变量
vi /etc/profile
# 在末尾行添加
export JAVA_HOME=实际的Java根目录
export CLASSPATH=.:$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jar
export PATH=$PATH:$JAVA_HOME/bin
# 刷新配置
source /etc/profile
java -version

将JDK包和配置好的环境变量分发到其他机器,因为其他机器的用户名和本机相同,所以这里分发命令中可以省略用户名。

scp -r /opt/jdk1.8.0_191/ cnode2:/opt/
scp -r /opt/jdk1.8.0_191/ cnode3:/opt/
scp -r /etc/profile cnode2:/etc/
scp -r /etc/profile cnode3:/etc/

然后分别在其他机器上执行刷新配置命令。

2、Hadoop2.x安装

1、Hadoop下载地址:
https://archive.apache.org/dist/hadoop/common/hadoop-2.7.0/
2、上传Hadoop安装包

hadoop-2.7.0.tar.gz

3、解压安装包

tar -xvf hadoop-2.7.0.tar.gz -C /opt/
chown root:root -R hadoop-2.7.0/

这里设置Hadoop环境变量在下面的步骤中介绍。

3、Hadoop配置文件修改

集群部署角色分配如下:

node1node2node3
HDFSNameNodeDateNodeDateNode
YARNResourceManager、NodeManagerNodeManager、secondaryNameNodeNodeManager

1、配置:hadoop-env.sh
Hadoop运行环境配置文件。
修改 hadoop-env.sh,指定JAVA_HOME 路径。
vi hadoop-env.sh

export JAVA_HOME=/opt/jdk1.8.0_191

2、配置:core-site.xml
Hadoop核心配置文件。
hadoop根目录创建tmp文件夹。mkdir -p tmp
vi core-site.xml

<!-- 指定HDFS中NameNode的地址 -->
   <property>
       <name>fs.defaultFS</name>
       <value>hdfs://cnode1:9000</value>
   </property>
<!-- 指定Hadoop运行时产生文件的存储目录,默认:/tmp/hadoop-${user.name} -->
<property>
	<name>hadoop.tmp.dir</name>
	<value>/opt/hadoop-2.7.0/tmp</value>
</property>

3、配置:hdfs-site.xml
HDFS配置文件。
vi hdfs-site.xml

<!-- 指定HDFS副本的数量 -->
<property>
	<name>dfs.replication</name>
	<value>2</value>
</property>
<!-- 指定Hadoop辅助NameNode主机配置 -->
<property>
	<name>dfs.namenode.secondary.http-address</name>
	<value>cnode2:50090</value>
</property>
<!-- 禁用权限检查-->
<property>
    <name>dfs.permissions.enabled</name>
    <value>false</value>
</property>

4、配置:yarn-site.xml
vi 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>cnode1</value>
</property>

5、配置:mapred-site.xml
mapred-site.xml.template 重新命名为 mapred-site.xml

mv mapred-site.xml.template mapred-site.xml
vi mapred-site.xml
<configuration>
	<!-- 指定MR运行在YARN上 -->
	<property>
		<name>mapreduce.framework.name</name>
		<value>yarn</value>
	</property>
</configuration>

6、配置:slaves
${HADOOP_HOME}/etc/hadoop/slaves
vi slaves

cnode1
cnode2
cnode3

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

7、配置Hadoop环境变量

vi /etc/profile
# 文件末尾添加Hadoop路径
export HADOOP_HOME=/opt/hadoop-2.7.0
export PATH=$PATH:$HADOOP_HOME/bin
export PATH=$PATH:$HADOOP_HOME/sbin
# 刷新配置
source /etc/profile
# 测试是否安装成功
hadoop version

8、将配置好的Hadoop和环境变量分发到其他机器

scp -r /opt/hadoop-2.7.0/ cnode2:/opt
scp -r /opt/hadoop-2.7.0/ cnode3:/opt
scp -r /etc/profile cnode2:/etc/
scp -r /etc/profile cnode3:/etc/

如果编写了集群分发文件脚本,使用如下命令进行分发文件。

xsync /opt/hadoop-2.7.0/
xsync /etc/profile/

分发环境变量配置后记得刷新配置。
如果编写了集群分发命令脚本,使用如下命令进行分发命令。

xcall source /etc/profile

集群分发脚本编写参考:
https://blog.csdn.net/const_/article/details/99221979

4、Hadoop集群启动

如果集群是第一次启动,需要格式化NameNode,并且在第一次格式化后,以后就不要再格式化了,不然集群会出错的。(本质上是一些清理和准备工作,因为此时的HDFS在物理上还是不存在的。)
如果必须要进行格式化,一定要先停止上次启动的所有namenode和datanode进程,然后再删除hadoop.tmp.dir指定的目录和Hadoop根目录下logs文件夹数据。

# 在主节点上格式化NameNode(第一次启动时格式化,以后就不要总格式化)
hdfs namenode -format

启动Hadoop集群,需要启动HDFS、YARN两个集群。

1、单节点逐个启动

# 在cnode1主节点上启动HDFS NameNode
sbin/hadoop-daemon.sh start namenode

# 在cnode2、cnode3从节点上分别启动HDFS DataNode
sbin/hadoop-daemon.sh start datanode

注意:启动YARN前必须保证NameNode和DataNode已经启动。

# 在cnode1主节点上启动YARN ResourceManager
sbin/yarn-daemon.sh start resourcemanager

# 在cnode2、cnode3从节点上启动YARN NodeManager
sbin/yarn-daemon.sh start nodemanager

Hadoop后台管理界面:
http://cnode1:50070
在这里插入图片描述
YARN资源调度管理界面:
http://cnode1:8088/
在这里插入图片描述
2、脚本一键启动
如果配置了etc/hadoop/slavesssh免密登陆,就可以使用程序脚本启动所有Hadoop两个集群的相关进程。

# 在cnode1主节点上执行。
# 启动HDFS集群
sbin/start-dfs.sh
# 启动YARN集群
sbin/start-yarn.sh

# 停止集群:
sbin/stop-dfs.sh
sbin/stop-yarn.sh

注意:NameNodeResourceManger如果不是同一台机器,不能在NameNode上启动 YARN,应该在ResouceManager所在的机器上启动YARN

3、查看启动后的相关进程
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

Web端查看SecondaryNameNode:
http://cnode2:50090/status.html
在这里插入图片描述

5、Hadoop集群基本测试

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值