hadoop以及相关组件介绍以及个人理解

前言

  本人是由java后端转型大数据方向,目前也有近一年半时间了,不过我平时的开发平台是阿里云的Maxcompute,通过这么长时间的开发,对数据仓库也有了一定的理解,ETL这些经验还算比较丰富。但是由于Maxcompute是一个更简单的大数据开发平台,导致个人在分布式计算的底层一些知识比较薄弱,所以这次决定花几个月时间好好学习一下hadoop,后续当然也会开始spark的学习。个人感觉这块学习的东西还是比较多,同时也要不断的实践的,所以这趟学习之旅,希望能够记录自己的一些心得体会,供自己参考,同时也希望能够和跟我一样刚入门的同学一起分享探讨。

注:我目前学习主要是参考官网文档,《Hadoop实战》,《Hadoop权威指南》

注2:本人主要是学习Hadoop的相关生态系统,去了解分布式计算大数据计算平台的底层的一些东西,所以期间我会抛弃一些运维相关的学习包括详细的部署,hadoop集群的安全策略等。

初始Hadoop

  google的三篇论文(GFS,MapReduce,BigTable)很快促进了hadoop的面世,hadoop实际上起源于Nutch项目,于2006年2月正式启动,2008年开始hadoop正式火起来了。

Apache Hadoop和Hadoop 生态系统

  • Common:一系列组件和接口,用于分布式文件系统和通用I/O
  • Avro : 一种序列化系统,用于支持高效,跨语言的RPC和持久化数据存储
  • MapReduce : 分布式数据处理模型和习性环境,也就是计算框架
  • HDFS : 分布式文件系统
  • Pig :数据流语言和运行环境,用以探究非常庞大的数据集。pig运行在MapReduce和HDFS之上
  • Hive : 一种分布式呢的 、按列存储的数据仓库。HIVE管理HDFS中存储的数据,并提供基于SQL的查询语言
  • HBase:一种分布式的、按列存储的数据库。HBase使用HDFS作为底层存储,同时支持MapReduce的批量式计算和点查询,类似BigTable
  • ZooKeeper:一种分布式的、可用性高的协调服务。ZooKeeper提供分布式锁之类的基本服务用户构建分布式应用,对于java后端的 ,rpc相关的都是使用到ZooKeeper
  • Sqoop:该工具用于在结构化数据存储和HDFS之间高效批量传输数据,也就是数据同步的工具
  • Oozie:该服务用于运行和调度Hadoop作业,可以理解为一个工作流调度系统

HDFS和MapReduct体系结构

  HDFS和MapReduce时Hadoop的两大核心,整个Hadoop的体系结构主要是通过HDFS俩实现分布式存储的底层支持的,并且会通过MapReduce来实现分布式并行任务处理的程序支持。

首先我们先来看一下HDFS的体系结构,HDFS采用了主从结构模型,HDFS集群是由一个NameNode(主)和若干个DataNode组成的,NameNode管理文件系统的命名空间和客户端对文件的访问操作;DataNode管理存储的数据;如下图:

接下来介绍一下MapReduce的体系结构,MapReduce框架是由一个单独运行在主节点的JobTracker和运行在每个集群从节点的TaskTracker共同组成的。JobTracker负责调度构成一个作业的所有任务,从节点仅负责由主节点指派的任务。当一个job被提交时,JobTracker接收到提交作业和其配置信息之后,就会将配置信息等分发给从节点,同时调度任务并监控TaskTracker的执行。

浅谈一下HDFS,HBase和Hive

  刚开始接触这些概念的时候,感觉稀里糊涂,不清楚这几个之间到底是什么区别,之所以会产生混淆,因为这几个都是跟Hadoop的数据管理有关,下面我们就简单分析一下。

HDFS的数据管理

  我们知道操作系统都有自己的文件管理系统,而HDFS就是hadoop的分布式文件管理系统,举个例子,我们有个100GB的文件,用HDFS可能是放到100台机器上存储的,而我们不需要关心它是怎么存储以及怎么读取的。我们从NameNode,client,DataNode来简单介绍一下HDFS对数据的管理。

文件写入:

   client向NameNode发起文件写入的请求   -----> NameNode根据文件大小和文件块配置,返回给client相关的DataNode的信息----->client将文件划分多个block,写入DataNode

文件读取:

    client向NameNode发起文件读取请求--->NameNode返回DataNode信息----->client读取文件

文件块block复制

    NameNode发现部分文件的block有问题或者DataNode失效--->通知DataNode相互复制block------>DataNode开始直接相互复制

HBase的数据管理

  HBase时一个类似Bigtable的分布式数据库,它的大部分特性和Bigtable一样,是一个稀疏的、长期存储的、多维度的排序映射表,这张表的索引时行关键字,列关键字和时间戳。

HBase的一些特性可以参考这篇文章http://blog.csdn.net/macyang/article/details/6066622,说实话,我现在对HBase的理解还是很模糊的,因为也没有场景遇到过。暂且先在此记一下相关概念。

Hbase体系结构三大重要组成部分:HRegion   HBaseMaster   HBase Client

Hive的数据管理

毫无疑问,Hive将是我们使用最多的工具,包括我在Maxcompute上开发,其实主要工作也是类似Hive QL,Hive的定义很简单,它是建立在Hadoop上的数据仓库基础框架,它提供了一系列的工具,来进行数据的ETL。Hive定义了简单的类SQL的查询语言,简称Hive QL。因为Hive是一个数据仓库框架,所以按照使用层次我们可以从元数据存储、数据存储和数据交换三个方面来介绍。

1.元数据存储

  元数据其实就是数据仓库中表名称,表的列,表的分区,表分区的属性等,Hive将元数据存储在RDMS中。

