1、在伪分布式基础上搭建,伪分布式搭建参见VM上Hadoop3.1伪分布式模式搭建

2、虚拟机准备,本次集群采用2.8.3版本与3.X版本差别不大,端口号所有差别

192.168.44.10 vmhome10.com
192.168.44.11 vmhome11.com
192.168.44.12 vmhome12.com

3、关闭防火墙,因为需要打开的端口太多,测试的环境,为了避免干扰先关闭防火墙

systemctl stop firewalld

4、三台虚机之间打开ssh免密登录,账户hadoop

ssh-keygen -t rsa 生产密钥

ssh-copy-id 192.168.44.10 发布密钥

5、配置JAVA_HOME

在${HADOOP_HOME}/etc/hadoop目录下的三个脚本
hadoop-env.sh
yarn-env.sh
mapred-env.sh
都需要配置JAVA_HOME变量,全路径:
export JAVA_HOME=/home/java/jdk1.8.0_201

6、三个节点分配职能

vmhome10.com:NameNode,DataNode,NodeManager   #NameNode与SecondaryNameNode不能在一个节点上
vmhome11.com:DataNode,ResourceManager,NodeManager #ResourceManager需要单独一个节点
vmhome12.com:SecondaryNameNode,DataNode,NodeManager #DataNode可以每个节点都放一个

7、集群配置

7.1 core-site.xml

<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://vmhome10.com:9000</value>
<description>HDFS的URI,文件系统://namenode标识:端口号</description>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/opt/hadoop/data-2.8.3/tmp</value>
<description>namenode上本地的hadoop临时文件夹</description>
</property>
</configuration>

7.2 hdfs-site.xml

<configuration>
<property>
<name>dfs.replication</name>
<value>3</value>
<description>副本个数,配置默认是3,应小于datanode机器数量</description>
</property> <property>
<name>dfs.namenode.name.dir</name>
<value>/opt/hadoop/data-2.8.3/dfs/name</value>
<description>namenode在本地存储hdfs名字空间元数据 </description>
</property> <property>
<name>dfs.datanode.data.dir</name>
<value>/opt/hadoop/data-2.8.3/dfs/data</value>
<description>datanode上数据块的物理存储位置</description>
</property> <property>
<name>dfs.namenode.secondary.http-address</name>
<value>vmhome12.com:50090</value>
<description>指定Hadoop辅助名称节点主机配置,注意3.x后端口已经改变</description>
</property> </configuration>

7.3 yarn-site.xml

<configuration>

<!-- Site specific YARN configuration properties -->
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property> <property>
<name>yarn.resourcemanager.hostname</name>
<value>vmhome11.com</value>
<description>yarn的主机,运行resoucemanager</description>
</property> </configuration>

7.4 mapred-site.xml

<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
</configuration>

7.5 历史服务配置

mapred-site.xml

<!-- 历史服务器端地址 -->
<property>
<name>mapreduce.jobhistory.address</name>
<value>vmhome12.com:10020</value>
</property>
<!-- 历史服务器web端地址 -->
<property>
<name>mapreduce.jobhistory.webapp.address</name>
<value>vmhome12.com:19888</value>
</property>

7.6 日志聚集

yarn-site.xml

<!-- 日志聚集功能使能 -->
<property>
<name>yarn.log-aggregation-enable</name>
<value>true</value>
</property> <!-- 日志保留时间设置7天 -->
<property>
<name>yarn.log-aggregation.retain-seconds</name>
<value>604800</value>
</property>

8、slaves

#集群,群起方式需要配置所有的节点在这个文件
vmhome10.com
vmhome11.com
vmhome12.com

9、复制配置到其他节点

scp -r hadoop-2.8.3/ hadoop@vmhome11.com:/opt/hadoop/
scp -r hadoop-2.8.3/ hadoop@vmhome12.com:/opt/hadoop/

10、群起集群

在NameNode的主机节点上执行(首次启动集群前,不要忘记先格式化namenode)
start-dfs.sh 在ResourceManager的主机节点上执行
start-yarn.sh 注意:NameNode和ResourceManger如果不是同一台机器,不能在NameNode上启动 YARN,应该在ResouceManager所在的机器上启动YARN。

10.2 启动日志服务

在vmhome12.com节点上启动服务
mr-jobhistory-daemon.sh start historyserver

11、启停命令

