实验

目的

要求

目的:

1、Hadoop的高可用完全分布模式的安装和验证

要求:

  1. 完成Hadoop的高可用完全分布模式的安装;
  2. Hadoop的相关服务进程能够正常的启动;
  3. HDFS能够正常的使用;
  4. MapReduce示例程序能够正常运行;

  1. 五台独立PC式虚拟机。
  2. 主机之间有有效的网络连接
  3. 每台主机内存2G以上,磁盘50G。
  4. 所有主机上安装CentOS7-64位操作系统。
  5. 所有主机已完成网络属性配置
  6. 所有主机已安装JDK
  7. 已完成Zookeeper集群的安装和部署

软件版本:

选用Hadoop的2.7.3版本,软件包名Hadoop-2.7.3.tar.gz

集群规划:

* Hadoop的高可用完全分布模式中有HDFS的主节点和数据节点、MapReduce的主节点和任务节点、数据同步通信节点、主节点切换控制节点总共6类服务节点,其中HDFS的主节点、MapReduce的主节点、主节点切换控制节点共用相同主机Cluster-01和Cluster-02,HDFS的数据节点、MapReduce的任务节点共用相同主机Cluster-03、Cluster-04,Cluster-05,数据同步通信节点可以使用集群中的任意主机,但因为其存放的是元数据备份,所以一般不与主节点使用相同主机。

*高可用完全分布模式中需要满足主节点有备用的基本要求, 所以需要两台或以上的主机作为主节点,而完全分布模式中需要满足数据有备份和数据处理能够分布并行的基本要求,所以需要两台或以上的主机作为HDFS的数据节点和MapReduce的任务节点,同时数据同步通信节点工作原理同Zookeeper类似,需要三台或以上的奇数台主机,具体规划如下:

主机名

IP地址

服务描述

Cluster-01

192.168.10.111

Hadoop主节点

Hadoop主节点控制切换服务

YARN主节点

Cluster-02

192.168.10.112

Hadoop备用主节点

Hadoop主节点控制切换服务

YARN备用主节点

Cluster-03

192.168.10.113

Hadoop数据服务

Hadoop同同步通信服务

YARN节点管理服务

Cluster-04

192.168.10.114

Hadoop数据服务

Hadoop同同步通信服务

YARN节点管理服务

Cluster-05

192.168.10.115

Hadoop数据服务

Hadoop同同步通信服务

YARN节点管理服务

实验内容

步骤一:Hadoop基本安装配置

注:1、该项的所有操作步骤使用专门用于集群的用户admin进行;

  1. 此项只在一台主机操作,然后在下一步骤进行同步安装与配置;

1、创建用于存放Hadoop相关文件的目录,并进入该目录,将软件包解压;

命令:

$mkdir ~/hadoop

$cd ~/hadoop

$tar -xzf ~/setups/Hadoop-2.7.3.tar.gz

2、配置Hadoop相关环境变量;

命令:

$vi ~/.bash_prolife

3、使新配置的环境变量立即生效,查看新添加和修改的环境变量是否设置成功,以及环境变量是否正确,验证Hadoop的安装配置是否成功;

命令:

$source ~/.bash_profile

$echo $HADOOP_HOME

$echo $PATH

$hadoop version

步骤二:Zookeeper完全分布模式配置;

注:该项的所有操作步骤使用专门用于集群的用户admin进行;

1、进入Hadoop相关文件的目录,分别创建Hadoop的临时文件目录“tmp”、HDFS的元数据文件目录“name”、HDFS的数据文件目录“data”、Journal的逻辑状态数据目录“journal”;

2、进入Hadoop的配置文件所在目录,对配置文件进行修改,找到配置项“JAVA_HOME”所在行,将其改为以下内容:

Export

JAVA_HOME=/home/admin/java/jdk1.8.0_131

命令:

$cd ~/Hadoop/Hadoop-2.7.3/etc/Hadoop

$vi Hadoop-env.sh

3、对配置文件core-site.xml进行修改,找到标签“<configuration>”所在位置,在其中添加如下红色部分的内容:

<configuration><property><name>fs.defaultFS</name><value>hdfs://hadoop-ha</value></property><property><name>hadoop.tmp.dir</name><value>/home/admin/hadoop/tmp</value></property><property><name>ha.zookeeper.quorum</name><value>Cluster-01:2181,Cluster-02:2181,Cluster-03:2181,Cluster-04:2181,Cluster-05:2181</value></property></configuration>

4、对配置文件hdfs-site.xml进行修改,找到标签“<configuration>”所在位置,在其中添加如下红色部分的内容:

