SQL on Hadoop
1)Hive
2)Prestore
3)Impala 基于内存
4)Phoneix(基于HBase)
5)Spark SQL
1.Hadoop是什么?
从Hadoop权威指南可以看出,Hadoop是用于对可扩展的网络数据的存储和分析。
Hadoop是一个开发和运行处理大规模数据的软件平台,是Appach的一个用java语言实现开源软件框架,实现在大量计算机组成的集群中对海量数据进行分布式计算.
Hadoop框架中最核心设计就是:HDFS和MapReduce.HDFS提供了海量数据的存储,MapReduce提供了对数据的计算.

2.Hadoop来源与3大组件
google三大论文 Apache
GFS -> HDFS (分布式源数据存储,每个数据都有副本数据)
MapReduce - > MapReduce (分布式计算)
分而治之,将大数据集分为小数据集,每个数据集,进行逻辑业务处理(map),然后合并统计数据结果(Reduce)
BigTable -> HBase(处理后数据结果存储)

YARN(分布式资源管理框架) 从Hadoop2.X开始。
管理整个集群的资源(内存,cpu),分配调度集群资源。
Common(工具,基础,为HDFS,MapReduce,YARN服务)
3.HDFS 系统架构

HDFS采用master/slave(主从)架构。一个HDFS集群是由一个Namenode和一定数目的Datanodes组成。Namenode是一个中心服务器,负责管理文件系统的名字空间(namespace)以及客户端对文件的访问。集群中的Datanode一般是一个节点一个,负责管理它所在节点上的存储。HDFS暴露了文件系统的名字空间,用户能够以文件的形式在上面存储数据。从内部看,一个文件其实被分成一个或多个数据块,这些块存储在一组Datanode上。Namenode执行文件系统的名字空间操作,比如打开、关闭、重命名文件或目录。它也负责确定数据块到具体Datanode节点的映射。Datanode负责处理文件系统客户端的读写请求。Namenode的统一调度下进行数据块的创建、删除和复制。
参考:
http://hadoop.apache.org/docs/r1.0.4/cn/hdfs_design.html#%E6%96%87%E4%BB%B6%E7%B3%BB%E7%BB%9F%E7%9A%84%E5%90%8D%E5%AD%97%E7%A9%BA%E9%97%B4+%28namespace%29
HDFS被设计成支持大文件,适用HDFS的是那些需要处理大规模的数据集的应用。这些应用都是只写入数据一次,但却读取一次或多次,并且读取速度应能满足流式读取的需要。HDFS支持文件的“一次写入多次读取”语义。一个典型的数据块大小是64MB。因而,HDFS中的文件总是按照64M被切分成不同的块,每个块尽可能地存储于不同的Datanode中。

副本的存放是HDFS可靠性和性能的关键。通过一个机架感知的过程,Namenode可以确定每个Datanode所属的机架id。一个简单但没有优化的策略就是将副本存放在不同的机架上。这样可以有效防止当整个机架失效时数据的丢失,并且允许读数据的时候充分利用多个机架的带宽。这种策略设置可以将副本均匀分布在集群中,有利于当组件失效情况下的负载均衡。但是,因为这种策略的一个写操作需要传输数据块到多个机架,这增加了写的代价。
在大多数情况下,副本系数(个数)是3,HDFS的存放策略是将一个副本存放在本地机架的节点上,一个副本放在同一机架的另一个节点上,最后一个副本放在不同机架的节点上。这种策略减少了机架间的数据传输,这就提高了写操作的效率。机架的错误远远比节点的错误少,所以这个策略不会影响到数据的可靠性和可用性。于此同时,因为数据块只放在两个(不是三个)不同的机架上,所以此策略减少了读取数据时需要的网络传输总带宽。在这种策略下,副本并不是均匀分布在不同的机架上。三分之一的副本在一个节点上,三分之二的副本在一个机架上,其他副本均匀分布在剩下的机架中,这一策略在不损害数据可靠性和读取性能的情况下改进了写的性能。
Secondary NameNode:
NmaeNode放在内存中,主要提高速度。
在本地磁盘:
fsimage:镜像文件
edites:编辑日志
内存中的NmaeNode内容=镜像文件+编辑日志,当内存中的NameNode崩掉时,Secondary NameNode将fsimage和edites进行合并。
4.YARN架构

