一、分布式部署概述

Hadoop环境的搭建有三种方式:

         本地环境搭建伪分布式环境搭建完全分布式环境搭建集群

在前面的文章中,详细描述了如何搭建本地环境【https://blog.csdn.net/qq_37142346/article/details/78927584】及伪分布式环境【https://blog.csdn.net/qq_37142346/article/details/79673710】。在这两种模式中,都是在一台机器中运行着所有进程,这里,我们讲解一下如何搭建Hadoop集群,所谓集群就是在多台机器上运行这些进程。

下面让我们来总结一下Hadoop三大组件的配置文件:

hdfs:
|hadoop-env.sh |【jdk环境的配置】
|-
|hdfs-site.xml |【Hadoop备份文件,secondaryNameNode】
|core-site.xml |【namenode】
|slaves |【DataNode节点】
yarn:
|yarn-env.sh |【jdk环境配置】
|-
|yarn-site.xml |【resourcemanager,日志聚集,节点资源配置】
|slaves |【nodemanager节点配置】
mapreduce:
|mapred-env.sh |【jdk环境配置】
|-
|mapred-site.xml |【job运行方式(yarn或者local),jobhistoryserver】

通过上面的配置文件,我们就很清楚了如何去搭建集群。
下面,让我们来看看如何搭建Hadoop集群。

二、搭建Hadoop集群

1.预备工作
在前面我们搭建了一台虚拟机来运行Hadoop,这里为了搭建集群,我们用之前的虚拟机来克隆两台虚拟机。

克隆好虚拟机之后,我们就要设置这三台虚拟机在同一个网关中,并且修改主机名以及ip与主机名之间的映射(etc/hosts文件)。

hostname hadoop-senior02.shinelon.com
hostname hadoop-senior03.shinelon.com

另外,还要到每一台虚拟机etc/sysconfig/network文件中去修改主机名,不然下次启动会恢复到之前的主机名。

下面是我的三台虚拟机的主机名机器ip地址映射,读者可以自行设置自己的ip地址,主机名,只要保证在同一个网关下即可(因为后面要通过ssh协议来向各个节点分发资源文件)。

xxx.xxx.xxx.110 hadoop-senior.shinelon.com hadoop-senior
xxx.xxx.xxx.111 hadoop-senior02.shinelon.com hadoop-senior02
xxx.xxx.xxx.112 hadoop-senior03.shinelon.com hadoop-senior03

(记得在物理机windows也配置一下ip与主机名的映射,便于访问web网页)

接着,我们来给每一个节点分配一下cpu以及内存:
|主机名 |hadoop-senior.shinelon|hadoop-senior02.com|hadoopp-senior03.com |
|-
|CPU |1 |1 |1
|内存 |1.5G |1G |1G
至于每一个虚拟机挂载的磁盘大小可以按照个人需要来分配,这里每一个虚拟机分配了20G磁盘空间。

到这里我们的准备工作已经准备的差不多了,下面我们来详细讲解一下怎样来搭建集群。

2.搭建集群
现在我们有三台虚拟机,所以我们要每一个虚拟机来分配任务。来构建一个集群。下面是为每一个机器分配的进程 :
|主机名 |hadoop-senior.shinelon|hadoop-senior02.com|hadoopp-senior03.com |
|-
|HDFS |NameNode,DataNode |DataNode |DataNode,SecondaryNameNode
|YARN |NodeManager |ReourceManager,NodeManager |NodeManager
|MapReduce |JobHistoryServer

接下来,我们来配置hadoop的每一个配置文件,首先我们在hadoop-senior.shinelon.com这台主机上来配置文件,然后后面会通过ssh协议来分发到每一个节点。

(1)、修改配置文件
首先,在每一台虚拟机下的opt目录下新建一个文件夹来作为hadoop安装目录。

mkdir  app

这里我将之前在opt/softwares文件夹下的hadoop压缩包解压到该app目录下(该操作只在hadoop-senior.shinelon.com主机上进行)

tar -zxf /opt/softwares/hadoop-2.5.0.tar.gz  -C  /opt/app/

