热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

06.Hadoop运行模式

一、本地运行模式1.1官方Grep案例①创建在hadoop-2.7.2文件下面创建一个input文件夹[root@hadoop103hadoop-2.7.2]#m

一、本地运行模式

1.1 官方Grep案例

① 创建在hadoop-2.7.2文件下面创建一个input文件夹

[root@hadoop103 hadoop-2.7.2]# mkdir input

② 将Hadoopxml配置文件复制到input

[root@hadoop103 hadoop-2.7.2]# cp etc/hadoop/*.xml input

③执行share目录下的MapReduce程序

[root@hadoop103 hadoop-2.7.2]# bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.2.jar grep input output \'dfs[a-z.]+\'

④查看输出结果

[root@hadoop103 output]# ll
总用量 4
-rw-r--r--. 1 root root 11 5月  21 20:14 part-r-00000
-rw-r--r--. 1 root root  0 5月  21 20:14 _SUCCESS

1.2 官方WordCount案例

①创建在hadoop-2.7.2文件下面创建一个wcinput文件夹

[root@hadoop103 hadoop-2.7.2]# mkdir wcinput

wcinput文件下创建一个wc.input文件

[root@hadoop103 wcinput]# vi wc.input
hadoop yarn
hadoop mapreduce
hc
hc

③执行程序

[root@hadoop103 hadoop-2.7.2]# hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.2.jar wordcount wcinput wcoutput

④查看结果

[root@hadoop103 hadoop-2.7.2]# cat wcoutput/part-r-00000
hc 2
hadoop  2
mapreduce       1
yarn    1

二、伪分布式运行模式

2.1 配置

①配置hadoop-env.shyarn-env.shmapred-env.shJAVA_HOME
export JAVA_HOME=/opt/module/jdk1.8.0_144

配置HDFS:

②配置core-site.xml



fs.defaultFS
    hdfs://hadoop103:9000




	hadoop.tmp.dir
	/opt/module/hadoop-2.7.2/data/tmp

③配置hdfs-site.xml



	dfs.replication
	1

配置YARN:

⑤配置yarn-site.xml



	yarn.nodemanager.aux-services
	mapreduce_shuffle




	yarn.resourcemanager.hostname
	hadoop103

⑥配置mapred-site.xml



		mapreduce.framework.name
		yarn

2.2 运行MapReduce程序

①启动

格式化NameNode(第一次启动时格式化):

[root@hadoop103 hadoop-2.7.2]# bin/hdfs namenode -format

启动NameNode:

[root@hadoop103 hadoop-2.7.2]# sbin/hadoop-daemon.sh start namenode

启动DataNode:

[root@hadoop103 hadoop-2.7.2]# sbin/hadoop-daemon.sh start datanode

启动ResoureManager:

[root@hadoop103 hadoop-2.7.2]# sbin/yarn-daemon.sh start resourcemanager

启动NodeManager:

[root@hadoop103 hadoop-2.7.2]# sbin/yarn-daemon.sh start nodemanager

②运行WordCount案例

  1. HDFS文件系统上创建一个input文件夹
[root@hadoop103 hadoop-2.7.2]# bin/hdfs dfs -mkdir -p /user/hucheng/input
  1. 将测试文件wc.input上传到HDFS
[root@hadoop103 hadoop-2.7.2]# bin/hdfs dfs -put wcinput/wc.input /user/hucheng/input/
  1. 查看上传的文件
[root@hadoop103 hadoop-2.7.2]# bin/hdfs dfs -cat  /user/hucheng/input/wc.input
Hello Hadoop
  1. 运行MapReduce程序
[root@hadoop103 hadoop-2.7.2]# bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.2.jar wordcount /user/hucheng/input/ /user/hucheng/output
  1. 查看输出结果
[root@hadoop103 hadoop-2.7.2]# bin/hdfs dfs -cat /user/hucheng/output/*
Hadoop	1
Hello	1
  1. 浏览器查看输出文件
    在这里插入图片描述
  2. 下载输出结果
