由于所做的银行项目与大数据有关,所以个人学习下hadoop的知识,希望能对大数据有所了解,不喜勿喷,哪里有不对的希望大神指点
Hadoop百度百科:
Hadoop是一个由Apache基金会所开发的分布式系统基础架构。
Hadoop其实只是一种数据处理的框架,具体去处理什么问题,不是平台本身决定的。
hadoop的出现时源于现实中存储和需要分析的数据的激增,最终要解决什么问题是看使用者要解决什么问题。
用户可以在不了解分布式底层细节的情况下,开发分布式程序。充分利用集群的威力进行高速运算和存储。
Hadoop实现了一个分布式文件系统(Hadoop Distributed File System),简称HDFS。HDFS有高容错性的特点,并且设计用来部署在低廉的(low-cost)硬件上;而且它提供高吞吐量(high throughput)来访问应用程序的数据,适合那些有着超大数据集(large data set)的应用程序。HDFS放宽了(relax)POSIX的要求,可以以流的形式访问(streaming access)文件系统中的数据。
Hadoop的框架最核心的设计就是:HDFS和MapReduce。HDFS为海量的数据提供了存储,则MapReduce为海量的数据提供了计算。
基础知识:
如今是大数据时代,而且学习大数据都会先学习Hadoop,因为它是目前世界上最流行的分布式数据处理框架。
Hadoop的核心是YARN,HDFS,Mapreduce,常用模块架构如下
HDFS:
HDFS是一个分布式文件系统,在HDFS上写文件的过程与我们平时使用的单机文件系统非常不同,从宏观上来看,在HDFS文件系统上创建并写一个文件,流程如下图来自《Hadoop:The Definitive Guide》一书)所示:
具体过程描述如下:
1.Client调用DistributedFileSystem对象的create方法,创建一个文件输出流(FSDataOutputStream)对象
2.通过DistributedFileSystem对象与Hadoop集群的NameNode进行一次RPC远程调用,在HDFS的Namespace中创建一个文件条目(Entry),该条目没有任何的Block。
3.通过FSDataOutputStream对象,向DataNode写入数据,数据首先被写入FSDataOutputStream对象内部的Buffer中,然后数据被分割成一个个Packet数据包。
4.以Packet最小单位,基于Socket连接发送到按特定算法选择的HDFS集群中一组DataNode(正常是3个,可能大于等于1)中的一个节点上,在这组DataNode组成的Pipeline上依次传输Packet。
5.这组DataNode组成的Pipeline反方向上,发送ack,最终由Pipeline中第一个DataNode节点将Pipeline ack发送给Client。
6.完成向文件写入数据,Client在文件输出流(FSDataOutputStream)对象上调用close方法,关闭流。
7.调用DistributedFileSystem对象的complete方法,通知NameNode文件写入成功。
Mapreduce
源自于谷歌的MapReduce论文,用以进行大数据量的计算,它屏蔽了分布式计算框架细节,将计算机抽象成map和reduce两部分。
HBASE(分布式列存数据库)
源自谷歌的Bigtable论文,是一个建立在HDFS之上,面共享列的针对结构化的数据可伸缩,高可靠,高性能分布式和面向列的动态模式数据库。
zookeeper
解决分布式环境下数据管理问题,统一命名,状态同步,集群管理,配置同步等。
yarn分布式资源管理器
Apache Hadoop YARN (Yet Another Resource Negotiator,另一种资源协调者)是一种新的Hadoop资源管理器,它是一个通用资源管理系统,可为上层应用提供统一的资源管理和调度,它的引入为集群在利用率,资源统一管理和数据共享等方面带来了巨大好处。
YARN最初是为了修复MapReduce实现里的明显不足,并对可伸缩性(支持一万个节点和二十万个内核的集群)、可靠性和集群利用率进行了提升。YARN实现这些需求的方式是,把Job Tracker的两个主要功能(资源管理和作业调度/监控)分成了两个独立的服务程序——全局的资源管理(RM)和针对每个应用的应用 Master(AM),这样一个应用要么是传统意义上的MapReduce任务,要么是任务的有向无环图(DAG)。
YARN从某种那个意义上来说应该算做是一个云操作系统,它负责集群的资源管理。在操作系统之上可以开发各类的应用程序,例如批处理MapReduce、流式作业Storm以及实时型服务Storm等。这些应用可以同时利用Hadoop集群的计算能力和丰富的数据存储模型,共享同一个Hadoop 集群和驻留在集群上的数据。此外,这些新的框架还可以利用YARN的资源管理器,提供新的应用管理器实现。
YARN的核心思想 将JobTracker和TaskTacker进行分离,它由下面几大构成组件:
a. 一个全局的资源管理器 ResourceManager
b. ResourceManager的每个节点代理 NodeManager
c. 表示每个应用的 ApplicationMaster
d. 每一个ApplicationMaster拥有多个Container在NodeManager上运行
此文章是在今日头条上找的,拿过来自己先认识下Hadoop是什么,都有什么,用来做什么的。