然后切换到hadoop的安装目录下的etc/hadoop目录下修改配置文件:

[shinelon@hadoop-senior app]$ cd hadoop-2.5.0/etc/hadoop/

下面,我们安装上面总结的配置文件依次修改文件:
hadoop-env.sh:配置jdk

export JAVA_HOME=/opt/modules/jdk1.7.0_79

hdfs-site.xml:

<property><name>dfs.namenode.secondary.http-address</name><value>hadoop-senior03.shinelon.com:50090</value></property>

core-site.xml:

 <property><name>fs.defaultFS</name><value>hdfs://hadoop-senior.shinelon.com:8020</value></property><!--Hadoop的数据临时存储目录 --><property><name>hadoop.tmp.dir</name><value>/opt/app/hadoop-2.5.0/data/tmp</value></property><!--垃圾回收 --><property><name>fs.trash.interval</name><value>420</value></property>

slaves文件:(注意下面的每一行是一个节点主机名)

hadoop-senior.shinelon.com
hadoop-senior02.shinelon.com
hadoop-senior03.shinelon.com

yarn-env.sh:

# some Java parameters
export JAVA_HOME=/opt/modules/jdk1.7.0_79

yarn-site.xml:

<!-- Site specific YARN configuration properties --><property><name>yarn.resourcemanager.hostname</name><value>hadoop-senior02.shinelon.com</value></property><property><name>yarn.nodemanager.aux-services</name><value>mapreduce_shuffle</value></property><!--Nodemanager resource --><property><name>yarn.nodemanager.resource.memory-mb</name><value>4096</value></property><property><name>yarn.nodemanager.resource.cpu-vcores</name><value>4</value></property><!--开启日志功能,默认为false --><property><name>yarn.log-aggregation-enable</name><value>true</value></property><!--日志在HDFS上存放的最大时间,以秒为单位,这里是存放七天 --><property><name>yarn.log-aggregation.retain-seconds</name><value>640800</value></property>

NodeManager已经在上面的slaves文件中配置过了。
mapred-env.sh:

export JAVA_HOME=/opt/modules/jdk1.7.0_79

mapred-site.xml:

 <property><name>mapreduce.framework.name</name><value>yarn</value></property><!--jobhistoryserver --><property><name>mapreduce.jobhistory.address</name><value>hadoop-senior.shinelon.com:10020</value></property><property><name>mapreduce.jobhistory.webapp.address</name><value>hadoop-senior.shinelon.com:19888</value></property>

(2)配置主节点(NameNode和ResourceManager)到每一个从节点的SSH免密匙登录
因为在hadoop-senior.shinelon.com这台主机上已经设置好了ssh密匙,因此这里通过ssh-copy-id命令将密匙拷贝到每一台节点上。(在.ssh/目录下执行,该目录在用户主目录下)

ssh-copy-id hadoop-senior02.shinelon.com
ssh-copy-id hadoop-senior03.shinelon.com

然后通过scp将之前压缩并且配置好的文件拷贝到每一个节点的opt/app目录下:

scp -r ./hadoop/ shinelon@hadoop-senior02.shinelon.com:/opt/app/
scp -r ./hadoop/ shinelon@hadoop-senior03.shinelon.com:/opt/app/

这时,我们在NameNode(hadoop-senior.shinelon.com)主节点上到其他从节点的SSH免密匙登录已经配置好。我们可以通过测试验证:

接下来我们来配置ResourceManager(hadoop-senior02.shinelon.com)主节点到每一个从节点的免密匙登录(不然在启动NodeManager是要一个个启动)。

由于之前为了从主节点分配资源到各个从节点通过ssh-copy-id到每一个从节点,这里为了防止之前的出问题,我们删除hadoop-senior02…,hadoop-senior03…从节点上的ssh密匙重新拷贝:

