BigData:Hadoop的基础总结

前言

    针对Hadoop的一些基础概念和术语进行整理。

1、Hadoop是什么?

    分布式的解决方案。

2、Hadoop解决了什么问题?

    分布式存储和分布式计算的问题。

3、Hadoop如何处理数据?

    Hadoop的数据来源可以是任何形式,在处理半结构化和非结构化数据上与关系型数据库相比有更好的性能,具有更灵活的处理能力,不管任何数据形式最终会转化为key/value,key/value是基本数据单元。用函数式变成Mapreduce代替SQL,SQL是查询语句,而Mapreduce则是使用脚本和代码,而对于适用于关系型数据库,习惯SQL的Hadoop有开源工具hive代替。

    数据采集和DataFlow

    对于数据采集主要分为三类,即结构化数据库采集,日志和文件采集,网页采集。对于结构化数据库,采用Sqoop是合适的,可以实现结构化数据库中数据并行批量入库到hdfs存储。对于网页采集,前端可以采用Nutch,全文检索采用lucense,而实际数据存储最好是入库到Hbase数据库。对于日志文件的采集,现在最常用的仍然是flume或chukwa,但是我们要看到如果对于日志文件数据需要进行各种计算处理再入库的时候,往往flume并不容易处理,这也是为何可以采用Pig来做进一步复杂的data flow和process的原因。

    数据采集类似于传统的ETL等工作,因此传统ETL工具中的数据清洗,转换,任务和调度等都是相当重要的内容。这一方面是要基于已有的工具,进行各种接口的扩展以实现对数据的处理和清洗,一方面是加强数据采集过程的调度和任务监控。

    数据存储库
    数据存储在这里先谈三种场景下的三种存储和应用方式,即Hbase,Hive,impala。其中三者都是基于底层的hdfs分布式文件系统。hive重点是sql-batch查询,海量数据的统计类查询分析,而impala的重点是ad-hoc和交互式查询。hive和impala都可以看作是基于OLAP模式的。而Hbase库是支撑业务的CRUD操作(增加(Create)、读取(Retrieve)、更新(Update)和删除(Delete)),各种业务操作下的处理和查询。
    如何对上面三种模式提供共享一致的数据存储和管理服务,HCatalog是基于Apache Hadoop之上的数据表和存储管理服务。提供统一的元数据管理,而不需要知道具体的存储细节当然是最好的,但是Hcatalog本身也还处于完善阶段,包括和Hive ,Pig的集成。
    基于Mysql的MPP数据库Infobright是另外一个MPP(share nothing)数据分析库的选择,如果本身已有的业务系统就是基于Mysql数据库的,那么采用Infobright来做作为一个OLAP分析库也是一个选择。但是本身Infobright的性能,Infobright社区版的稳定性,管控功能的缺失等仍然是需要考量的因素。
    对于mapreduce和zookeeper本身就已经在hbase和hive中使用到了。如hive的hsql语言需要通过mapreduce解析和合并等。而对于impala要注意到本身是基于内存的MPP机制,没有用到mapreduce框架去处理,Dremel之所以能在大数据上实现交互性的响应速度,是因为使用了两方面的技术:一是对有嵌套结构的嵌套关系型数据采用了全新的列式存储格式,一是分布式可扩展统计算法,能够在几千台机器上并行计算查询结果。
    实时流处理
    这个hadoop框架本身没有包含,twitter推出storm可以解决实时热点查询和排序的问题,基于一个巨大的海量数据数据库,如果不是这种基于增量strom模式的分布式实时任务计算和推送,很难真正满足业务对性能的要求。
storm只是提供了一个开源的实时流处理框架,而真正的任务处理逻辑和代码仍然需要自己去实现,而开源框架只是提供了一个框架,提供了基本的集群控制,任务采集,任务分发,监控和failover的能力。真正在企业内部应用来看,很少有这种实时流场景,而与之对应的CEP复杂事件处理和EDA事件驱动架构,这个基于消息中间件实现的事件发布订阅和推送,事件链的形成相对来说更加成熟。

4、Hadoop的核心内容是什么?

    MapReduce(分布式计算的体现)和HDFS(分布式存储的体现)

5、Hadoop的特点?

    容错性高;

    可部署在低廉的(low-cost)硬件上,如使用多个PC搭建集群;

    而且它提供高吞吐量(high throughput)来访问应用程序的数据,适合那些有着超大数据集(large data set)的应用程序;

    HDFS放宽了(relax)POSIX的要求,可以以流的形式访问(streaming access)文件系统中的数据;

6、跟Hadoop有关的术语解释

     分布式:由分布在不同主机上的进程协同在一起,构成了整个应用。

    结构化数据:(structured data):是具体既定格式的实体化数据,如XML文档或满足特定预定义格式的数据库表。这是RDBMS包括的内容。

    半结构化数据:(semi-structured data):比较松散,虽然可能有格式,但是经常被忽略,所以他只能作为对的一般指导。如:一张电子表格,其结构是由单元格组成的网格,但是每个单元格自身可保存任何形式的数据。 