[root@hadoop103 hadoop-2.7.2]# hdfs dfs -get /user/hucheng/output/part-r-00000 ./wcinput/
  1. 删除输出结果
[root@hadoop103 hadoop-2.7.2]# hdfs dfs -rm -r /user/hucheng/output

2.3 为什么不能一直格式化NameNode

格式化NameNode,会产生新的集群id,导致NameNodeDataNode的集群id不一致,集群找不到已往数据。所以格式化NameNode时,一定要先删除data数据和log日志,然后再格式化NameNode

2.4 配置历史服务器

① 配置mapred-site.xml



	mapreduce.jobhistory.address
	hadoop103:10020



    mapreduce.jobhistory.webapp.address
    hadoop103:19888

②启动历史服务器

[root@hadoop103 hadoop-2.7.2]# sbin/mr-jobhistory-daemon.sh start historyserver

③查看历史服务器是否启动

[root@hadoop103 hadoop-2.7.2]# jps
2583 JobHistoryServer

④查看JobHistory

访问:http://hadoop103:19888/jobhistory
在这里插入图片描述

2.5 配置日志聚集

应用运行完成以后,将程序运行日志信息上传到HDFS系统上。可以方便的查看到程序运行详情,方便开发调试。

注意:开启日志聚集功能,需要重新启动NodeManagerResourceManagerHistoryManager

①配置yarn-site.xml



	yarn.log-aggregation-enable
	true




	yarn.log-aggregation.retain-seconds
	604800


重启后访问JobHistory
在这里插入图片描述
在这里插入图片描述

三、完全分布式运行模式

3.1 集群部署规划

通常Hadoop集群通常需要3个DataNode节点、3个NodeManageer节点,再加上NameNodeSecondaryNameNodeResourceManager,至少需要9台服务器去搭建集群。由于资源的紧缺,我们可以采用以下方式进行混搭:

hadoop100 hadoop101 hadoop102
HDFS NameNode/DataNode DataNode SecondaryNameNode/DataNode
YARN NodeManager ResourceManager/NodeManager NodeManager

3.2 配置集群

①每台服务器/opt/module/hadoop-2.7.2/etc/hadoop下的hadoop-env.shmapred-env.shyarn-env.sh添加上JAVA_HOME

export JAVA_HOME=/opt/module/jdk1.8.0_144

②配置核心配置文件core-site.xml

[root@hadoop100 hadoop]$ vim core-site.xml


  fs.defaultFS
  hdfs://hadoop100:9000




	hadoop.tmp.dir
	/opt/module/hadoop-2.7.2/data/tmp

③配置HDFS配置文件hdfs-site.xml



		dfs.replication
		3




	  dfs.namenode.secondary.http-address
	  hadoop102:50090

④配置YARN配置文件yarn-site.xml



		yarn.nodemanager.aux-services
		mapreduce_shuffle




		yarn.resourcemanager.hostname
		hadoop101

⑤配置MapReduce配置文件mapred-site.xml



		mapreduce.framework.name
		yarn

⑥分发配置文件到其他主机

[root@hadoop100 hadoop]$ xsync /opt/module/hadoop-2.7.2/

3.3 集群单点启动

①第一次启动格式化NameNode,注意实在配置NameNode节点下的主机格式化

[root@hadoop100 hadoop-2.7.2]$ hdfs namenode -format

Hadoop100主机启动NameNodeDataNodeNodeManager

[root@hadoop100 hadoop]$ hadoop-daemon.sh start namenode
[root@hadoop100 hadoop]$ hadoop-daemon.sh start datanode
[root@hadoop100 hadoop]$ hadoop-daemon.sh start nodemanager
[root@hadoop100 hadoop]$ jps
[root@hadoop100 hadoop-2.7.2]# jps
1219 NameNode
1653 NodeManager
2216 Jps
1355 DataNode

Hadoop101主机启动DataNodeNodeManagerResourceManager

