大数据基础之Hadoop(一)—— Hadoop概述
大数据基础之Hadoop(二)—— HDFS
大数据基础之Hadoop(三)—— MapReduce
大数据基础之Hadoop(四)——Yarn
总结:
Hadoop 三大发行版本:Apache、Cloudera、Hortonworks。
高可靠性:Hadoop底层维护多个数据副本,所以即使Hadoop某个计算元
素或存储出现故障,也不会导致数据的丢失。
高扩展性:在集群间分配任务数据,可方便的扩展数以千计的节点。可实现不停机扩展节点。
高效性:在MapReduce的思想下,Hadoop是并行工作的,以加快任务处
理速度。
高容错性:能够自动将失败的任务重新分配。
Hadoop Distributed File System,简称 HDFS,是一个分布式文件系统。 用于存储文件,通过目录树来定位文件;其次,它是分布式的,由很多服务器联合起来实现其功能,集群中的服务器有各自的角色。
分布式文件系统产生的背景
随着数据量越来越大,在一个操作系统存不下所有的数据,那么就分配到更多的操作系统管理的磁盘中,但是不方便管理和维护,迫切需要一种系统来管理多台机器上的文件,这就是分布式文件管理系统。
适合一次写入,多次读出的场景。一个文件经过创建、写入和关闭之后就不需要改变。
Yarn是一个资源调度平台,负责为运算程序提供服务器运算资源,相当于一个分布式的操作系统平台,而 MapReduce 等运算程序则相当于运行于操作系统之上的应用程序。
Yet Another Resource Negotiator 简称 YARN ,另一种资源协调者,是 Hadoop 的资源管理器。
1)ResourceManager(RM):管理整个集群资源(内存、CPU等)
3)ApplicationMaster(AM):管理单个任务运行
2)NodeManager(NM):管理单个节点服务器资源
4)Container:容器,相当一台独立的服务器,里面封装了任务运行所需要的资源,如内存、CPU、磁盘、网络等。
说明1:客户端可以有多个
说明2:集群上可以运行多个ApplicationMaster
说明3:每个NodeManager上可以有多个Container
MapReduce 是一个分布式运算程序的编程框架,是用户开发“基于 Hadoop 的数据分析应用”的核心框架。
MapReduce 核心功能是 将用户编写的业务逻辑代码和自带默认组件整合成一个完整的分布式运算程序,并发运行在一个 Hadoop 集群上 。
MapReduce 将计算过程分为两个阶段:Map 和 Reduce
1)Map 阶段并行处理输入数据
2)Reduce 阶段对 Map 结果进行汇总
核心思想:如何把大问题分解成独立的小问题,再并行解决。
典型场景:
计算URL
的访问频率:搜索引擎的使用中,会遇到大量的URL
的访问,所以,可以使用 MapReduce
来进行统计,得出(URL
,次数)结果,在后续的分析中可以使用。
Top K 问题:在各种的文档分析,或者是不同的场景中,经常会遇到关于 Top K
的问题,例如输出这篇文章的出现前5
个最多的词汇。这个时候也可以使用 MapReduce
来进行统计。
1、易于编程: 用户只关心业务逻辑。 实现框架的接口。
2、良好扩展性:可以动态增加服务器,解决计算资源不够问题。
3、高容错性:任何一台机器挂掉,可以将任务转移到其他节点。
4、适合海量数据计算:(TB/PB) 几千台服务器共同计算。
1、不擅长实时计算。 Mysql(在毫秒或者秒级内返回结果)
2、**不擅长流式计算。 Spark Streaming | flink 。**流式计算的输入数据是动态的,而 MapReduce 的输入数据集是静态的,不能动态变化。
3、不擅长DAG有向无环图计算。spark 。 多个应用程序存在依赖关系,后一个应用程序的输入为前一个的输出。在这种情况下,MapReduce 并不是不能做,而是使用后,每个 MapReduce 作业的输出结果都会写入到磁盘,会造成大量的磁盘 IO,导致性能非常的低下。
win10下安装Hadoop3.x参看:
启动:
管理员命令下运行
hdfs namenode -format
sbin/start-all.cmd
测试:
hadoop的web界面:http://localhost:9870/
yarn的web界面:http://localhost:8088/cluster
问题:
1、win10安装hadoop启动所有进程后,发现resourcemanager报错:
FATAL resourcemanager.Resourcelanager : Error starting ResourceManager
java.lang.NoClassDefF oundBrror: org/apache/hadoop/yarn/server/timelineservice/col1ector/TimelineCol1ectoranager
解决:
将hadoop安装目录下\share\hadoop\yarn\timelineservice\hadoop-yarn-server-timelineservice-3.1.1.jar
移动到hadoop安装目录下\share\hadoop\yarn\hadoop-yarn-server-timelineservice-3.1.1.jar
2、win10安装hadoop启动所有进程后,发现nodemanager报错:
2022021-10-06 16:39:15,916 ERROR nodemanager.NodelManager: Error starting Nodellanager
b36org.apache. hadoop,yarn. exceptions. YarnfuntimeException: Failed to setup local dir /tmp/hadoup-rsw/m-1ocal-dir,which wa202s marked as good.
解决:以管理员身份运行sbin/start-all.cmd
即可。
在hadoop根目录测试:
hadoop jar /D:\javaweb\bigdata\hadoop-3.1.3/share/hadoop/mapreduce/hadoop-mapreduce-examples-3.1.3.jar /D:\javaweb\bigdata\hadoop-3.1.3\intput\word.txt /D:\javaweb\bigdata\hadoop-3.1.3\output
hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-3.1.3.jar wordcount input/word.txt output
hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-3.1.3.jar wordcount input output
配置 mapred-site.xml
<property>
<name>mapreduce.jobhistory.addressname>
<value>localhost:10020value>
property>
<property>
<name>mapreduce.jobhistory.webapp.addressname>
<value>localhost:19888value>
property>
在bin目录下,cmd运行命令:
mapred historyserver
查看 JobHistory
http://hadoop102:19888/jobhistory
配置yarn-site.xml
<property>
<name>yarn.log-aggregation-enablename>
<value>truevalue>
property>
<property>
<name>yarn.log.server.urlname>
<value>http://hadoop102:19888/jobhistory/logsvalue>
property>
<property>
<name>yarn.log-aggregation.retain-secondsname>
<value>604800value>
property>
重启程序。