对技术,我还是抱有敬畏之心的。

Hadoop概述

Hadoop是一个开源分布式云计算平台,基于Map/Reduce模型的,处理海量数据的离线分析工具。基于Java开发,建立在HDFS上,最早由Google提出,有兴趣的同学可以从Google三驾马车: GFS,mapreduce,Bigtable开始了解起,这里我不详细介绍了,因为网上的资料实在是太多了。

Hadoop项目的结构如下:

Hadoop中最重要的应该就是HDFS和Mapreduce了,从HDFS讲起:

HDFS主要由以下优点: 
        1)、支持超大文件,一般来说,一个Hadoop文件系统可以轻松的存储TB、PB级别的数据。 
        2)、检测和快速应对硬件故障,在大量通用的廉价硬件构建的集群上,特别是硬件故障很常见,一班的HDFS系统由成百上千台存储着数据文件的服务器组成,越多的服务器也就意味着高故障率,因此故障检测和制动恢复就是HDFS的一个设计目标。 
        3)、流式数据访问方式,HDFS要处理的数据规模都比较大,应用程序一次需要访问大量数据,适用于批量处理而非用户交互式处理数据,HDFS以流式方式访问数据,注重的是数据的高吞吐量而非访问速度。 HDFS是建立在最有效的数据处理模式是一次写多次读(write-once,read-many-times)的模式的概念之上的,当写入操作被关闭后,想要往文件里面更新一些内容是不受支持。HDFS存储的数据集作为hadoop的分析对象。在数据集生成后,长时间在此数据集上进行各种分析。每次分析都将设计该数据集的大部分数据甚至全部数据,因此读取整个数据集的时间延迟比读取第一条记录的时间延迟更重要。(流式读取最小化了硬盘的寻址开销,只需要寻址一次,然后就一直读啊读。毕竟每一个文件块都被划分为64M大小了。硬盘的物理构造导致寻址开销的优化跟不上读取开销。所以流式读取更加适合硬盘的本身特性。当然大文件的特点也更适合流式读取。与流数据访问对应的是随机数据访问,它要求定位、查询或修改数据的延迟较小,传统关系型数据库很符合这一点)

4)、简化的一致性模型,大部分的HDFS的数据操纵文件都是一次写入,多次读取,一个文件一旦经过创建、写入和关闭后,一半就不需要修改了,这样简单的一致性模型,有利于提供高吞吐量的数据访问模型。 
对于上述设计目标,我们会发现,这些在一些场景中是优势,但是在默写情况下,会成为其局限性,主要有以下几点: 
        1)、不适合低延迟的数据访问,HDFS是为处理大规模的数据而生的,主要是为达到高的数据吞吐量而设计的,HDFS为了高吞吐量,可以牺牲低延迟,因此我们不能奢望能够快速的读出HDFS里的数据。
        如果想在Hadoop上对数据做低延迟或实时的数据访问,在其上HBase是一个很好的解决方案。但是Hbase是一个NOSQL,即面向列的数据库。
        2)、不能搞笑的存储大量小文件,在HDFS中,有NameNode(Master)节点来管理文件系统的元数据,已相应客户端请求返回文件位置等,因此文件数量大小的限制就由NameNode(具体的来说是由其内存大小)来决定;另外,在一次数据访问中,更多的小文件也意味着更多的磁盘寻址操作,以及更多的文件的打开与关闭的开销,这会大大降低数据的吞吐量,这都有违HDFS的设计目标,也会给NameNode带来更大的工作压力。    
        3)、不支持多用户的数据写入和随机访问与修改文件,在一个HDFS写操作中只能有一个用户对一个文件写操作,并且自能通过追加的方式将数据写到文件末尾,在读一个文件的时候也只能从文件头部顺序读取文件数据。
        目前HDFS还不支持多个用户对同一个文件的并发写操作、随机访问和修改数据。 

HDFS的架构如下:

Hive的数据管理

好了,说完了上面,说说主线了,Hive,这次预研的主要对象就是它了。前图已经说明,hive是Hadoop上的数据仓库基础架构,这么绕口的东西怎么说比较形象呢?说白了就是:

1  它不是存储数据的,真正的数据存储在HDFS上

2  它提供一个类SQL的语言,可以对外提供数据存储、查询和分析的接口,总之就是比起直接查Hadoop上的数据,要舒服得多了

如图:

接下来,从三方面来对Hive的数据管理进行分析:

1  元数据存储

Hive将元数据存储在RDBMS中,所以通常你在网上会查到安装hive需要安装Mysql数据库或者其它RDBMS数据库,就是这么回事,对于元数据不太能理解的朋友可以将它理解成数据的基本信息,但是不包含实际数据。

2 数据存储

Hive没有专门的数据存储格式,也没有为数据建立索引,其所有数据都存在HDFS中,由于Hadoop是批处理系统,任务是高延迟的,在任务提交和处理过程中也会消耗一些时间成本,所以即时Hive处理的数据集非常小,在执行过程中也会出现延迟现象,这样,Hive的性能就不能和传统的Oracle相比了 。另外,Hive不提供数据排序和查询cache功能,不提供在线事物处理,换句话说,不支持与用户直接对接,而是适合离线处理。当然也不提供实时的查询和记录级的更新。Hive适合的是处理不变的大规模数据集(例如网络日志)上的批量任务,最大的价值是可扩展性、可延展性、良好的容错率和低约束的数据输入格式。

hive架构体系如图:

其中Thrift是一个类似与ICE的通讯框架。

介绍完以上,相信大家对于Hadoop和hive所适用的场景已经一目了然了,具体用不用,取决于具体的业务场景吧~