[root@hadoop101 hadoop]$ hadoop-daemon.sh start datanode
[root@hadoop101 hadoop]$ hadoop-daemon.sh start nodemanager
[root@hadoop101 hadoop]$ hadoop-daemon.sh start resourcemanager
[root@hadoop101 hadoop]$ jps
[root@hadoop101 hadoop-2.7.2]# jps
2042 Jps
1085 DataNode
1517 NodeManager
1230 ResourceManager

Hadoop102主机启动DataNodeSecondaryNameNodeNodeManager

[root@hadoop102 hadoop]$ hadoop-daemon.sh start datanode
[root@hadoop102 hadoop]$ hadoop-daemon.sh start secondarynamenode
[root@hadoop102 hadoop]$ hadoop-daemon.sh start nodemanager
[root@hadoop102 hadoop]# jps
1184 SecondaryNameNode
1077 DataNode
1928 Jps
1230 NodeManager

3.4 群启集群

Hadoop集群中的节点很多时,采用上面的单点启动显然是不行的,下面介绍如何一键群启集群。

①配置slaves
注意:该文件中添加的内容结尾不允许有空格,文件中不允许有空行

[root@hadoop100 hadoop]$ vim /opt/module/hadoop-2.7.2/etc/hadoop/slaves
hadoop100
hadoop101
hadoop102

同步所有节点配置文件

[root@hadoop100 hadoop]$ xsync slaves

②格式化NameNode
如果集群是第一次启动,需要格式化NameNode(注意格式化之前,一定要先停止上次启动的所有namenodedatanode进程,然后再删除datalog数据)

[root@hadoop100 hadoop-2.7.2]$ bin/hdfs namenode -format

③启动HDFS

[root@hadoop100 hadoop-2.7.2]$ sbin/start-dfs.sh

④启动YARN

[root@hadoop101 hadoop-2.7.2]$ sbin/start-yarn.sh

注意:NameNodeResourceManger如果不是同一台机器,不能在NameNode上启动 YARN,应该在ResouceManager所在的机器上启动YARN

3.5 集群时间同步

时间同步的方式:找一个机器,作为时间服务器,所有的机器与这台集群时间进行定时的同步,比如,每隔十分钟,同步一次时间。

时间服务器配置(必须root用户)
①安装ntp

[root@hadoop100 ~]#  yum -y install ntp

②修改ntp配置文件

[root@hadoop100 ~]#  vim /etc/ntp.conf

a) 授权192.168.1.0-192.168.1.255网段上的所有机器可以从这台机器上查询和同步时间:

#restrict 192.168.1.0 mask 255.255.255.0 nomodify notrap为
restrict 192.168.1.0 mask 255.255.255.0 nomodify notrap

b)集群在局域网中,不使用其他互联网上的时间,注释掉下面:

#server 0.centos.pool.ntp.org iburst
#server 1.centos.pool.ntp.org iburst
#server 2.centos.pool.ntp.org iburst
#server 3.centos.pool.ntp.org iburst

c)当该节点丢失网络连接,依然可以采用本地时间作为时间服务器为集群中的其他节点提供时间同步,添加:

server 127.127.1.0
fudge 127.127.1.0 stratum 10

③修改/etc/sysconfig/ntpd文件

[root@hadoop100 ~]#  vim /etc/sysconfig/ntpd
#让硬件时间与系统时间一起同步
SYNC_HWCLOCK=yes

④重新启动ntpd服务

[root@hadoop100 ~]#  systemctl start ntpd

⑤设置ntpd服务开机启动

[root@hadoop100 ~]#  chkconfig ntpd on

其他机器配置(必须root用户)

在其他机器配置10分钟与时间服务器同步一次,编写定时任务:

[root@hadoop101 ~]#  crontab -e
*/10 * * * * /usr/sbin/ntpdate hadoop100

3.6 集群监控地址

HDFS文件系统:http://hadoop100:50070/dfshealth.html#tab-overview
SecondaryNameNode信息:http://hadoop102:50090/status.html
YARN信息:http://hadoop101:8088/cluster
查看JobHistoryhttp://hadoop101:19888/jobhistory