YARN的引入,大大提高了集群的资源利用率,并降低了集群管理成本。YARN允许多个应用程序运行在一个集群中,并将资源按需分配给它们,这大大提高了资源利用率,其次,YARN允许各类短作业和长服务混合部署在一个集群中,并提供了容错、资源隔离及负载均衡等方面的支持,这大大简化了作业和服务的部署和管理成本。
YARN总体上采用master/slave架构,ResourceManager负责对各个NodeManager上的资源进行统一管理和调度。当用户提交一个应用程序时,需要提供一个用以跟踪和管理这个程序的ApplicationMaster,它负责向ResourceManager申请资源,并要求NodeManger启动可以占用一定资源的资源容器Container。执行应用程序时,ApplicationMaster 监视容器直到完成。当应用程序完成时,ApplicationMaster 从 ResourceManager 注销其容器,执行周期就完成了。由于不同的ApplicationMaster被分布到不同的节点上,并通过一定的隔离机制进行了资源隔离,因此它们之间不会相互影响。
5.离线计算框架MapReduce

举例来说,统计一系列文档中的词频。文档数量规模很大,有1000万个文档,英文单词的总数可能只有3000(常用的)。那么input M=10000000,output N=3000。于是,我们搞了10000个PC做Mapper,100个PC做Reducer。每个Mapper做1000个文档的词频统计,统计之后把凡是和同一个word相关的统计中间结果传给同一个Reducer做汇总。比如某个Reducer负责词表中前30个词的词频统计,遍历10000个PC,这10000个Mapper PC把各自处理后和词表中前30个词汇相关的中间结果都传给这个Reducer做最终的处理分析。
参考:https://www.zhihu.com/question/23345991/answer/53996060
6.MapReduce on YARN

1)用户向YARN中提交应用程序/作业,其中包括ApplicaitonMaster程序、启动ApplicationMaster的命令、用户程序等;
2)ResourceManager为作业分配第一个Container,并与对应的NodeManager通信,要求它在这个Containter中启动该作业的ApplicationMaster;
3)ApplicationMaster首先向ResourceManager注册,这样用户可以直接通过ResourceManager查询作业的运行状态;然后它将为各个任务申请资源并监控任务的运行状态,直到运行结束。即重复步骤4-7;
4)ApplicationMaster采用轮询的方式通过RPC请求向ResourceManager申请和领取资源;
5)一旦ApplicationMaster申请到资源后,便与对应的NodeManager通信,要求它启动任务;
6)NodeManager启动任务;
7)各个任务通过RPC协议向ApplicationMaster汇报自己的状态和进度,以让ApplicaitonMaster随时掌握各个任务的运行状态,从而可以在任务失败时重新启动任务;
在作业运行过程中,用户可随时通过RPC向ApplicationMaster查询作业当前运行状态;
8)作业完成后,ApplicationMaster向ResourceManager注销并关闭自己;
7.Hadoop生态系统