<configuration><property><name>dfs.nameservices</name><value>hadoop-ha</value></property><property><name>dfs.ha.namenodes.hadoop-ha</name><value>name-1,name-2</value></property><property><name>dfs.namenode.rpc-address.hadoop-ha.name-1</name><value>Cluster-01:9000</value></property><property><name>dfs.namenode.http-address.hadoop-ha.name-1</name><value>Cluster-01:50070</value></property><property><name>dfs.namenode.rpc-address.hadoop-ha.name-2</name><value>Cluster-02:9000</value></property><property><name>dfs.namenode.http-address.hadoop-ha.name-2</name><value>Cluster-02:50070</value></property><property><name>dfs.namenode.shared.edits.dir</name><value>qjournal://Cluster-03:8485;Cluster-04:8485;Cluster-05:8485/hadoop-ha</value></property><property><name>dfs.journalnode.edits.dir</name><value>/home/admin/hadoop/journal</value></property><property><name>dfs.ha.automatic-failover.enabled</name><value>true</value></property><property><name>dfs.client.failover.proxy.provider.hadoop-ha</name><value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value></property><property><name>dfs.ha.fencing.methods</name><value>sshfenceshell(/bin/true)</value></property><property><name>dfs.ha.fencing.ssh.private-key-files</name><value>/home/admin/.ssh/id_rsa</value></property><property><name>dfs.ha.fencing.ssh.connect-timeout</name><value>30000</value></property><property><name>dfs.namenode.name.dir</name><value>/home/admin/hadoop/name</value></property><property><name>dfs.datanode.data.dir</name><value>/home/admin/hadoop/data</value></property><property><name>dfs.replication</name><value>3</value></property></configuration>

5、由模板文件拷贝生成配置文件“mapred-site.xml”

命令:

$cp mapred-site.xml.template mapred-site.xml

$vi mapred-site.xml

找到标签“<configuration>”所在位置,在其中添加如下红色部分的内容:

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

6、对配置文件yarn-site.xml进行修改,找到标签“<configuration>”所在位置,在其中添加如下红色部分的内容:

<configuration><!-- Site specific YARN congfiguration proerties --><property><name>yarn.resourcemanager.ha.enabled</name><value>true</value></property><property><name>yarn.resourcemanager.cluster-id</name><value>yarn-ha</value></property><property><name>yarn.resourcemanager.ha.rm-ids</name><value>resource-1,resource-2</value></property><property><name>yarn.resourcemanager.hostname.resource-1</name><value>Cluster-01</value></property><property><name>yarn.resourcemanager.hostname.resource-2</name><value>Cluster-02</value></property><property><name>yarn.resourcemanager.zk-address</name><value>Cluster-01:2181,Cluster-02:2181,Cluster-03:2181,Cluster-04:2181,Cluster-05:2181</value></property><property><name>yarn.nodemanager.aux-services</name><value>mapreduce_shuffle</value></property></configuration>

7、对配置文件yarn-env.sh进行修改,找到配置项“JAVA_HOME”所在行,将其改为以下内容:

Export

JAVA_HOME=/home/admin/java/jdk1.8.0_131

8、对配置文件slaves进行修改,删除文件中原有的所有内容,然后添加集群中所有数据节点的主机名,每行一个主机的主机名,配置格式如下:

Cluster-03

Cluster-04

Cluster-05

步骤三:同步安装和配置;

注:该项的所有操作不受使用准们用于集群的用户admin进行。

1、将“Hadoop”目录和“.bash_profile”文件发给集群中所有主机,发送目标用户为集群专用用户admin,发送目标路径为“/home/admin”,即集群专用用户admin的家目录。

2、使新配置的环境变量立即生效,查看新添加和修改的环境变量是否设置成功,以及环境变量是否正确,验证Hadoop的安装配置是否成功;

命令:

$source ~/.bash_profile

$echo $HADOOP_HOME

$echo $PATH

$hadoop version

步骤四:Hadoop高可用完全分布模式格式化和启动;

注:注意本节格式化内容不可多次执行

注意格式化步骤

该项的所有操作步骤使用专门用于集群的用户admin进行;

1、在所有同步通信节点的主机执行,启动同步通信服务,然后使用命令“jps”查看java进程信息,若有名为“journalNode”的进程,则表示同步通信节点启动成功。

命令:

$hadoop-deamon.sh start journalnode

2、在主节点使用此命令,对HDFS进行格式化,若格式化过程中没有报错则表示格式化成功;

命令:

$hadoop namenode -format

3、格式化完成后将“Hadoop”目录下的“name”目录发给集群中所有备用主节点的主机,发送目标用户为集群专用用户admin,即当前与登录用户同名用户,发送目标路径为“/home/admin/hadoop”,即集群专用用户admin家目录下的Hadoop相关文件的目录;

命令:

$scp -r ~/Hadoop/name admin@Cluster-02:/home/admin/Hadoop

4、在集群中所有主机使用“zkServer.sh status”命令,查看该节点Zookeeper服务当前的状态,若集群中只有一个“leader”节点,其余的均为“follower”节点,则集群的工作状态正常;

