Hadoop完全分布式模式安装部署

时间:2024-06-13 09:35:08

在Linux上搭建Hadoop系列:1.Hadoop环境搭建流程图2.搭建Hadoop单机模式3.搭建Hadoop伪分布式模式4.搭建Hadoop完全分布式模式

注:此教程皆是以范例讲述的,当然你可以按照教程搭建一个与教程一样的Hadoop环境,如果你想搭建一个与本教程有一些差异的Hadoop环境,这时请注意配置文件的参数可能不一样以及文件路径不一样。

目录

1.Hadoop集群规划与部署

(1)准备3台虚拟机

(2)分别映射好三台虚拟机的IP与主机名

(3)设置三台机器时钟同步

(4)设置三台机器两两之间SSH密码登录

(5)修改主节点配置文件并远程拷贝到从节点

1.在主节点上修改配置文件

2.将主节点的配置文件分发到两个从节点

2.格式化HDFS并启动Hadoop

(1)在主节点上格式化HDFS

(2)在主节点上启动Hadoop

(3)在各节点上用JPS查看进程

(4)web界面上查看

3.在完全分布式模式下运行Hadoop自带示例程序

1.在完全分布式模式下使用wordcount示例程序完成单词统计

(1)准备数据

(2)运行wordcount程序

(3)查看运行结果

2.在完全分布式模式下使用wordmean示例程序计算文件中单词的平均长度

(1)准备数据:HDFS上的/input

(2)运行wordmean程序

(3)查看结果


1.Hadoop集群规划与部署

一个完全分布式模式Hadoop集群至少由三台机器构成,此处搭建一个三台机器构成的小集群。

一主二从结构
节点角色 虚拟机名 机器IP 主机名 运行进程
主节点 master 192.168.232.200 node

NameNode

ResourceManager

SecondaryNameNode

从节点 slave1 192.168.232.201 node1

DataNode

NodeManager

从节点 slave2 192.168.232.202 node2

DataNode

NodeManager

(1)准备3台虚拟机

3台虚拟机可以是已部署单机模式Hadoop,已部署伪分布模式Hadoop,当然也可以是从零开始的基础环境。

克隆出三台虚拟机

注:为方便管理可以建一个文件夹(full-Distributed),将三台虚拟机放入其中。

(2)分别映射好三台虚拟机的IP与主机名

//1.修改IP避免冲突
vi /etc/sysconfig/network-scripts/ifcfg-ens33 //编辑网络配置
systemctl restart network //重启网络服务

此处为方便记忆,建议master节点IP尾数用200,slave1用201,slave2用202.Hadoop完全分布式模式安装部署

//2.修改主机名
hostname //查看主机名
hostnamectl set-hostname node //将主机名改为node
hostnamectl set-hostname node1 //将主机名改为node1
hostnamectl set-hostname node2 //将主机名改为node2

master用node,slave1用node1,slave2用node2.

//3.映射IP与主机名
vi /etc/hosts

Hadoop完全分布式模式安装部署

(3)设置三台机器时钟同步

完全分布式模式由多台主机组成,如果主机间时间差异较大,运行Hadoop的时候会出现问题,因此需要对每个节点配置时钟同步。

采用NTP服务通过获取网络时间使集群内不同主机的时间保持一致

此处选取阿里云的时间服务器aliyun.com

//1.安装NTP服务
yum install ntp
//2.手动同步时间
ntpdate -u ntp1.aliyun.com
//3.查看时间
date

(4)设置三台机器两两之间SSH密码登录

在完全分布式模式下,集群内任意一台主机可免密登录集群内所有主机,实现两两免密登录。

若是以伪分布模式为基础的机器则需要先删除node,node1,node2主机上原有的.ssh目录

然后分别在node,node1,node2主机上生成公钥/私钥密钥对,再将公钥发送给集群内的所有主机。

//1.在各节点上删除原有.ssh目录,然后重新生成密钥对
rm -rf /root/.ssh //删除原有.ssh目录
ssh-keygen -t rsa //生成密钥对
cd ~/.ssh //进入.ssh目录
ll //查看密钥对
//2.在各节点的.ssh目录下将公钥复制到node节点
cd ~ //进入根目录
ssh-copy-id node //复制公钥到node节点
ssh-copy-id node1 //复制公钥到node1节点
ssh-copy-id node2 //复制公钥到node2节点
//3.查看node节点上的authorized_key文件
cd .ssh //进入.ssh目录
more authorized_keys
//4.将node节点上的authorized_keys文件远程拷贝到node1,node2
scp authorized_keys node1:~/.ssh/authorized_keys //执行过程中输入yes与密码
scp authorized_keys node2:~/.ssh/authorized_keys //执行过程中输入yes与密码
//5.验证免密登录,注意查看提示符中主机名称的变化
ssh node2 //免密登录node2节点
exit //退出远程登录
ssh node1 //免密登录node1节点
exit //退出远程登录

(5)修改主节点配置文件并远程拷贝到从节点

概要:

1.在主节点上修改配置文件(以下皆以伪分布式Hadoop为基础的虚拟机作为示范)
核心配置文件
core-site.xml 修改 HDFS配置文件
hadoop-env.sh 不变
hdfs-site.xml 修改 MapReduce配置文件
mapred-env.sh 修改
mapred-site.xml 不变 Yarn配置文件
yarn-env.sh 修改
yarn-site.xml 修改 slaves 修改

1.在主节点上修改配置文件

核心配置文件

core-site.xml  修改