各个服务组件逐一启动/停止
(1)分别启动/停止HDFS组件
hadoop-daemon.sh start / stop namenode / datanode / secondarynamenode
(2)启动/停止YARN
yarn-daemon.sh start / stop resourcemanager / nodemanager 各个模块分开启动/停止(ssh免密)
(1)整体启动/停止HDFS
start-dfs.sh / stop-dfs.sh
(2)整体启动/停止YARN
start-yarn.sh / stop-yarn.sh

12、web页面

用yarn的主机节点看yarn资源分配情况
http://192.168.44.11:8088/ 用Namnode的主机节点看hdfs的情况
http://192.168.44.10:50070/

13、停止强制检查虚拟内存

在etc/hadoop/yarn-site.xml文件中,修改检查虚拟内存的属性为false,如下:

    <property>
<name>yarn.nodemanager.vmem-check-enabled</name>
<value>false</value>
</property> 目的是在开发环境用的虚拟机一般虚拟内存都不够hadoop的缺省配置,解除强制检查,省得测试程序的时候容器被kill。

14、NameNode的本地目录可以配置成多个,且每个目录存放内容相同,增加可靠性,如果配置在NFS上,可作为一份元数据备份。即配置的多个目录里都有相同的内容(元数据信息)。

在hdfs-site.xml里配置name的多个dir,之间用逗号分隔

<property>
<name>dfs.namenode.name.dir</name>
<value>file:///${hadoop.tmp.dir}/dfs/name1,file:///${hadoop.tmp.dir}/dfs/name2</value>
</property>

15、DataNode也可以配置成多个目录,每个目录存储的数据不一样。即:数据不是副本。

在hdfs-site.xml中:

<property>
<name>dfs.datanode.data.dir</name>
<value>file:///${hadoop.tmp.dir}/dfs/data1,file:///${hadoop.tmp.dir}/dfs/data2</value>
</property>

16、退役节点

16.1 白名单方式,添加到白名单的主机节点,都允许访问NameNode,不在白名单的主机节点,都会被退出。

在etc/hadoop/下新增一个dfs.hosts文件,文件名可自己定义,在里面添加datanode节点

vi dfs.hosts
vmhome10.com
vmhome11.com
vmhome12.com
在hdfs-site.xml配置文件里新增:
<property>
<name>dfs.hosts</name>
<value>/opt/hadoop/etc/hadoop/dfs.hosts</value>
</property> 然后分发到其他节点
刷新NameNode和ResourceManager
hdfs dfsadmin -refreshNodes
yarn rmadmin -refreshNodes
节点退役后,如果数据不均衡,可以用命令实现集群的再平衡数据。

start-balancer.sh

16.2 黑名单方式

在hadoop的etc/hadoop/下新增dfs.hosts.exclude文件
里面配置需要退役的节点:
vi dfs.hosts.exclude vmhome9.com
在NameNode的hdfs-site.xml配置文件中增加dfs.hosts.exclude属性
<property>
<name>dfs.hosts.exclude</name>
<value>/opt/hadoop/etc/hadoop/dfs.hosts.exclude</value>
</property>
刷新NameNode和ResourceManager
hdfs dfsadmin -refreshNodes
yarn rmadmin -refreshNodes
在Web浏览器,退役节点的状态为decommission in progress(退役中),说明数据节点正在复制块到其他节点

等待退役节点状态为decommissioned(所有块已经复制完成),停止该节点及节点资源管理器。

注意:如果副本数是3,服役的节点小于等于3,是不能退役成功的,需要修改副本数后才能退役。
注意:不允许白名单和黑名单中同时出现同一个主机名称
 