如果Zookeeper未启动,则在集群中所有主机使用“zkServer.sh start”命令,启动Zookeeper服务的脚本;

5、在主节点使用“hdfs zkfc -formatZK”命令,对Hadoop集群在Zookeeper中的主节点切换控制信息进行格式化。

6、在所有同步通信节点的主机,使用“Hadoop-daemon.sh stop journalnode”命令,关闭同步通信服务。

7、在主节点使用“start-all.sh”命令,启动Hadoop集群;

8、在所有备用主节点的主机,使用“yarn-deamon.sh start resourcemanager”命令,启动yarn主节点服务;

9、在主节点使用命令“jps”查看Java进程信息,若有名为“NameNode”,"ResourceManager”“DFSZKFailoverController”的三个进程,则表示Hadoop集群的主节点启动成功。

10、使用命令“ssh 目标主机名或IP地址”远程登录到所有备用主节点主机,使用命令“jps”查看Java进程信息,若有名为“NameNode”,"ResourceManager”“DFSZKFailoverController”的三个进程,则表示Hadoop集群的备用主节点启动成功。

步骤五:Hadoop高可用完全分布模式启动和验证;

注:该项所有的操作使用专门用于集群的用户admin进行;

1、在Hadoop中创建当前登录用户自己的目录,查看HDFS中的所有文件和目录的结构;

2、进入Hadoop的示例程序包hadoop-mapreduce-examples-2.7.3.jar所在目录;

运行使用蒙地卡罗法计算PI的示例程序;

出现的问题与解决方案

问题:

  1. Namenode没有启动;

解决方案:

  1. 格式化namenode,命令“hdfs namenode -format”;

此时向HDFS拷贝文件发现出现如下错误

$hdfs dfs -mkdir -p /home/admin.hadoop

再次运行jps发现,datanode没有启动。

经过查询资料发现:

当我们使用hdfs namenode -format格式化namenode时,会在namenode数据文件夹(这个文件夹为自己配置文件hdfs-site.xml中dfs.namenode.name.dir的路径)中保存一个current/VERSION文件,记录clusterID,datanode数据文件夹(这个文件夹为自己配置文件中dfs.dataNode.name.dir的路径)中保存的current/VERSION文件中的clustreID的值是第一次格式化保存的clusterID,这样,datanode和namenode之间的ID不一致

所以,在格式化之前先删除 dfs.name.dir指定目录下的所有文件(注意删目录下所有的文件及文件夹而不是删除该目录)

命令:

$hdfs namenode -format

$start-all.sh

$jps

知识拓展

1、使用浏览器访问192.168.10.111:8088,查看并管理Hadoop

2、使用浏览器访问192.168.10.111:50070,查看HDFS情况

3、Hadoop是一种分布式系统的基础构架。

核心是HDFS和MapReduce,hadoop2.0还包括YARN

4、HDFS:Hadoop Distributed FileSystem 分布式文件系统。

//很多时候的数据量超过了单台机器允许存储的范围……故而需要分布式

前身是GFS,谷歌开源的分布式存储系统。

是一个高容错(允许错误发生)的系统,能检测应对硬件故障。

适用于低成本的通用硬件(比如树莓派么)

通过流式数据访问,提供高吞吐量应用程序的访问功能。

5、异常处理:

因为数量多,所以出故障是常态。

【可靠性】存在故障的时候也能较为有效地存储数据。(名字节点故障,数据节点故障,网络断开)

【重新复制】定时会发送“心跳包”检测节点是否健康,失去联系标记为死亡状态,需要重新复制到其他节点。

【数据正确性】校验数据是否有坏块(类似于葡萄的校验?,验证的校验码存储在HDFS命名空间的隐藏文件中)

【元数据失效】FsImage和Editlog是HDFS的核心数据结构。(损坏就崩盘了)名字节点(NameNode)如果崩了就需要人工的干预了。//第二名字节点不支持直接恢复

6、目标

  1. 数据访问:适合批量处理而非交互式,重点是数据吞吐量而非反应时间
  2. 大数据:支持大文件,单个文件GB-TB级别
  3. 简单一致模式:一次写入,多次读,一般写入之后就不再修改了
  4. 主从结构:一个名字节点和很多数据节点,通常一台机器一个数据节点。
  5. 硬件故障处理:是设计的核心目标之一

