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

摘要:
在Linux上构建Hadoop系列:1.构建Hadoop环境的流程图2.构建Hadoop独立模式3.构建Hadoop伪分布式模式4.构建Hadoop全分布式模式注:本教程仅介绍示例。当然,您可以构建类似于教程的Hadoop环境。如果您想构建与本教程稍有不同的Hadoop环境,请注意配置文件参数和文件路径可能不同。

在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主机名运行进程
主节点master192.168.232.200node

NameNode

ResourceManager

SecondaryNameNode

从节点slave1192.168.232.201node1

DataNode

NodeManager

从节点slave2192.168.232.202node2

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完全分布式模式安装部署第1张

//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完全分布式模式安装部署第2张

(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完全分布式模式安装部署第3张

Hadoop完全分布式模式安装部署第4张

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完全分布式模式安装部署第5张

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完全分布式模式安装部署第6张Hadoop完全分布式模式安装部署第7张

Hadoop完全分布式模式安装部署第8张

(4)web界面上查看

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

Hadoop完全分布式模式安装部署第9张Hadoop完全分布式模式安装部署第10张

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

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

(1)准备数据

Hadoop完全分布式模式安装部署第11张

(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

免责声明:文章转载自《Hadoop完全分布式模式安装部署》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇博客园第一搏——Html5 JumpStart学习笔记1:Semantic StructurePSR下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

Java使用SSH远程访问Windows并执行命令

转载于:http://blog.csdn.net/carolzhang8406/article/details/6760430   https://blog.csdn.net/angel_xiaa/article/details/52355513 有关freeSSHd的用法写的很清楚 windows由于没有默认的ssh server,因此在允许ssh之前需...

ssh免密码登录

二、实验需求: 为了服务器的安全,在服务器上禁止root用户通过SSH远程登录。 允许zhangsan用户在192.168.1.2客户机上通过SSH远程登录。 允许lisi用户在192.168.1.3客户机上通过SSH远程登录, 允许jerry用户在所有的客户机上通过SSH远程登录,并且是通过密钥对验证。 三、实验步骤: 1.实验的前提,就是配置i...

DNS服务器原理介绍(一)

DNS(Domain Name System,域名系统),因特网上作为域名和IP地址相互映射的一个分布式数据库,能够使用户更方便的访问互联网,而不用去记住能够被机器直接读取的IP数串。通过主机名,最终得到该主机名对应的IP地址的过程叫做域名解析(或主机名解析)。DNS协议运行在UDP协议之上,使用端口号53。 域名 在讲解DNS之前,首先粗略的说一下域名这...

大数据的那些面试题及答案(一) ---阿善有用

文章目录 1. Flume系列: 2. zookeeper系列 3.spark系列 4.Mysql系列 5.其他大数据面试题 1. Flume系列: 1.Channel Selectors有几种类型,它们的区别是什么?答:有两种。Replicating Channel Selector(默认的)和Multiplexing Channel Sele...

【基础组件18】Apache Druid 0.14入门(一)简介、集群部署、使用kafka 构建实时数据摄取

参考链接: https://www.cnblogs.com/momoyan/p/9614635.html https://blog.csdn.net/weixin_38441544/article/details/82853651 http://www.zhyea.com/2018/07/12/druid-historical-broker-boot-fa...

Hadoop的数据压缩

一、Hadoop的数据压缩 1.概述 在进行MR程序的过程中,在Mapper和Reducer端会发生大量的数据传输和磁盘IO,如果在这个过程中对数据进行压缩处理,可以有效的减少底层存储(HDFS)读写的字节数,,并且通过减少Map和Reduce阶段数据的输入输出来提升MR程序的速度,提高了网络带宽和磁盘空间的效率; 数据压缩可以有效的节省资源,它是MR程序...