推荐阅读
  • Zabbix自定义监控与邮件告警配置实践
    本文详细介绍了如何在Zabbix中添加自定义监控项目,配置邮件告警功能,并解决测试告警时遇到的邮件不发送问题。 ... [详细]
  • 本文探讨了如何利用RxJS库在AngularJS应用中实现对用户单击和拖动操作的精确区分,特别是在调整区域大小的场景下。 ... [详细]
  • 本文详细介绍了如何在Oracle VM VirtualBox中实现主机与虚拟机之间的数据交换,包括安装Guest Additions增强功能,以及如何利用这些功能进行文件传输、屏幕调整等操作。 ... [详细]
  • 在测试软件或进行系统维护时,有时会遇到电脑蓝屏的情况,即便使用了沙盒环境也无法完全避免。本文将详细介绍常见的蓝屏错误代码及其解决方案,帮助用户快速定位并解决问题。 ... [详细]
  • 深入解析C语言中的关键字及其分类
    本文将全面介绍C语言中的关键字,并按照功能将其分为数据类型关键字、控制结构关键字、存储类别关键字和其他关键字四大类,旨在帮助读者更好地理解和运用这些基本元素。C语言中共有32个关键字。 ... [详细]
  • 在Android应用开发过程中,开发者经常遇到诸如CPU使用率过高、内存泄漏等问题。本文将介绍几种常用的命令及其应用场景,帮助开发者有效定位并解决问题。 ... [详细]
  • 为何Compose与Swarm之后仍有Kubernetes的诞生?
    探讨在已有Compose和Swarm的情况下,Kubernetes是如何以其独特的设计理念和技术优势脱颖而出,成为容器编排领域的领航者。 ... [详细]
  • 本文是对《敏捷软件开发:原则、模式与实践》一书的深度解析,书中不仅探讨了敏捷方法的核心理念及其应用,还详细介绍了面向对象设计的原则、设计模式的应用技巧及UML的有效使用。 ... [详细]
  • H5技术实现经典游戏《贪吃蛇》
    本文将分享一个使用HTML5技术实现的经典小游戏——《贪吃蛇》。通过H5技术,我们将探讨如何构建这款游戏的两种主要玩法:积分闯关和无尽模式。 ... [详细]
  • Docker安全策略与管理
    本文探讨了Docker的安全挑战、核心安全特性及其管理策略,旨在帮助读者深入理解Docker安全机制,并提供实用的安全管理建议。 ... [详细]
  • 在中标麒麟操作系统上部署达梦数据库及导入SQL文件
    本文档详细介绍了如何在中标麒麟操作系统上安装达梦数据库,并提供了导入SQL文件的具体步骤。首先,检查系统的发行版和内核版本,接着创建必要的用户和用户组,规划数据库安装路径,挂载安装介质,调整系统限制以确保数据库的正常运行,最后通过图形界面完成数据库的安装。 ... [详细]
  • 函子(Functor)是函数式编程中的一个重要概念,它不仅是一个特殊的容器,还提供了一种优雅的方式来处理值和函数。本文将详细介绍函子的基本概念及其在函数式编程中的应用,包括如何通过函子控制副作用、处理异常以及进行异步操作。 ... [详细]
  • 本文介绍了如何利用jQuery实现对网页上多个div元素的显示与隐藏控制,包括基本的toggle方法及更复杂的显示隐藏逻辑。 ... [详细]
  • HBase 数据复制与灾备同步策略
    本文探讨了HBase在企业级应用中的数据复制与灾备同步解决方案,包括存量数据迁移及增量数据实时同步的方法。 ... [详细]
  • TCP协议中的可靠传输机制分析
    本文深入探讨了TCP协议如何通过滑动窗口和超时重传来确保数据传输的可靠性,同时介绍了流量控制和拥塞控制的基本原理及其在实际网络通信中的应用。 ... [详细]
author-avatar
弥晓潞_509
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有