热门标签 | 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


推荐阅读
  • HDFS2.x新特性
    一、集群间数据拷贝scp实现两个远程主机之间的文件复制scp-rhello.txtroothadoop103:useratguiguhello.txt推pushscp-rr ... [详细]
  • VScode格式化文档换行或不换行的设置方法
    本文介绍了在VScode中设置格式化文档换行或不换行的方法,包括使用插件和修改settings.json文件的内容。详细步骤为:找到settings.json文件,将其中的代码替换为指定的代码。 ... [详细]
  • Spring源码解密之默认标签的解析方式分析
    本文分析了Spring源码解密中默认标签的解析方式。通过对命名空间的判断,区分默认命名空间和自定义命名空间,并采用不同的解析方式。其中,bean标签的解析最为复杂和重要。 ... [详细]
  • Java序列化对象传给PHP的方法及原理解析
    本文介绍了Java序列化对象传给PHP的方法及原理,包括Java对象传递的方式、序列化的方式、PHP中的序列化用法介绍、Java是否能反序列化PHP的数据、Java序列化的原理以及解决Java序列化中的问题。同时还解释了序列化的概念和作用,以及代码执行序列化所需要的权限。最后指出,序列化会将对象实例的所有字段都进行序列化,使得数据能够被表示为实例的序列化数据,但只有能够解释该格式的代码才能够确定数据的内容。 ... [详细]
  • 本文介绍了Java工具类库Hutool,该工具包封装了对文件、流、加密解密、转码、正则、线程、XML等JDK方法的封装,并提供了各种Util工具类。同时,还介绍了Hutool的组件,包括动态代理、布隆过滤、缓存、定时任务等功能。该工具包可以简化Java代码,提高开发效率。 ... [详细]
  • ZSI.generate.Wsdl2PythonError: unsupported local simpleType restriction ... [详细]
  • [大整数乘法] java代码实现
    本文介绍了使用java代码实现大整数乘法的过程,同时也涉及到大整数加法和大整数减法的计算方法。通过分治算法来提高计算效率,并对算法的时间复杂度进行了研究。详细代码实现请参考文章链接。 ... [详细]
  • 本文介绍了如何使用C#制作Java+Mysql+Tomcat环境安装程序,实现一键式安装。通过将JDK、Mysql、Tomcat三者制作成一个安装包,解决了客户在安装软件时的复杂配置和繁琐问题,便于管理软件版本和系统集成。具体步骤包括配置JDK环境变量和安装Mysql服务,其中使用了MySQL Server 5.5社区版和my.ini文件。安装方法为通过命令行将目录转到mysql的bin目录下,执行mysqld --install MySQL5命令。 ... [详细]
  • 本文详细介绍了如何使用MySQL来显示SQL语句的执行时间,并通过MySQL Query Profiler获取CPU和内存使用量以及系统锁和表锁的时间。同时介绍了效能分析的三种方法:瓶颈分析、工作负载分析和基于比率的分析。 ... [详细]
  • Imtryingtofigureoutawaytogeneratetorrentfilesfromabucket,usingtheAWSSDKforGo.我正 ... [详细]
  • WhenIusepythontoapplythepymysqlmoduletoaddafieldtoatableinthemysqldatabase,itdo ... [详细]
  • 如何查询zone下的表的信息
    本文介绍了如何通过TcaplusDB知识库查询zone下的表的信息。包括请求地址、GET请求参数说明、返回参数说明等内容。通过curl方法发起请求,并提供了请求示例。 ... [详细]
  • 本文介绍了Swing组件的用法,重点讲解了图标接口的定义和创建方法。图标接口用来将图标与各种组件相关联,可以是简单的绘画或使用磁盘上的GIF格式图像。文章详细介绍了图标接口的属性和绘制方法,并给出了一个菱形图标的实现示例。该示例可以配置图标的尺寸、颜色和填充状态。 ... [详细]
  • 本文讨论了编写可保护的代码的重要性,包括提高代码的可读性、可调试性和直观性。同时介绍了优化代码的方法,如代码格式化、解释函数和提炼函数等。还提到了一些常见的坏代码味道,如不规范的命名、重复代码、过长的函数和参数列表等。最后,介绍了如何处理数据泥团和进行函数重构,以提高代码质量和可维护性。 ... [详细]
  • 基于Socket的多个客户端之间的聊天功能实现方法
    本文介绍了基于Socket的多个客户端之间实现聊天功能的方法,包括服务器端的实现和客户端的实现。服务器端通过每个用户的输出流向特定用户发送消息,而客户端通过输入流接收消息。同时,还介绍了相关的实体类和Socket的基本概念。 ... [详细]
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社区 版权所有