[shinelon@hadoop-senior02 .ssh]$ rm -rf ./*
[shinelon@hadoop-senior03 .ssh]$ rm -rf ./*

删除后重新从hadoop-senior.shinelon.com主机上拷贝密钥:

ssh-copy-id hadoop-senior02.shinelon.com
ssh-copy-id hadoop-senior03.shinelon.com

拷贝好后,我们就可以开始在resourcemanager主节点上配置到hadoop-senior.shinelon.com 和hadoop-senior03.shinelon.com节点上无密匙登录操作:
首先在主节点hadoop-senior02.shinelon.com上生成密匙,输入下面密令,连续按四次回车键:

[shinelon@hadoop-senior02 .ssh]$ ssh-keygen -t rsa

如下图所示:

然年和上面namenode配置原理一样,拷贝到每一个从节点:

[shinelon@hadoop-senior02 .ssh]$ ssh-copy-id hadoop-senior02.shinelon.com
[shinelon@hadoop-senior02 .ssh]$ ssh-copy-id hadoop-senior03.shinelon.com
[shinelon@hadoop-senior02 .ssh]$ ssh-copy-id hadoop-senior.shinelon.com

这时,我们可以通过测试ssh登录即可验证免密匙登录成功。
通过上面的一些操作,我们集群的搭建终于要接近最后阶段,下面让我们来启动集群并且测试。

(3)启动hadoop集群并且测试
在主节点上格式化hdfs:

[shinelon@hadoop-senior hadoop-2.5.0]$ bin/hdfs namenode -format

然后启动hdfs:

[shinelon@hadoop-senior hadoop-2.5.0]$ sbin/start-dfs.sh

启动jobhistoryserver:

[shinelon@hadoop-senior hadoop-2.5.0]$ sbin/mr-jobhistory-daemon.sh start historyserver

如果在上面启动过程中遇到错误启动不了datanode,可以通过hdfs命令逐个节点来启动datanode。

在resourcemanager主节点上启动yarn:

[shinelon@hadoop-senior02 hadoop-2.5.0]$ sbin/start-yarn.sh

在上面启动完毕后我们可以通过jps命令来查看各个节点的各个进程是否启动成功。另外可以在web页面上看见集群状态:

如果都启动成功,下面我们来测试该集群:

首先在nameNode主节点上测试hdfs命令创建文件,读写文件:

bin/hdfs dfs -mkdir -p /user/shinelon/tmp/conf
bin/hdfs dfs -put etc/hadoop/*-site.xml /user/shinelon/tmp/conf
bin/hdfs dfs -text /user/shinelon/tmp/conf/core-site.xml

测试完毕之后,我们来在在集群上运行mapreduce程序:
先创建一个文件夹:

[shinelon@hadoop-senior hadoop-2.5.0]$ bin/hdfs dfs -mkdir -p /user/shinelon/mapreduce/wordcount/input

然后上传文件:

[shinelon@hadoop-senior hadoop-2.5.0]$ bin/hdfs dfs -put /opt/modules/hadoop-2.5.0/upload.input /user/shinelon/mapreduce/wordcount/input

运行mapreduce程序:

[shinelon@hadoop-senior hadoop-2.5.0]$ bin/yarn jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.5.0.jar wordcount /user/shinelon/mapreduce/wordcount/input /user/shinelon/mapreduce/wordcount/output

等程序运行完毕我们可以登录到yarn的web管理界面去查看状况:


如果你想和我们一起探讨学习,共同进步,欢迎加群:

Hadoop2.x部署之完全分布式集群环境搭建相关推荐

  1. 王家林的“云计算分布式大数据Hadoop实战高手之路---从零开始”的第五讲Hadoop图文训练课程:解决典型Hadoop分布式集群环境搭建问题

    王家林的"云计算分布式大数据Hadoop实战高手之路---从零开始"的第五讲Hadoop图文训练课程:解决典型Hadoop分布式集群环境搭建问题 参考文章: (1)王家林的&quo ...

  2. redis分布式集群环境搭建

    redis 分布式集群可分为主从集群.哨兵集群.分片集群,本片文章我们就来分别介绍这三种集群环境的搭建. 本次搭建环境为 Linux 虚拟机系统. 在搭建 redis集群之前,需要先在 linux 系 ...

  3. 基于CentOs下的Hadoop完全分布式集群环境搭建

    Hadoop配置 一.准备工作 1.下载虚拟机,安装centos 在VM中新建4台虚拟机(内存建议2-4G) VMware14下载 提取码:e6dn centos6.8和centos7下载 提取码:4 ...

  4. Hadoop2.7.3+HBase1.2.5+ZooKeeper3.4.6搭建分布式集群环境

    Hadoop2.7.3+HBase1.2.5+ZooKeeper3.4.6搭建分布式集群环境 一.环境说明 个人理解: zookeeper可以独立搭建集群,hbase本身不能独立搭建集群需要和hado ...

  5. k8s-大型分布式集群环境捷径部署

    转k8s-大型分布式集群环境捷径部署 课程介绍 ​ Kubernetes(k8s)一个用于容器集群的自动化部署.扩容以及运维的开源平台.通过Kubernetes,你可以快速有效地响应用户需求;快速而有 ...

  6. Kafka系列之:详细介绍部署Kafka Connect分布式集群

    Kafka系列之:详细介绍部署Kafka Connect分布式集群 一.部署分布式Kafka集群详细步骤 二.Kafka Worker节点安装部署Kafka 三.修改connect-distribut ...

  7. 现学现用大数据分布式集群环境部署

    导读:        随着大数据时代的到来,传统的GIS分析工具越来越难以满足对超大体量空间数据的分析需求.SuperMap iServer 9D(本文简称iServer)实现了地理信息服务的分布式集 ...

  8. Hadoop 2.x 完全分布式HA集群环境搭建

    Hadoop 2.x 完全分布式HA集群环境搭建 目录 Hadoop 2.0 环境搭建 前提:环境准备 第一步:修改hadoop-env.sh配置文件,配置好JAVA_HOME环境变量 第二步:修改h ...

  9. Docker+K8S 集群环境搭建及分布式应用部署

    互联网正在飞速发展,早已由最初的单体架构演变为如今的分布式架构,而分布式架构也为系统运维带来了挑战.架构在发展,系统运维技术也在不断升级.而伴随着系统运维的是如今炒的火热的容器技术,Docker 就是 ...

最新文章

  1. 浅谈Android五大布局——LinearLayout、FrameLayout和AbsoulteLa
  2. luogu P4085 [USACO17DEC]Haybale Feast(尺取法 + 线段树)
  3. Failure Groups in ASM
  4. top_k问题python解
  5. 5GS 协议栈 — Overview
  6. mysql ---- innodb-3-锁、事务
  7. 负载(Load)分析及问题排查
  8. Windows 10下 jupyter notebook 安装,打开,使用,关闭方法
  9. 95-40-060-java.util.concurrent-ConcurrentSkipListMap
  10. python即时标记_python基础教程总结15——1.即时标记
  11. iframe之间操作记录
  12. 程序员在网吧办公是什么感觉?网友:在被打的边缘疯狂试探!
  13. WordPress中文SEO优化建议
  14. 蓝桥杯官网练习系统基础练习(八)
  15. C语言 - 详解回调函数
  16. 一款访问远程Linux服务器的web SSH终端
  17. 读书笔记-《墨菲定律》
  18. 小白股市扫盲系列--美联储加息减息对市场究竟有什么影响?
  19. 3.5 使用螺旋线工具绘制蜗牛螺纹 [Illustrator CC教程]
  20. voipdiscount免费拨打全球电话(无需手机注册)

热门文章

  1. 有关POE及POE+以太网供电系统标准IEEE802.3af与at的区别解析
  2. 设计模式之略见一斑(桥梁模式bridge)
  3. ubuntu 下 Wireshark网络抓包工具使用
  4. java微信录音arm转mp3_微信语音amr转mp3
  5. word多级列表不按照大纲级别编排
  6. 如何能快速查找全国招标信息?
  7. java map在JSTL EL中的小应用--c:forEach遍历Map泛型
  8. 用SPSS 画 人口金字塔(限SPSS 13.0以上)
  9. 语义化版本控制模块-Semver
  10. 幕布, Ulysses , Effie , 来自于一位写稿爱好者的评测