cd /export/server/hadoop-2.7.2/etc/hadoop
vi core-site.xml
//在<configuration></configuration>中插入<property></property>中的代码。注意主机名与文件路径是否是自己的 <configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://node:9000</value>
<description>HDFS的URI,设定namenode的主机名及端口</description>
</property> <property>
<name>hadoop.tmp.dir</name>
<value>/export/server/tmp</value>
<description>节点上本地的hadoop临时文件夹,之前一定要先建立好</description>
</property>
</configuration>

HDFS配置文件

hadoop-env.sh  不变  //在伪分布式已修改过

hdfs-site.xml  修改

vi hdfs-site.xml
//在<configuration></configuration>中插入<property></property>中的代码。注意主机名与文件路径是否是自己的
<configuration>
<property>
<name>dfs.namenode.name.dir</name>
<value>file:/export/server/hdfs/name</value>
<description>namenode上存储hdfs名字空间元数据 </description>
</property> <property>
<name>dfs.datanode.data.dir</name>
<value>file:/export/server/hdfs/data</value>
<description>datanode上数据块的物理存储位置</description>
</property> <property>
<name>dfs.replication</name>
<value>2</value>
<description>副本个数,默认是3,应小于datanode机器数量</description>
</property> </configuration>

MapReduce配置文件

mapred-env.sh  修改

mapred-site.xml 不变

which java //查看java安装路径
vi mapred-env.sh
插入export JAVA_HOME=/bin以前的java安装路径

Hadoop完全分布式模式安装部署

Hadoop完全分布式模式安装部署

Yarn配置文件

yarn-env.sh  修改

yarn-site.xml  修改

which java //获取java安装路径
vi yarn-env.sh
插入export JAVA_HOME=/bin以前的java安装路径
vi yarn-site.xml
//在<configuration></configuration>中插入<property></property>中的代码。注意主机名是否是自己的
<configuration>
<property>
<name>yarn.resourcemanager.hostname</name>
<value>node</value>
<description>指定resourcemanager所在的hostname,
即指定yarn的老大即ResourceManger的地址
</description>
</property> <property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
<description>NodeManager上运行的附属服务。
指定NodeManager获取数据的方式是shuffle
需配置成mapreduce_shuffle,才可运行MapReduce程序
</description>
</property>
</configuration>

slaves 修改

slaves文件给出了Hadoop集群的slave节点列表。启动Hadoop时,系统总是根据当前slaves文件中slave节点名称列表启动集群,不在列表中的Slave节点便不会被视为计算节点。

vi slaves
插入各节点名

Hadoop完全分布式模式安装部署

2.将主节点的配置文件分发到两个从节点

分发到node1从节点
scp -r /export/server/hadoop-2.7.2/etc/hadoop node1:/export/server/hadoop-2.7.2/etc/
分发到node2从节点
scp -r /export/server/hadoop-2.7.2/etc/hadoop node2:/export/server/hadoop-2.7.2/etc/

2.格式化HDFS并启动Hadoop

(1)在主节点上格式化HDFS

hdfs namenode -format

(2)在主节点上启动Hadoop

start-all.sh //启动所有进程
//或
start-dfs.sh
start-yarn.sh

(3)在各节点上用JPS查看进程

Hadoop完全分布式模式安装部署Hadoop完全分布式模式安装部署

Hadoop完全分布式模式安装部署

(4)web界面上查看

在浏览器输入主机的IP地址:50070

Hadoop完全分布式模式安装部署Hadoop完全分布式模式安装部署

3.在完全分布式模式下运行Hadoop自带示例程序

1.在完全分布式模式下使用wordcount示例程序完成单词统计

(1)准备数据

Hadoop完全分布式模式安装部署

(2)运行wordcount程序

cd /export/server/hadoop-2.7.2/share/hadoop/mapreduce/
hadoop jar hadoop-mapreduce-examples-2.7.2.jar wordcount/input/wcoutput

(3)查看运行结果

hadoop fs -ls /wcoutput
hadoop fs -cat wcoutput/part*

2.在完全分布式模式下使用wordmean示例程序计算文件中单词的平均长度

(1)准备数据:HDFS上的/input

(2)运行wordmean程序

hadoop jar hadoop-mapreduce-examples-2.7.2.jar wordmean/input/wmoutput

(3)查看结果

hadoop fs -ls /wmoutput
hadoop fs -cat /wmouput/part*
搭建完全分布式模式Hadoop
准备3台虚拟机 克隆
在3台机器上分别设置IP和主机名并映射关系

vi /etc/sysconfig/network-scripts/ifcfg-ens33  //更改IP

hostnamectl set-hostname node  //更改主机名

vi /etc/hosts  //映射关系

设置3台机器时钟同步

yum install ntp //安装ntp服务

ntpdate -u ntp1.aliyun.com //手动同步时间

配置3台机器两两之间SSH免密登录

ssh-keygen -t rsa  //获取密钥

ssh-copy-id node  //复制公钥到node节点

修改主节点配置文件并远程拷贝到从节点

vi 各配置文件

scp -r /export/server/hadoop-2.7.2/etc/hadoop

node1:/export/server/hadoop-2.7.2/etc/

格式化HDFS并启动Hadoop

hdfs namenode -format  //格式化HDFS

start-all.sh //启动Hadoop所有进程

jps //查看进程

完全分布式模式运行Hadoop自带示例程序 hadoop jar hadoop-mapreduce-examples-2.7.2.jar wordcount/input/wcoutput