如果有下一篇,将是Hadoop集群搭建和hive的实例介绍。

转载于:https://www.cnblogs.com/HouZhiHouJueBlogs/p/3963848.html

Hadoop实战之一~Hadoop概述相关推荐

  1. hadoop基础----hadoop实战(七)-----hadoop管理工具---使用Cloudera Manager安装Hadoop---Cloudera Manager和CDH5.8离线安装

    hadoop基础----hadoop实战(六)-----hadoop管理工具---Cloudera Manager---CDH介绍 简介 我们在上篇文章中已经了解了CDH,为了后续的学习,我们本章就来 ...

  2. hadoop基础----hadoop实战(二)-----hadoop操作hdfs---hdfs文件系统常用命令

    我们在前面已经介绍过了 hadoop 1.0是由2大部分组成的: hdfs + mapreduce 也对hdfs做了相关介绍. hadoop基础----hadoop理论(三)-----hadoop分布 ...

  3. Linux查看Hadoop集群,Hadoop实战之Hadoop集群功能简单测试验证

    前几天对Hadoop分布式集群的安装过程进行了总结,对hadoop的集群搭建只是学习hadoop中的艰难的一步,后面还需要学习更多的知识,不知道自己能不能坚持下去,不知道后面还会遇到多少困难,不过,我 ...

  4. python写的hadoop实战_Hadoop实战

    Hadoop实战 1 Hadoop简介 1.1 什么是Hadoop 1.1.1 Hadoop概述 1.1.2 Hadoop的历史 1.1.3 Hadoop的功能与作用 1.1.4 Hadoop的优势 ...

  5. Hadoop实战实例

    Hadoop实战实例   Hadoop 是Google MapReduce的一个Java实现.MapReduce是一种简化的分布式编程模式,让程序自动分布到一个由普通机器组成的超大集群上并发执行.就如 ...

  6. 【大数据Hadoop实战篇】

    大数据Hadoop实战篇 第1章 Hadoop概述 1.1 Hadoop是什么 1.2 Hadoop发展历史(了解) 1.3 Hadoop三大发行版本(了解) 1.4 Hadoop优势(4高) 1.5 ...

  7. Hadoop实战(6)_搭建Apache Hadoop的Eclipse开发环境

    系列目录: Hadoop实战(1)_阿里云搭建Hadoop2.x的伪分布式环境 Hadoop实战(2)_虚拟机搭建Hadoop的全分布模式 Hadoop实战(3)_虚拟机搭建CDH的全分布模式 Had ...

  8. 大数据入门第五天——离线计算之hadoop(上)概述与集群安装

    一.概述 根据之前的凡技术必登其官网的原则,我们当然先得找到它的官网:http://hadoop.apache.org/ 1.什么是hadoop 先看官网介绍: The Apache™ Hadoop® ...

  9. 《Hadoop实战手册》一1.6 配置Sqoop以支持SQL Server

    本节书摘来异步社区<Hadoop实战手册>一书中的第1章,第1.6节,作者: [美]Jonathan R. Owens , Jon Lentz , Brian Femiano 译者: 傅杰 ...

  10. 王家林 云计算分布式大数据Hadoop实战高手之路第七讲Hadoop图文训练课程:通过HDFS的心跳来测试replication具体的工作机制和流程...

    这一讲主要深入使用HDFS命令行工具操作Hadoop分布式集群,主要是通过实验的配置hdfs-site.xml文件的心跳来测试replication具体的工作和流程. 通过HDFS的心跳来测试repl ...

最新文章

  1. HttpWebRequest类之基本定义
  2. 粗谈Android中的对齐
  3. xml serialize
  4. powerbook g4装linux,揭秘:服务器操作系统Linux版本发行
  5. 微型计算机实验代码,上师大,微型计算机实验全代码.doc
  6. C 文件操作库函数总结
  7. 云专网和云专线的区别_传统IDC行业与云计算的区别?
  8. 5款WordPress推荐文章幻灯片插件
  9. jQueryPager(JQuery分页插件pagination实现Ajax分页)
  10. Linux常用指令---快捷键
  11. 微软-IT-解决方案-统一沟通-发布会
  12. Omnigraffle激活许可证
  13. 凯迪拉克故障u1510案例_凯迪拉克XTS变速箱维修,无倒挡故障,自动变速箱维修案例...
  14. paip.提升效率----更改数组LIST对象值for与FOREACH
  15. html绑定drag事件,html 5自带drag属性详解
  16. python调用qq互联_Django增加QQ第三方登录
  17. POJ(8463)-----Stupid cat Doge(openjudge)
  18. 百度文字识别OCR接口使用
  19. 大一计算机专业学期计划范文,大一学期的个人学习计划范文(精选5篇)
  20. 从《青云志》看完美世界如何玩转影游联动,打造S级手游

热门文章

  1. 计算机游戏41,Win7玩游戏提示“无法启动此程序,计算机中丢失d3dx9-41.dll”怎么办...
  2. 内容 超链接_Word高效办公:自动创建带超链接的内容目录和图表目录
  3. Seaborn可视化 -- 分类统计图seaborn.catplot
  4. php中sql语句有啥用,php中sql语句
  5. RNN神经网络- 吴恩达Andrew Ng 循环神经网络 NLP Transformers Week4 知识总结
  6. 极客大学架构师训练营 组件设计原则 安全架构 防火墙ModSecurity 第21课 听课总结
  7. 网络基本功(一):细说网络传输(图文详解)
  8. golang 大数据平台_一文读懂数据平台、大数据平台、数据中台
  9. 计算机网络使用的通信线路分为两类,计算机网络技术阶段测试题
  10. linux编程基础系统,Linux编程基础