非结构化数据

    非结构化数据:(unstructured data):没有什么特别的内部结构,如纯文本或图像数据。

    Master 主节点。Slave:从节点

    ETL:数据的Extract(抽取)、Transform(转换)、Load(加载)

    Sqoop:关系型数据库的ETL工具

    Flume:日志收集工具

    Mahout:数据挖掘

    Hive:数据仓库,基于Hadoop的一个工具,提供完整的SQL查询,可以将sql语句转换为MapReduce任务进行运行;

    Pig是一个基于Hadoop的大规模数据分析平台,Pig为复杂的海量数据并行计算提供了一个简单的操作和编程接口;

    HBase是一个开源的,基于列存储模型的分布式数据库; 

    MapReduce是一种编程模型,用于大规模数据集(大于1TB)的并行运算。 

    ZooKeeper:高效的,可拓展的协调系统,存储和协调关键共享状态;

    YARN:Hadoop 2.X中的资源管理系统,具体讲解见 YARN架构设计详解

   HDFS:是一个分布式文件系统,有着高容错性的特点,适合那些超大数据集的应用程序; HDFS架构采用主从架构(master/slave)。一个典型的HDFS集群包含一个NameNode节点和多个DataNode节点。NameNode节点负责整个HDFS文件系统中的文件的元数据的保管和管理,集群中通常只有一台机器上运行NameNode实例,DataNode节点保存文件中的数据,集群中的机器分别运行一个DataNode实例。在HDFS中,NameNode节点被称为名称节点,DataNode节点被称为数据节点。DataNode节点通过心跳机制与NameNode节点进行定时的通信。 

    NameNode:可以看作是分布式文件系统中的管理者,存储文件系统的meta-data,主要负责管理文件系统的命名空间,集群配置信息,存储块的复制。

    DataNode:是文件存储的基本单元。它存储文件块在本地文件系统中,保存了文件块的meta-data,同时周期性的发送所有存在的文件块的报告给NameNode。

    Client:就是需要获取分布式文件系统文件的应用程序。

    以下来说明HDFS如何进行文件的读写操作: 

    文件写入: 
1. Client向NameNode发起文件写入的请求 
2. NameNode根据文件大小和文件块配置情况,返回给Client它所管理部分DataNode的信息。 

3. Client将文件划分为多个文件块,根据DataNode的地址信息,按顺序写入到每一个DataNode块中。

    文件读取: 
1. Client向NameNode发起文件读取的请求 
2. NameNode返回文件存储的DataNode的信息。 
3. Client读取文件信息。

7、Hadoop的设计结构(2.X)

 

    底层:存储层,文件系统HDFS,NoSQL Hbase

    中间层:资源及数据管理层,YARN以及Sentry等

    上层:MapReduce、Impala、Spark等计算引擎

    顶层:基于MapReduce、Spark等计算引擎的高级封装及工具,如Hive、Pig、Mahout

    tips:mapreduce和zookeeper本身就已经在hbase和hive中使用到了

    下图是一个典型的Hadoop集群的部署结构: 

    Hadoop各组件依赖共存关系: 

8、Hadoop的搭建过程

 

    参考文档: Hadoop环境搭建

9、Hadoop平台对应的几个端口

 

    ip:8088     ResourceManage管理平台

    参照文档  Hadoop各个服务端口列表    Hadoop常用端口号

   

10、Hadoop的适用场景和不适用的场景

    适合的场景(优点): 1.大量的数据(不解释) 2.数据流访问(一次写,多次读,并且现已支持在结尾处进行添加数据) 3.对硬件要求不高(容错机制,过几天会补充相关内容) 

    不适合的场景(缺点) :1.低延迟的数据访问(hadoop分布式,数据访问,首次到集中的地方进行查询,然后到分布式的主机上进行存取,需要一定的反应时间) 2.处理很多小文件(未出现可以系统提高HDFS处理大量小文件能力的方法,业内大多是针对一些特定的应用场景而提出改进方案,可参考淘宝-TFS分布式文件系统) 3.频繁需要修改(即多次写入) 关于HDFS的优缺点会制约hadoop的应用场景,不过每个公司特定的业务会对其做相应的改进,大多数的公司在HDFS文件系统上开发任务很少,云盘之类的除外,主要开发工作还是在MapReduce相关。

相关链接:

Hadoop环境搭建

Hadoop环境搭建(单机)

Hadoop各种概念整理

Hadoop集群搭建和简单应用

Hadoop应用场景总结

Hadoop基本介绍

大数据基础与应用课程总结

大数据教程 - 易百教程

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
该资源内项目源码是个人的课程设计、毕业设计,代码都测试ok,都是运行成功后才上传资源,答辩评审平均分达到96分,放心下载使用! ## 项目备注 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.md文件(如有),仅供学习参考, 切勿用于商业用途。 该资源内项目源码是个人的课程设计,代码都测试ok,都是运行成功后才上传资源,答辩评审平均分达到96分,放心下载使用! ## 项目备注 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.md文件(如有),仅供学习参考, 切勿用于商业用途。
该资源内项目源码是个人的课程设计、毕业设计,代码都测试ok,都是运行成功后才上传资源,答辩评审平均分达到96分,放心下载使用! ## 项目备注 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.md文件(如有),仅供学习参考, 切勿用于商业用途。 该资源内项目源码是个人的课程设计,代码都测试ok,都是运行成功后才上传资源,答辩评审平均分达到96分,放心下载使用! ## 项目备注 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.md文件(如有),仅供学习参考, 切勿用于商业用途。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值