Hadoop集群搭建(五:Hadoop HA集群模式的安装)相关推荐

  1. 从零搭建生产Hadoop集群(五)——CDH集群修改主机名与IP

    从零搭建生产Hadoop集群(五)--CDH集群修改主机名与IP 一.概述 二.完整步骤 1.官网推荐步骤: (1)验证下SSL/TLS认证是否所有服务都有配备,确认创建新的SSL/TLS认证. (2 ...

  2. Hadoop详解(五)——ZooKeeper详解,ZooKeeper伪分布搭建和集群搭建,Hadoop集群搭建,sqoop工具的使用

    ZooKeeper简介 什么是ZooKeeper? ZooKeeper是Google的Chubby一个开源的实现,是Hadoop分布式协调服务. 它包含了一个简单的原语集,分布式应用程序可以基于它实现 ...

  3. Zookeeper+Hadoop+Hbase+Hive+Kylin+Nginx集群搭建五(Hive篇)

    Zookeeper+Hadoop+Hbase+Hive+Kylin+Nginx集群搭建五(Hive篇) 七.Hive安装配置 1.准备工作 2.安装hive 全文请看:https://blog.csd ...

  4. Hadoop-2.8.0集群搭建、hadoop源码编译和安装、host配置、ssh免密登录、hadoop配置文件中的参数配置参数总结、hadoop集群测试,安装过程中的常见错误

    25. 集群搭建 25.1 HADOOP集群搭建 25.1.1集群简介 HADOOP集群具体来说包含两个集群:HDFS集群和YARN集群,两者逻辑上分离,但物理上常在一起 HDFS集群: 负责海量数据 ...

  5. Hadoop集群搭建之问题锦集

    **Hadoop集群搭建之问题锦集** 1.Centos7 ifconfig这个命令没找到的解决方法 yum -y install net-tools 2.修改文件的读写权限 chmod 777 /e ...

  6. Hadoop集群搭建之Hadoop组件安装

    兵马未动,粮草先行 --汉语成语 系列文章目录 Hadoop集群搭建之Linux系统安装 Hadoop集群搭建之Hadoop组件安装 文章目录 系列文章目录 前言 一.IP和主机名称配置 (一)Had ...

  7. Hadoop HA高可用集群搭建(Hadoop+Zookeeper+HBase)

    一.服务器环境 主机名 IP 用户名 密码 安装目录 master 192.168.142.124 root xxx /usr/hadoop-2.6.5/ slave1 192.168.142.125 ...

  8. 伪分布式集群搭建(hadoop)

    1.安装VMware Tools 创建文件,实现挂载 创建文件夹software装软件的安装包.module装解压后的安装包 将VMwareTools的安装包移动到software文件中进行解压 解压 ...

  9. es集群搭建_滴滴Elasticsearch 集群跨版本升级与平台重构之路

    前不久,滴滴ES团队将维护的30多个ES集群,3500多个ES节点,8PB的数据,从2.3.3跨大版本无缝升级到6.6.1.在对用户查询写入基本零影响和改动的前提下,解决了ES跨大版本协议不兼容.文件 ...

  10. Flink集群搭建以及企业级yarn集群搭建

    Flink下载: Apache Flink: 下载 根据自己想要下载的版本,下载指定版本我下载的是7.2hadoop版本 解压后启动: 本地启动 [root@node01 flinkhadoop1.7 ...

最新文章

  1. 京东某程序员哀叹:在大厂快待废了,出去面试问自己kafka,竟然全忘了!
  2. Zabbix监控网络设备日志文件及字段报警
  3. Spring Boot中对自然语言处理工具包hanlp的调用详解
  4. LOJ 数列分块入门6
  5. geometry-api-java 学习笔记(三)多点 multipoint
  6. 前端学习(3244):react的生命周期新
  7. MySQL5.7.9安装与配置优化
  8. C++中int *p[4]和 int (*q)[4]的区别
  9. Qt工作笔记-对QItemDelegate自定义委托的理解
  10. 测量坐标出现6位、7 、8位的情况
  11. 【java】java如何证明java发生了指令重排序
  12. 真正的程序员(转贴)
  13. [转载] JavaScrip ajaxt和python flask通过json传递数据的方法
  14. Linux系统下ActivityMQ的安装
  15. Hilbert 变换与瞬时频率
  16. margin的百分比参照物
  17. Carrey的第一篇博客
  18. Pocket英语语法---六、感官动词接不同的动词表示什么意思
  19. L. Ray in the tube(思维暴力)
  20. 流式布局案例——京东网页

热门文章

  1. 会声会影水墨遮罩如何变大_自媒体长期网赚项目: 自媒体如何打造自己的自媒体知识付费课程(干货)...
  2. iOS实现图片自动轮播展示
  3. 自动化运维之SaltStack,批量安装httpd实战
  4. 智慧城市锁定创新,智能AI助力智慧健康
  5. Android TextView
  6. 数据库开发个人总结(ADO.NET小结)
  7. python中的module
  8. Overview of ISA and TMG Networking and ISA Networking Case Study (Part 1)
  9. CocoaPods导入的库其头文件导入的方法
  10. 深入学习Lock锁(2)——LockSupport工具类