Sqoop(数据同步工具)
Sqoop是SQL-to-Hadoop的缩写,主要用于传统数据库和Hadoop之前传输数据。
数据的导入和导出本质上是Mapreduce程序,充分利用了MR的并行化和容错性。
Flume(日志收集工具)
Cloudera开源的日志收集系统,具有分布式、高可靠、高容错、易于定制和扩展的特点。
它将数据从产生、传输、处理并最终写入目标的路径的过程抽象为数据流,在具体的数据流中,数据源支持在Flume中定制数据发送方,从而支持收集各种不同协议数据。同时,Flume数据流提供对日志数据进行简单处理的能力,如过滤、格式转换等。此外,Flume还具有能够将日志写往各种数据目标(可定制)的能力。总的来说,Flume是一个可扩展、适合复杂环境的海量日志收集系统。
**Hive(基于Hadoop的数据仓库)**Hive网址是:http://hive.apache.org/
由facebook开源,最初用于解决海量结构化的日志数据统计问题。
Hive定义了一种类似SQL的查询语言(HQL),将SQL转化为MapReduce任务在Hadoop上执行。通常用于离线分析。
披着SQL外衣的MapReduce。Hive是为方便用户使用MapReduce而在外面包了一层SQL,由于Hive采用了SQL,它的问题域比MapReduce更窄,因为很多问题,SQL表达不出来,比如一些数据挖掘算法,推荐算法、图像识别算法等,这些仍只能通过编写MapReduce完成。
oozie
在Hadoop中执行的任务有时候需要把多个Map/Reduce作业连接到一起,这样才能够达到目的。[1]在Hadoop生态圈中,有一种相对比较新的组件叫做Oozie[2],它让我们可以把多个Map/Reduce作业组合到一个逻辑工作单元中,从而完成更大型的任务。
oozie是基于hadoop的调度器,以xml的形式写调度流程,可以调度mr,pig,hive,shell,jar等等。
主要的功能有
Workflow: 顺序执行流程节点,支持fork(分支多个节点),join(合并多个节点为一个)
Coordinator,定时触发workflow
Bundle Job,绑定多个coordinator
Hbase(分布式列存数据库)
源自Google的Bigtable论文,发表于2006年11月,HBase是Google Bigtable克隆版
HBase是一个针对结构化数据的可伸缩、高可靠、高性能、分布式和面向列的动态模式数据库。和传统关系数据库不同,HBase采用了BigTable的数据模型:增强的稀疏排序映射表(Key/Value),其中,键由行关键字、列关键字和时间戳构成。HBase提供了对大规模数据的随机、实时读写访问,同时,HBase中保存的数据可以使用MapReduce来处理,它将数据存储和并行计算完美地结合在一起。
数据模型:Schema–>Table–>Column Family–>Column–>RowKey–>TimeStamp–>Value
Pig:
披着脚本语言外衣的MapReduce,为了突破Hive SQL表达能力的限制,采用了一种更具有表达能力的脚本语言PIG。将脚本转换为MapReduce任务在Hadoop上执行。
Spark:
为了提高MapReduce的计算效率,伯克利开发了spark,spark可看做基于内存的MapReduce实现,此外,伯克利还在Spark基础上包了一层SQL,产生了一个新的类似Hive的系统Shark
Zookeeper(分布式协作服务)
源自Google的Chubby论文,发表于2006年11月,Zookeeper是Chubby克隆版
解决分布式环境下的数据管理问题:统一命名,状态同步,集群管理,配置同步等。
cloudera manager
核心是管理服务器,该服务器承载管理控制台的Web服务器和应用程序逻辑,并负责安装软件,配置,启动和停止服务,以及管理上的服务运行群集。
cloudera manager有四大功能:
(1)管理:对集群进行管理,如添加、删除节点等操作。
(2)监控:监控集群的健康情况,对设置的各种指标和系统运行情况进行全面监控。
(3)诊断:对集群出现的问题进行诊断,对出现的问题给出建议解决方案。
(4)集成:对hadoop的多组件进行整合。

Hue
是一个可快速开发和调试Hadoop生态系统各种应用的一个基于浏览器的图形化用户接口。
Hue功能:
1,访问HDFS和文件浏览
2,通过web调试和开发hive以及数据结果展示
3,查询solr和结果展示,报表生成
4,通过web调试和开发impala交互式SQL Query
5,spark调试和开发
6,Pig开发和调试
7,oozie任务的开发,监控,和工作流协调调度
8,Hbase数据查询和修改,数据展示
9,Hive的元数据(metastore)查询
10,MapReduce任务进度查看,日志追踪
11,创建和提交MapReduce,Streaming,Java job任务
12,Sqoop2的开发和调试
13,Zookeeper的浏览和编辑
14,数据库(MySQL,PostGres,SQlite,Oracle)的查询和展示

