Hadoop的基本概念和简单使用
文章目录
- 1、概念
- 1.1、Hadoop 1.0和Hadoop 2.0
- 什么是Hadoo1.0
- 什么是Hadoo2.0
- 两者区别
- Hadoop整体框架区别
- MapReduce计算框架区别
- 1.2、MapReduce和HDFS
- 什么是MapReduce
- 什么是HDFS
- 1.3、NameNode和DataNode
- 什么是Block
- 什么是NameNode
- 什么是DataNode
- 1.4、JobTracker和TaskTracker
- 什么是JobTracker
- 什么是TaskTracker
- 1.5、ResourceManager和NodeManager
- 2、Hadoop的简单使用
- 2.1 创建文件夹
- 2.2 查看创建的文件夹
- 2.3 上传文件
- 2.4 下载文件
- 2.5 运行一个mapreduce的demo程序:wordcount
1、概念
1.1、Hadoop 1.0和Hadoop 2.0
什么是Hadoo1.0
Hadoop1.0即第一代Hadoop,指的是版本为Apache Hadoop 0.20.x、1.x或者CDH3系列的Hadoop,内核主要是由HDFS和MapReduce两个系统
组成。
其中MapReduce是一个离线处理框架,由编程模式(新旧API)
、运行时环境(JobTracker和TaskTracker)
和数据处理引擎(MapTask和ReduceTask)
三部分组成。
什么是Hadoo2.0
Hadoop2.0即第二代Hadoop,指的是版本为Apache Hadoop 0.23.x、2.x或者CDH4系列的Hadoop,内核主要由HDFS、MapReduce和YARN三个系统组成
,其中YARN是一个资源管理系统,负责集群资源管理和调度,MapReduce则是运行在YARN上的离线处理框架,它与Hadoop 1.0中的MapReduce在编程模型(新旧API)和数据处理引擎(MapTask和ReduceTask)两个方面是相同的。
两者区别
Hadoop整体框架区别
Hadoop1.0由分布式存储系统HDFS和分布式计算框架MapReduce组成,其中HDFS由一个NameNode和多个DateNode组成,MapReduce由一个JobTracker和多个TaskTracker组成。
Hadoop2.0为克服Hadoop1.0中的不足进行了下面改进:
- 针对Hadoop1.0单NameNode制约HDFS的扩展性问题,提出HDFS Federation,它让多个NameNode分管不同的目录进而实现访问隔离和横向扩展,同时彻底解决了NameNode单点故障问题;
- 针对Hadoop1.0中的MapReduce在扩展性和多框架支持等方面的不足,它将JobTracker中的资源管理和作业控制分开,分别由ResourceManager(负责所有应用程序的资源分配)和ApplicationMaster(负责管理一个应用程序)实现,即引入了资源管理框架Yarn。
- Yarn作为Hadoop2.0中的资源管理系统,它是一个通用的资源管理模块,可为各类应用程序进行资源管理和调度,不仅限于MapReduce一种框架,也可以为其他框架使用,如Tez、Spark、Storm等
MapReduce计算框架区别
MapReduce1.0计算框架主要由三部分组成:编程模型、数据处理引擎和运行时环境。它的基本编程模型是将问题抽象成Map和Reduce两个阶段,其中Map阶段将输入的数据解析成key/value,迭代调用map()函数处理后,再以key/value的形式输出到本地目录,Reduce阶段将key相同的value进行规约处理,并将最终结果写到HDFS上;它的数据处理引擎由MapTask和ReduceTask组成,分别负责Map阶段逻辑和Reduce阶段的逻辑处理;它的运行时环境由一个JobTracker和若干个TaskTracker两类服务组成,其中JobTracker负责资源管理和所有作业的控制,TaskTracker负责接收来自JobTracker的命令并执行它。
MapReducer2.0具有与MRv1相同的编程模型和数据处理引擎,唯一不同的是运行时环境。MRv2是在MRv1基础上经加工之后,运行于资源管理框架Yarn之上的计算框架MapReduce。它的运行时环境不再由JobTracker和TaskTracker等服务组成,而是变为通用资源管理系统Yarn和作业控制进程ApplicationMaster,其中Yarn负责资源管理的调度而ApplicationMaster负责作业的管理。
Hadoop1与Hadoop2的区分还是非常大,HDFS和MR都有不同,最起码的配置文件就不一样。项目应用的话,建议尽量往高版本走。稳健一点的话稍低于最高版本的一个稳定版本即可。
1.2、MapReduce和HDFS
什么是MapReduce
MapReduce是一种编程模型,用于大规模数据集(大于1TB)的并行运算。概念"Map(映射)“和"Reduce(归约)”,和它们的主要思想,都是从函数式编程语言里借来的,还有从矢量编程语言里借来的特性。它极大地方便了编程人员在不会分布式并行编程的情况下,将自己的程序运行在分布式系统上。 当前的软件实现是指定一个Map(映射)函数,用来把一组键值对映射成一组新的键值对,指定并发的Reduce(归约)函数,用来保证所有映射的键值对中的每一个共享相同的键组。
重点:
1、MapReduce是一种分布式计算模型,是Google提出的,主要用于搜索领域,解决海量数据的计算问题。
2、MR有两个阶段组成:Map和Reduce,用户只需实现map()和reduce()两个函数,即可实现分布式计算。
什么是HDFS
DFS即分布式文件系统,分布式文件存储在多个机器组成的集群中,用来管理分布式文件存储的系统称之为分布式文件系统。
HDFS即Hadoop分布式文件系统,它擅长存储大文件,流式读取,运行于一般性的商业硬件上。HDFS不适合存储大量的小文件,namenode会在内存中存储元数据,通常情况下每个文件、目录和块都将占用150个字节;也不适合任意并发写的场景,HDFS的写文件操作是append的模式。
1.3、NameNode和DataNode
什么是Block
在HDFS中,文件被分割成不同的块存储在集群的数据节点里,文件系统的元数据由文件系统集中管理。文件系统的块通常是512字节,但是HDFS默认128M,但是和普通的文件系统相比,如果一个文件没有达到128M,其并不会占满整个块。块默认如此大是为了减少寻址时间。抽象出块的概念的好处在于一个文件的大小可以超过整个磁盘,简化存储管理,很适合复制机制来实现高可用
。
什么是NameNode
NameNode 是一个通常在 HDFS 实例中的单独机器上运行的软件。NameNode管理文件系统的命名空间,维护文件系统树、所有文件、目录以及块的元数据,元数据有两种namespace image和edit log。
什么是DataNode
DataNode 也是一个通常在 HDFS实例中的单独机器上运行的软件。NameNode拥有Block和DataNode之间的映射关系,但是它并不持久化这些信息,这些信息来源依赖于DataNode启动时向NameNode发送的报告。DataNode维护着最终的Block,并定期向NameNode发送该DataNode包含的Block列表。
1.4、JobTracker和TaskTracker
什么是JobTracker
JobTracker是一个后台服务进程,启动之后,会一直监听并接收来自各个TaskTracker发送的心跳信息,包括资源使用情况和任务运行情况等信息。
JobTracker的主要功能:
- 作业控制:在hadoop中每个应用程序被表示成一个作业,每个作业又被分成多个任务,JobTracker的作业控制模块则负责作业的分解和状态监控。
最重要的是状态监控:主要包括TaskTracker状态监控、作业状态监控和任务状态监控。主要作用:容错和为任务调度提供决策依据。 - 资源管理。
什么是TaskTracker
TaskTracker是JobTracker和Task之间的桥梁
:一方面,从JobTracker接收并执行各种命令:运行任务、提交任务、杀死任务等;另一方面,
将本地节点上各个任务的状态通过心跳周期性汇报给JobTracker。TaskTracker与JobTracker和Task之间采用了RPC协议进行通信。
TaskTracker的主要功能:
汇报心跳
:Tracker周期性将所有节点上各种信息通过心跳机制汇报给JobTracker。这些信息包括两部分:
机器级别信息:节点健康情况、资源使用情况等。
任务级别信息:任务执行进度、任务运行状态等。执行命令
:JobTracker会给TaskTracker下达各种命令,主要包括:启动任务(LaunchTaskAction)、提交任务(CommitTaskAction)、杀死任务(KillTaskAction)、
杀死作业(KillJobAction)和重新初始化(TaskTrackerReinitAction)。
1.5、ResourceManager和NodeManager
ResourceManager 是基于应用程序对资源的需求进行调度的 ; 每一个应用程序需要不同类型的资源因此就需要不同的容器。ResourceManager 是一个中心的服务
,它做的事情是调度、启动每一个 Job 所属的ApplicationMaster、另外监控 ApplicationMaster 的存在情况。
NodeManager 是每一台机器框架的代理,是执行应用程序的容器,监控应用程序的资源使用情况 (CPU,内存,硬盘,网络 ) 并且向调度器(ResourceManager )汇报。
ApplicationMaster 的职责有:向调度器索要适当的资源容器,运行任务,跟踪应用程序的状态和监控它们的进程,处理任务的失败原因。
2、Hadoop的简单使用
Hadoop集群的搭建请参考《CentOS7下Hadoop集群搭建》
2.1 创建文件夹
在HDFS上创建文件夹 /test/input
[root@hadoop-master bin]# hadoop fs -mkdir -p /test/input
2.2 查看创建的文件夹
[root@hadoop-master bin]# hadoop fs -ls /
Found 1 items
drwxr-xr-x - root supergroup 0 2020-08-19 12:19 /test
[root@hadoop-master bin]# hadoop fs -ls /test
Found 1 items
drwxr-xr-x - root supergroup 0 2020-08-19 12:19 /test/input
2.3 上传文件
准备测试文件
[root@hadoop-master test]# vi hw_hadoop.txt
[root@hadoop-master test]# cat hw_hadoop.txt
hello world leo825
hello world hadoop
hello that girl
hello that boy
把文件上传到HDFS的/test/input文件夹中
[root@hadoop-master test]# hadoop fs -put ./hw_hadoop.txt /test/input
检查上传结果
[root@hadoop-master test]# hadoop fs -ls /test/input
Found 1 items
-rw-r--r-- 2 root supergroup 69 2020-08-19 12:26 /test/input/hw_hadoop.txt
2.4 下载文件
[root@hadoop-master local]# hadoop fs -get /test/input/hw_hadoop.txt ./
[root@hadoop-master local]# ll
总用量 12
drwxr-xr-x. 2 root root 6 4月 11 2018 bin
drwxr-xr-x. 2 root root 6 4月 11 2018 etc
drwxr-xr-x. 2 root root 6 4月 11 2018 games
drwxr-xr-x. 4 root root 30 8月 8 10:59 hadoop
-rw-r--r--. 1 root root 69 8月 19 16:52 hw_hadoop.txt
2.5 运行一个mapreduce的demo程序:wordcount
运行以下examples-2.7.3.jar程序中的wordcount
hadoop jar /usr/local/hadoop/apps/hadoop-2.7.3/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.3.jar wordcount /test/input /test/output
执行结果
[root@hadoop-master test]# hadoop jar /usr/local/hadoop/apps/hadoop-2.7.3/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.3.jar wordcount /test/input /test/output
20/08/19 17:25:55 INFO client.RMProxy: Connecting to ResourceManager at hadoop-master/192.168.223.131:8032
20/08/19 17:25:56 INFO input.FileInputFormat: Total input paths to process : 1
20/08/19 17:25:56 INFO mapreduce.JobSubmitter: number of splits:1
20/08/19 17:25:57 INFO mapreduce.JobSubmitter: Submitting tokens for job: job_1597810488836_0001
20/08/19 17:25:57 INFO impl.YarnClientImpl: Submitted application application_1597810488836_0001
20/08/19 17:25:57 INFO mapreduce.Job: The url to track the job: http://hadoop-master:8088/proxy/application_1597810488836_0001/
20/08/19 17:25:57 INFO mapreduce.Job: Running job: job_1597810488836_0001
20/08/19 17:26:08 INFO mapreduce.Job: Job job_1597810488836_0001 running in uber mode : false
20/08/19 17:26:08 INFO mapreduce.Job: map 0% reduce 0%
20/08/19 17:26:18 INFO mapreduce.Job: map 100% reduce 0%
20/08/19 17:26:25 INFO mapreduce.Job: map 100% reduce 100%
20/08/19 17:26:26 INFO mapreduce.Job: Job job_1597810488836_0001 completed successfully
20/08/19 17:26:26 INFO mapreduce.Job: Counters: 49File System CountersFILE: Number of bytes read=88FILE: Number of bytes written=237555FILE: Number of read operations=0FILE: Number of large read operations=0FILE: Number of write operations=0HDFS: Number of bytes read=184HDFS: Number of bytes written=54HDFS: Number of read operations=6HDFS: Number of large read operations=0HDFS: Number of write operations=2Job Counters Launched map tasks=1Launched reduce tasks=1Rack-local map tasks=1Total time spent by all maps in occupied slots (ms)=6450Total time spent by all reduces in occupied slots (ms)=4613Total time spent by all map tasks (ms)=6450Total time spent by all reduce tasks (ms)=4613Total vcore-milliseconds taken by all map tasks=6450Total vcore-milliseconds taken by all reduce tasks=4613Total megabyte-milliseconds taken by all map tasks=6604800Total megabyte-milliseconds taken by all reduce tasks=4723712Map-Reduce FrameworkMap input records=4Map output records=12Map output bytes=117Map output materialized bytes=88Input split bytes=115Combine input records=12Combine output records=7Reduce input groups=7Reduce shuffle bytes=88Reduce input records=7Reduce output records=7Spilled Records=14Shuffled Maps =1Failed Shuffles=0Merged Map outputs=1GC time elapsed (ms)=131CPU time spent (ms)=1490Physical memory (bytes) snapshot=290959360Virtual memory (bytes) snapshot=4160589824Total committed heap usage (bytes)=154607616Shuffle ErrorsBAD_ID=0CONNECTION=0IO_ERROR=0WRONG_LENGTH=0WRONG_MAP=0WRONG_REDUCE=0File Input Format Counters Bytes Read=69File Output Format Counters Bytes Written=54
在YARN Web界面:http://192.168.223.131:8088/cluster
查看输出结果:
[root@hadoop-master test]# hadoop fs -ls /test/output
Found 2 items
-rw-r--r-- 2 root supergroup 0 2020-08-19 17:26 /test/output/_SUCCESS
-rw-r--r-- 2 root supergroup 54 2020-08-19 17:26 /test/output/part-r-00000
[root@hadoop-master test]# hadoop fs -cat /test/output/part-r-00000
boy 1
girl 1
hadoop 1
hello 4
leo825 1
that 2
world 2
Hadoop的基本概念和简单使用相关推荐
- tensorflow笔记:流程,概念和简单代码注释
tensorflow是google在2015年开源的深度学习框架,可以很方便的检验算法效果.这两天看了看官方的tutorial,极客学院的文档,以及综合tensorflow的源码,把自己的心得整理了一 ...
- 计算机基本概念及简单的二进制运算
计算机基本概念及简单的二进制运算 ----------------------------------------------------------------------------------- ...
- REST API 概念的简单介绍
REST API 概念的简单介绍 最近发现很多人不了解REST是什么,我综合了下网上的文章,摘录了一下. 首先要明确一点:REST(Representational State Transfer,表述 ...
- UE4 Matinee功能基本概念及简单示例(Sequence编辑器)
UE4 Matinee功能基本概念及简单示例(Sequence编辑器) https://gameinstitute.qq.com/community/detail/122091 UE4提供的Matin ...
- git基本概念以及简单用法
git基本概念以及简单用法 最近优达把<如何使用Git和GitHub>这门课设置为免费课程,借此机会我也去学习了一波,以便能加入全球最大的同性交友网站.以下内容,均为听课笔记.总共分为三部 ...
- 机器学习基础概念及简单框架
机器学习要知道的基础概念和简单框架 机器学习相关的基础概念 机器学习的简单框架 机器学习相关的基础概念 All models are wrong but some are useful(所有模型都是错 ...
- 3台机器配置hadoop集群_Hadoop学习之路(三)Hadoop集群搭建和简单应用
概念了解 主从结构:在一个集群中,会有部分节点充当主服务器的角色,其他服务器都是从服务器的角色,当前这种架构模式叫做主从结构. 主从结构分类: 1.一主多从 2.多主多从 Hadoop中的HDFS和Y ...
- 教程 | Hadoop集群搭建和简单应用
这是小小本周的第一篇,我是小小,开更本周的第一篇,本篇将会介绍Hadoop集群的简单搭建和简单应用. 概念了解 主从结构:在一个集群众,会有部分节点充当主节点的角色,其他服务器都是从节点的角色,当前这 ...
- flume java 安装部署_[Hadoop] Flume安装部署与简单使用
1. Flume Flume是一个分布式的日志收集框架,针对日志数据进行采集汇总,把日志从A地方搬运到B地方去. 使用场景: RDBMS ==> Sqoop ==> Hadoop 分散在各 ...
最新文章
- 从实例到数理来解析感知机学习算法(PLA)
- jqurey操作radio总结
- Number()、parseInt()、parseFloat()的区别
- 打印hello world java_java – 如何打印“hello world”?
- c matlab 引擎调用,将C/C++回调传递给matlab引擎
- html入门难,HTML+CSS入门之打造全网最劲富文本系列之大话技术难点与特色设计
- 记录下关于qt使用windeployqt.exe打包程序之后运行报错无法定位程序输入点
- 实践的意义——写给图像处理算法爱好者的建议
- 小学计算机二课堂教案,信息技术与小学语文整合教学案例
- bitblt与StretchDIBits
- MyBatis连接池的实现原理分析
- 计算机网络技术该考什么证,计算机网络工程师证书
- 抖音超级恶心的滑稽HTML源码
- 计算机建立第2用户,2016年计算机二级VF备考练习题及参考答案(5)
- 记一次python考试题
- 【Postman】Postman的请求方式
- 【论文分享】★★★「SOTA」小样本图神经网络分类模型 HGNN:Hybrid Graph Neural Networks for Few-Shot Learning
- Python高效替代Excel了,你会吗?
- Scheme语言直译为汉语(十四)
- [知乎]作为计算机专业学生,最应该学习的课程前五位是什么?
热门文章
- SAP CO模块权限控制
- 杜克大学出来的NBA球星有哪些?
- SAP固定资产相关的一些表
- 别傻了,年轻人买“养生奶茶”才不是为了养生!
- 社交电商风潮起,中小卖家何处去
- git公有转私有_【IT新手之路】客户端组件化之私有库搭建
- verilog for循环_HDLBits:在线学习 Verilog (二十四 · Problem 115-119)
- python语法总结下载_python语法总结1
- sql server与java实例_Origin数据处理实例教程50节02040101
- mysql 代码如何导出数据_mysql导入导出.sql数据