2.数据存储

  Hive咩有专门的数据存储格式,也没有未数据建立索引,用户在创建表的时候只需要告诉Hive数据中的列分隔符和行分隔符,它就能解析数据了。

其次,Hive中所有的数据都存储在HDFS中(因为Hive其实只是一个数仓的框架,它是不包括存储的,我们可以简单的理解为通过列和行的分隔符,将文件中的每行数据映射成表的一条记录)

3.数据交换

  我们通常使用Hive客户端链接HiveServer,当然也可以通过web界面去写sql,Hive的大部分查询实际上都是利用MapReduce进行计算的

另外,下图是Hive的数据交换图,我们可以简单的看一下

时间: 2024-07-30 09:31:30

hadoop以及相关组件介绍以及个人理解的相关文章

【ALearning】第五章 Android相关组件介绍(一)Activity

Android应用程序由一些零散的有联系的组件组成,通过一个工程manifest绑定在一起.在manifest中,描述了每一个组件以及组件的作用,其中有6个组件,它们是Android应用程序的基石. Activities(活动) Service(服务) Content Provider(内容提供者) Intent(意图) Broadcast Receiver(广播接收器) Notification(通知) 在这里我们提到了组件(Component)的概念,组件(Component)是对数据和方法

【ALearning】第五章 Android相关组件介绍(二)Service

Service是Android中的四大组件之一,所以在Android开发过程中起到非常重要的作用.下面我们来看一下官方对Service的定义. A Service is an application component thatcan perform long-running operations in the background and does not provide auser interface. Another application component can start a se

Golden Gate 相关组件介绍:

OGG组件: Manager: 启动其它进程 Collector Extract Data Pump:可选进程,建议使用 Replicat Trails: 可以压缩,加密 Checkpoint OGG进程组(process group) Process Group: process parameter file:dirprm checkpoint file: dirchk 其它文件:dirrpt(report文件:.rpt和discard文件:.dsc ogg12c自动创建),dirdef,di

EasyTrack项目管理软件的四大版本和相关组件介绍

蓝云EasyTrack项目管理软件,遵循PMBOK和PRINCE2等国际通用项目管理理论,产品特性涵盖个人空间.管理驾驶舱.项目管理.项目组合管理.知识管理等,提供全面的项目管理解决方案. 蓝云EasyTrack分为快捷版.专业版.企业版.战略版四个版本,客户可根据所在的领域和实际需求选择购买项目和项目组合管理领域.应用生命周期管理领域.商务管理领域的相关应用组件,选择更有针对性,性价比高. 以下为四个版本的功能和适用对象的比较: 快捷版--提供个人仪表板,支持消息和公告.评论和沟通.我的任务和

Hadoop以及组件介绍

一.背景介绍 在接触过大数据相关项目的时候常常都会听到Hadoop这个东西,简单来说,他是一个用分布式计算来处理大数据的开源软件,下面包含了许多的组件和子项目,这篇文章将会介绍Hadoop的原理以及一些组件的应用. 二.准备工作 1.确认储存规模 有很多的大数据项目其实数据量跟本没这么大,跟本不需要到使用Hadoop这类的大数据软件,所以,第一步应该是先确认数据量有多大,真的MySQL跑的太久再去使用Hadoop就好. 2.确认数据类型 除了结构化数据以外,现在有些大数据项目需要处理的是一些非结

Hadoop——相关组件及其关系

如今Apache Hadoop已成为大数据行业发展背后的驱动力.Hive和Pig等技术也经常被提到,但是他们都有什么功能,为什么会需要奇怪的名字(如Oozie,ZooKeeper.Flume). Hadoop带来了廉价的处理大数据(大数据的数据容量通常是10-100GB或更多,同时数据种类多种多样,包括结构化.非结构化等)的能力.但这与之前有什么不同? 现 今企业数据仓库和关系型数据库擅长处理结构化数据,并且可以存储大量的数据.但成本上有些昂贵.这种对数据的要求限制了可处理的数据种类,同时这种惯

大数据的一些相关知识介绍

什么是大数据 大数据(big data),指无法在一定时间范围内用常规软件工具进行捕捉.管理和处理的数据集合,是需要新处理模式才能具有更强的决策力.洞察发现力和流程优化能力的海量.高增长率和多样化的信息资产. 大数据的定义是4Vs:Volume.Velocity.Variety.Veracity.用中文简单描述就是大.快.多.真. Volume -- 数据量大 随着技术的发展,人们收集信息的能力越来越强,随之获取的数据量也呈爆炸式增长.例如百度每日处理的数据量达上百PB,总的数据量规模已经到达E

Docker生态系统系列之一:常用组件介绍

[编者的话]本篇文章是介绍Docker生态系统的第一篇,不仅从概念上介绍了容器化.服务发现和全局配置存储.网络工具.调度.集群管理和编排这几部分内容,而且配以清晰易懂的例子进行讲解说明,非常值得读者称赞.Docker是现在使用最多的容器化软件.与其它已经存在的容器化系统相比,Docker可以更加简单的创建和管理容器,并与其它开源软件集成. 简介 容器化是一个以可移植和可预测的方式来部署分布式应用的过程,它会将应用组件以及依赖打包为一个标准.独立.轻量的环境,这个环境其实就是容器.现在许多公司都乐

CloudStack(一)简介及相关理论介绍

简介 CloudStack(cloudstack.apache.org)是IaaS类型云计算的一种开源解决方案,同类的解决方案有OpenStack.OpenNebula等,CloudStack是以java语言所研发并具有高可用性.可扩展性.丰富的UI功能.Hypervisor 的多样性等等..(更多请见http://www.cloudstack-china.org/2013/11/2702.html),它可以帮助用户利用自己的硬件提供类似于Amazon EC2那样的公共云服务.CloudStac