初识Hadoop(会飞的大象)相关推荐

  1. 细细品味大数据--初识hadoop

    初识hadoop 前言 之前在学校的时候一直就想学习大数据方面的技术,包括hadoop和机器学习啊什么的,但是归根结底就是因为自己太懒了,导致没有坚持多长时间,加上一直为offer做准备,所以当时重心 ...

  2. Hadoop权威指南 _03_第I部分Hadoop基础知识_第1章初识Hadoop.

    第I部分Hadoop基础知识 第1章初识Hadoop. 比较喜欢这句极其形象的比喻. "在古时候,人们用牛来拉重物.当一头牛拉不动根圆木时,人们从来没有考虑过要想方设法培育出一种更强壮的牛. ...

  3. 初识Hadoop两大核心:HDFS和MapReduce

    一.Hadoop是什么? Hadoop是一个能够对大量数据进行分布式处理的软件框架,实现了Google的MapReduce编程模型和框架,能够把应用程序分割成许多的小的工作单元,并把这些单元放到任何集 ...

  4. 初识Hadoop,轻松应对海量数据存储与分析所带来的挑战

    目录 一.前言:什么是Hadoop? 二.Hadoop生态圈 2.1 Hadoop2.x的生态系统 2.2 Hadoop2.x各个组件 2.3 大数据与云计算 三.HDFS(分布式文件系统) 3.1 ...

  5. 《Hadoop基础教程》之初识Hadoop

    Hadoop一直是我想学习的技术,正巧最近项目组要做电子商城,我就开始研究Hadoop,虽然最后鉴定Hadoop不适用我们的项目,但是我会继续研究下去,技多不压身. <Hadoop基础教程> ...

  6. [转载]Apache之Hadoop学习:初识hadoop

    原文转自:http://qa.taobao.com/blogs/qa?bid=10514 这是本人看到过的关于hadoop的比较容易理解的入门文章,在此转载过来,方便广大像我这样的初级码农. 原文如下 ...

  7. Hadoop:The Definitive Guid 总结 Chapter 1~2 初识Hadoop、MapReduce

    1.数据存储与分析 问题:当磁盘的存储量随着时间的推移越来越大的时候,对磁盘上的数据的读取速度却没有多大的增长 从多个磁盘上进行并行读写操作是可行的,但是存在以下几个方面的问题: 1).第一个问题是硬 ...

  8. 初识Hadoop:大数据与Hadoop概述

    1.大数据概述 大数据(big data),IT行业术语,是指无法在一定时间范围内用常规软件工具进行捕捉.管理和处理的数据集合,是需要新处理模式才能具有更强的决策力.洞察发现力和流程优化能力的海量.高 ...

  9. 通过一个对数据的存储和分析的简单实例初识Hadoop

    对于一个刚刚接触Hadoop的菜鸟来说,Hadoop的概念还是挺抽象的,而且这个技术刚刚兴起,除了阿里巴巴,腾讯.中国移动这些技术实力非常强而且需要对数据进行海量存储的公司对Hadoop技术有一些初步 ...

最新文章

  1. Go 学习笔记(74)— Go 标准库之 unsafe
  2. 3月最新!2021中国内地大学ESI排名出炉:333所高校入榜全球前1%
  3. 自然语言处理(nlp)之词袋模型及句子相似度
  4. Apache Flink 简介和编程模型
  5. 算法练习day1——190318(二分查找)
  6. 五大地形等高线特征_高考复习地形特征描述专题
  7. 基于verilog流水灯设计
  8. 限时秒杀┃秒杀90%的玩具,让孩子爱上科学的彩虹实验2来了!
  9. vue-router 报错:Navigation cancelled from“/…“ to “/…“ with a new navigation.
  10. JAVA编译器eclipse的安装教程
  11. 主机安全扫描入门-用Java封装Nmap
  12. 炼数成金CUDA视频教程——第三课1——学习笔记
  13. 第十章:如何制定项目目标?
  14. 程序员用代码求救, 同事“秒懂”
  15. CSS课堂案例8-小米布局
  16. 关于Notion导出PDF的建议
  17. 开源WPF控件库-AdonisUI
  18. 【文件md5值查看方法详解】:如何获取文件的唯一标识?
  19. 快速找出QQ群成员中不在名单内的人
  20. scala-第一章-初始scala

热门文章

  1. Sendcloud邮件发送api拼接问题
  2. [netfilter]-ip_rcv包转发流程
  3. 如何做一名优秀的下属
  4. 470余万条疑似12306用户数据遭贩卖 嫌疑人被刑拘
  5. java 判断汉字_Java 完美判断中文字符的方法
  6. python中读取和查看图片的6种方法
  7. Adobe PDF打不开文件的一个解决办法
  8. npm run serve stage1@0.1.0 serve vue-cli-service serve node:internal/modules/cjs/loader:936
  9. 一个关于意念(脑电波)的想法
  10. ArrayList和LinkedList的异同