hadoop 完全分布式集群搭建的更多相关文章

  1. hadoop伪分布式集群搭建与安装(ubuntu系统)

    1:Vmware虚拟软件里面安装好Ubuntu操作系统之后使用ifconfig命令查看一下ip; 2:使用Xsheel软件远程链接自己的虚拟机,方便操作.输入自己ubuntu操作系统的账号密码之后就链 ...

  2. Hadoop完全分布式集群搭建

    Hadoop的运行模式 Hadoop一般有三种运行模式,分别是: 单机模式(Standalone Mode),默认情况下,Hadoop即处于该模式,使用本地文件系统,而不是分布式文件系统.,用于开发和 ...

  3. 大数据之Hadoop完全分布式集群搭建

    1.准备阶段 1.1.新建三台虚拟机 Hadoop完全分市式集群是典型的主从架构(master-slave),一般需要使用多台服务器来组建.我们准备3台服务器(关闭防火墙.静态IP.主机名称).如果没 ...

  4. 基于Hadoop伪分布式集群搭建Spark

    一.前置安装 1)JDK 2)Hadoop伪分布式集群 二.Scala安装 1)解压Scala安装包 2)环境变量 SCALA_HOME = C:\ProgramData\scala-2.10.6 P ...

  5. Hadoop学习笔记(一):ubuntu虚拟机下的hadoop伪分布式集群搭建

    hadoop百度百科:https://baike.baidu.com/item/Hadoop/3526507?fr=aladdin hadoop官网:http://hadoop.apache.org/ ...

  6. linux运维、架构之路-Hadoop完全分布式集群搭建

    一.介绍 Hadoop实现了一个分布式文件系统(Hadoop Distributed File System),简称HDFS.HDFS有高容错性的特点,并且设计用来部署在低廉的(low-cost)硬件 ...

  7. Hadoop伪分布式集群搭建

    声明:作者原创,转载注明出处. 作者:帅气陈吃苹果 1.下载Hadoop压缩包 wget http://mirrors.hust.edu.cn/apache/hadoop/common/hadoop- ...

  8. hadoop HA分布式集群搭建

    概述 hadoop2中NameNode可以有多个(目前只支持2个).每一个都有相同的职能.一个是active状态的,一个是standby状态的.当集群运行时,只有active状态的NameNode是正 ...

  9. centos7+hadoop完全分布式集群搭建

    Hadoop集群部署,就是以Cluster mode方式进行部署.本文是基于JDK1.7.0_79,hadoop2.7.5.  1.Hadoop的节点构成如下: HDFS daemon:  NameN ...

随机推荐

  1. Hibernate Validator Engine的用法

    一.引入架包 maven地址  点击即可. <!-- https://mvnrepository.com/artifact/org.hibernate.validator/hibernate-v ...

  2. [MySQL] 解决Error 1698: Access denied for user 'root'@'localhost'

    当程序中使用root账号连接mysql时报以下错误,但是使用命令行是可以正常连接的,那么就查询下mysql数据库的user表,查看下当前用户的密码加密方式,看看是不是unix_socketMariaD ...

  3. 游戏设计模式——C++单例类

    前言: 本文将探讨单例类设计模式,单例类的懒汉模式/饿汉模式,单例类的多线程安全性,最后将利用C++模板减少单例类代码量. 本文假设有一个Manager管理类,并以此为探究单例类的设计模式. 懒汉模式 ...

  4. C++ 异或运算及其应用

    前置知识: 1.一个整数自己跟自己异或,结果为0   //因为异或的法则为,相同为0,不同为1,注意这里所说的都是二进制位. 2.任意一个整数跟0异或,结果为本身. //因为1异或0得1,0异或0,得 ...

  5. ThreadLocal 简单解析

    ThreadLocal 简单解析 基于jdk1.8 ThreadLocal一定不陌生,开发中常用,也是面试里的常客了,但是往往我们可能只是知道该类的作用.学习该类对于个人的多线程编码能力是大有裨益的, ...

  6. 记一次SQL调优

    insert优化 如果你在某一时刻有大量的insert操作,一条一条插入是非常耗时的.insert语句本身支持一次插入很多条记录,插入记录数上限受sql语句长度限制,一般一次插个几千条是没问题的.在我 ...

  7. mysql 5 长度解析

    mysql 5 以后 都按照字符来算 不是字节 char(10)可以放10个汉字或者10个字母

  8. Flume笔记

    flume自定义拦截器:实现Interceptor接口flume自定义source:继承AbstractSourceflume自定义sink:继承AbstractSink azkaban:任务调度工具 ...

  9. docker入门与部署微服务--学习笔记

    最近公司进一步去windows,走向 linux+云化. 原来的一大坨windows虚拟机服务器都要转向linux, 既然走向linux的话,那么docker肯定是要涉足的. 故学习了docker入门 ...

  10. Vue.js 源码分析(二十三) 指令篇 v-show指令详解

    v-show的作用是将表达式值转换为布尔值,根据该布尔值的真假来显示/隐藏切换元素,它是通过切换元素的display这个css属性值来实现的,例如: <!DOCTYPE html> < ...